diff options
Diffstat (limited to 'unit_tests')
-rw-r--r-- | unit_tests/embedded_tests.cpp | 4 | ||||
-rw-r--r-- | unit_tests/init_and_shutdown.cpp | 533 | ||||
-rw-r--r-- | unit_tests/linda_tests.cpp | 185 | ||||
-rw-r--r-- | unit_tests/scripts/lane/tasking_cancelling.lua | 2 | ||||
-rw-r--r-- | unit_tests/scripts/lane/tasking_comms_criss_cross.lua | 2 | ||||
-rw-r--r-- | unit_tests/scripts/lane/tasking_communications.lua | 2 | ||||
-rw-r--r-- | unit_tests/scripts/lane/tasking_send_receive_code.lua | 2 | ||||
-rw-r--r-- | unit_tests/scripts/linda/multiple_keepers.lua | 6 | ||||
-rw-r--r-- | unit_tests/scripts/linda/send_registered_userdata.lua | 2 |
9 files changed, 437 insertions, 301 deletions
diff --git a/unit_tests/embedded_tests.cpp b/unit_tests/embedded_tests.cpp index 0991a4c..a0a7bb2 100644 --- a/unit_tests/embedded_tests.cpp +++ b/unit_tests/embedded_tests.cpp | |||
@@ -157,7 +157,7 @@ TEST_CASE("lanes.embedding.with default allocator") | |||
157 | // function with an upvalue | 157 | // function with an upvalue |
158 | std::string_view const _script{ | 158 | std::string_view const _script{ |
159 | " local lanes = require 'lanes'.configure{with_timers = false}" | 159 | " local lanes = require 'lanes'.configure{with_timers = false}" |
160 | " local l = lanes.linda'gleh'" | 160 | " local l = lanes.linda{name = 'gleh'}" |
161 | " local upvalue = 'oeauaoeuoeuaoeuaoeujaoefubycfjbycfybcfjybcfjybcfjbcf'" | 161 | " local upvalue = 'oeauaoeuoeuaoeuaoeujaoefubycfjbycfybcfjybcfjybcfjbcf'" |
162 | " local upvalued = function()" | 162 | " local upvalued = function()" |
163 | " return upvalue" | 163 | " return upvalue" |
@@ -183,7 +183,7 @@ TEST_CASE("lanes.embedding.with default allocator") | |||
183 | // try to send io.open into a linda, which fails if io base library is not loaded | 183 | // try to send io.open into a linda, which fails if io base library is not loaded |
184 | std::string_view const _script{ | 184 | std::string_view const _script{ |
185 | " local lanes = require 'lanes'" | 185 | " local lanes = require 'lanes'" |
186 | " local l = lanes.linda'gleh'" | 186 | " local l = lanes.linda{name = 'gleh'}" |
187 | " l:set('yo', io.open)" | 187 | " l:set('yo', io.open)" |
188 | " return 'SUCCESS'" | 188 | " return 'SUCCESS'" |
189 | }; | 189 | }; |
diff --git a/unit_tests/init_and_shutdown.cpp b/unit_tests/init_and_shutdown.cpp index 384af43..bd72157 100644 --- a/unit_tests/init_and_shutdown.cpp +++ b/unit_tests/init_and_shutdown.cpp | |||
@@ -289,6 +289,62 @@ TEST_CASE("lanes.configure.keepers_gc_threshold") | |||
289 | 289 | ||
290 | // ################################################################################################# | 290 | // ################################################################################################# |
291 | 291 | ||
292 | TEST_CASE("lanes.configure.linda_wake_period") | ||
293 | { | ||
294 | LuaState L{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ false } }; | ||
295 | |||
296 | // linda_wake_period should be a number > 0, or 'never' | ||
297 | |||
298 | SECTION("linda_wake_period = <table>") | ||
299 | { | ||
300 | L.requireFailure("require 'lanes'.configure{linda_wake_period = {}}"); | ||
301 | } | ||
302 | |||
303 | // --------------------------------------------------------------------------------------------- | ||
304 | |||
305 | SECTION("linda_wake_period = <string>") | ||
306 | { | ||
307 | L.requireFailure("require 'lanes'.configure{linda_wake_period = 'gluh'}"); | ||
308 | } | ||
309 | |||
310 | // --------------------------------------------------------------------------------------------- | ||
311 | |||
312 | SECTION("linda_wake_period = 'never'") | ||
313 | { | ||
314 | L.requireSuccess("require 'lanes'.configure{linda_wake_period = 'never'}"); | ||
315 | } | ||
316 | |||
317 | // --------------------------------------------------------------------------------------------- | ||
318 | |||
319 | SECTION("linda_wake_period = <negative number>") | ||
320 | { | ||
321 | L.requireFailure("require 'lanes'.configure{linda_wake_period = -0.001}"); | ||
322 | } | ||
323 | |||
324 | // --------------------------------------------------------------------------------------------- | ||
325 | |||
326 | SECTION("linda_wake_period = 0") | ||
327 | { | ||
328 | L.requireFailure("require 'lanes'.configure{linda_wake_period = 0}"); | ||
329 | } | ||
330 | |||
331 | // --------------------------------------------------------------------------------------------- | ||
332 | |||
333 | SECTION("linda_wake_period = 0.0001s") | ||
334 | { | ||
335 | L.requireSuccess("require 'lanes'.configure{linda_wake_period = 0.0001}"); | ||
336 | } | ||
337 | |||
338 | // --------------------------------------------------------------------------------------------- | ||
339 | |||
340 | SECTION("linda_wake_period = 1e30") | ||
341 | { | ||
342 | L.requireSuccess("require 'lanes'.configure{linda_wake_period = 1e30}"); | ||
343 | } | ||
344 | } | ||
345 | |||
346 | // ################################################################################################# | ||
347 | |||
292 | TEST_CASE("lanes.configure.nb_user_keepers") | 348 | TEST_CASE("lanes.configure.nb_user_keepers") |
293 | { | 349 | { |
294 | LuaState L{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ false } }; | 350 | LuaState L{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ false } }; |
@@ -300,35 +356,35 @@ TEST_CASE("lanes.configure.nb_user_keepers") | |||
300 | L.requireFailure("require 'lanes'.configure{nb_user_keepers = {}}"); | 356 | L.requireFailure("require 'lanes'.configure{nb_user_keepers = {}}"); |
301 | } | 357 | } |
302 | 358 | ||
303 | // ----------------------------------------------------------------------------------------- | 359 | // --------------------------------------------------------------------------------------------- |
304 | 360 | ||
305 | SECTION("nb_user_keepers = <string>") | 361 | SECTION("nb_user_keepers = <string>") |
306 | { | 362 | { |
307 | L.requireFailure("require 'lanes'.configure{nb_user_keepers = 'gluh'}"); | 363 | L.requireFailure("require 'lanes'.configure{nb_user_keepers = 'gluh'}"); |
308 | } | 364 | } |
309 | 365 | ||
310 | // ----------------------------------------------------------------------------------------- | 366 | // --------------------------------------------------------------------------------------------- |
311 | 367 | ||
312 | SECTION("nb_user_keepers = -1") | 368 | SECTION("nb_user_keepers = -1") |
313 | { | 369 | { |
314 | L.requireFailure("require 'lanes'.configure{nb_user_keepers = -1}"); | 370 | L.requireFailure("require 'lanes'.configure{nb_user_keepers = -1}"); |
315 | } | 371 | } |
316 | 372 | ||
317 | // ----------------------------------------------------------------------------------------- | 373 | // --------------------------------------------------------------------------------------------- |
318 | 374 | ||
319 | SECTION("nb_user_keepers = 0") | 375 | SECTION("nb_user_keepers = 0") |
320 | { | 376 | { |
321 | L.requireSuccess("require 'lanes'.configure{nb_user_keepers = 0}"); | 377 | L.requireSuccess("require 'lanes'.configure{nb_user_keepers = 0}"); |
322 | } | 378 | } |
323 | 379 | ||
324 | // ----------------------------------------------------------------------------------------- | 380 | // --------------------------------------------------------------------------------------------- |
325 | 381 | ||
326 | SECTION("nb_user_keepers = 1") | 382 | SECTION("nb_user_keepers = 1") |
327 | { | 383 | { |
328 | L.requireSuccess("require 'lanes'.configure{nb_user_keepers = 1}"); | 384 | L.requireSuccess("require 'lanes'.configure{nb_user_keepers = 1}"); |
329 | } | 385 | } |
330 | 386 | ||
331 | // ----------------------------------------------------------------------------------------- | 387 | // --------------------------------------------------------------------------------------------- |
332 | 388 | ||
333 | SECTION("nb_user_keepers = 100") | 389 | SECTION("nb_user_keepers = 100") |
334 | { | 390 | { |
@@ -345,340 +401,355 @@ TEST_CASE("lanes.configure.nb_user_keepers") | |||
345 | 401 | ||
346 | // ################################################################################################# | 402 | // ################################################################################################# |
347 | 403 | ||
348 | TEST_CASE("lanes.configure.the rest") | 404 | TEST_CASE("lanes.configure.on_state_create") |
349 | { | 405 | { |
350 | LuaState L{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ false } }; | 406 | LuaState L{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ false } }; |
351 | 407 | ||
352 | // on_state_create should be a function, either C or Lua, without upvalues | 408 | // on_state_create should be a function, either C or Lua, without upvalues |
353 | 409 | ||
354 | SECTION("on_state_create") | 410 | SECTION("on_state_create = <table>") |
355 | { | 411 | { |
356 | SECTION("on_state_create = <table>") | 412 | L.requireFailure("require 'lanes'.configure{on_state_create = {}}"); |
357 | { | 413 | } |
358 | L.requireFailure("require 'lanes'.configure{on_state_create = {}}"); | ||
359 | } | ||
360 | 414 | ||
361 | // ----------------------------------------------------------------------------------------- | 415 | // --------------------------------------------------------------------------------------------- |
362 | 416 | ||
363 | SECTION("on_state_create = <string>") | 417 | SECTION("on_state_create = <string>") |
364 | { | 418 | { |
365 | L.requireFailure("require 'lanes'.configure{on_state_create = 'gluh'}"); | 419 | L.requireFailure("require 'lanes'.configure{on_state_create = 'gluh'}"); |
366 | } | 420 | } |
367 | 421 | ||
368 | // ----------------------------------------------------------------------------------------- | 422 | // --------------------------------------------------------------------------------------------- |
369 | 423 | ||
370 | SECTION("on_state_create = <number>") | 424 | SECTION("on_state_create = <number>") |
371 | { | 425 | { |
372 | L.requireFailure("require 'lanes'.configure{on_state_create = 1}"); | 426 | L.requireFailure("require 'lanes'.configure{on_state_create = 1}"); |
373 | } | 427 | } |
374 | 428 | ||
375 | // ----------------------------------------------------------------------------------------- | 429 | // --------------------------------------------------------------------------------------------- |
376 | 430 | ||
377 | SECTION("on_state_create = false") | 431 | SECTION("on_state_create = false") |
378 | { | 432 | { |
379 | L.requireFailure("require 'lanes'.configure{on_state_create = false}"); | 433 | L.requireFailure("require 'lanes'.configure{on_state_create = false}"); |
380 | } | 434 | } |
381 | 435 | ||
382 | // ----------------------------------------------------------------------------------------- | 436 | // --------------------------------------------------------------------------------------------- |
383 | 437 | ||
384 | SECTION("on_state_create = true") | 438 | SECTION("on_state_create = true") |
385 | { | 439 | { |
386 | L.requireFailure("require 'lanes'.configure{on_state_create = true}"); | 440 | L.requireFailure("require 'lanes'.configure{on_state_create = true}"); |
387 | } | 441 | } |
388 | 442 | ||
389 | // ----------------------------------------------------------------------------------------- | 443 | // --------------------------------------------------------------------------------------------- |
390 | 444 | ||
391 | SECTION("on_state_create = <Lua function>") | 445 | SECTION("on_state_create = <Lua function>") |
392 | { | 446 | { |
393 | // on_state_create isn't called inside a Keeper state if it's a Lua function (which is good as print() doesn't exist there!) | 447 | // on_state_create isn't called inside a Keeper state if it's a Lua function (which is good as print() doesn't exist there!) |
394 | L.requireSuccess("local print = print; require 'lanes'.configure{on_state_create = function() print 'hello' end}"); | 448 | L.requireSuccess("local print = print; require 'lanes'.configure{on_state_create = function() print 'hello' end}"); |
395 | } | 449 | } |
396 | 450 | ||
397 | // ----------------------------------------------------------------------------------------- | 451 | // --------------------------------------------------------------------------------------------- |
398 | 452 | ||
399 | SECTION("on_state_create = <C function>") | 453 | SECTION("on_state_create = <C function>") |
400 | { | 454 | { |
401 | // funnily enough, in Lua 5.3, print() uses global tostring(), that doesn't exist in a keeper since we didn't open libs -> "attempt to call a nil value" | 455 | // funnily enough, in Lua 5.3, print() uses global tostring(), that doesn't exist in a keeper since we didn't open libs -> "attempt to call a nil value" |
402 | // conclusion, don't use print() as a fake on_state_create() callback! | 456 | // conclusion, don't use print() as a fake on_state_create() callback! |
403 | // assert() should be fine since we pass a non-false argument to on_state_create | 457 | // assert() should be fine since we pass a non-false argument to on_state_create |
404 | L.requireSuccess("require 'lanes'.configure{on_state_create = assert}"); | 458 | L.requireSuccess("require 'lanes'.configure{on_state_create = assert}"); |
405 | } | ||
406 | } | 459 | } |
460 | } | ||
461 | |||
462 | // ################################################################################################# | ||
463 | |||
464 | TEST_CASE("lanes.configure.shutdown_timeout") | ||
465 | { | ||
466 | LuaState L{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ false } }; | ||
407 | 467 | ||
408 | // --------------------------------------------------------------------------------------------- | ||
409 | // shutdown_timeout should be a number in [0,3600] | 468 | // shutdown_timeout should be a number in [0,3600] |
410 | 469 | ||
411 | SECTION("shutdown_timeout") | 470 | SECTION("shutdown_timeout = <table>") |
412 | { | 471 | { |
413 | SECTION("shutdown_timeout = <table>") | 472 | L.requireFailure("require 'lanes'.configure{shutdown_timeout = {}}"); |
414 | { | 473 | } |
415 | L.requireFailure("require 'lanes'.configure{shutdown_timeout = {}}"); | ||
416 | } | ||
417 | 474 | ||
418 | // ----------------------------------------------------------------------------------------- | 475 | // --------------------------------------------------------------------------------------------- |
419 | 476 | ||
420 | SECTION("shutdown_timeout = <string>") | 477 | SECTION("shutdown_timeout = <string>") |
421 | { | 478 | { |
422 | L.requireFailure("require 'lanes'.configure{shutdown_timeout = 'gluh'}"); | 479 | L.requireFailure("require 'lanes'.configure{shutdown_timeout = 'gluh'}"); |
423 | } | 480 | } |
424 | 481 | ||
425 | // ----------------------------------------------------------------------------------------- | 482 | // --------------------------------------------------------------------------------------------- |
426 | 483 | ||
427 | SECTION("shutdown_timeout = <negative number>") | 484 | SECTION("shutdown_timeout = <negative number>") |
428 | { | 485 | { |
429 | L.requireFailure("require 'lanes'.configure{shutdown_timeout = -0.001}"); | 486 | L.requireFailure("require 'lanes'.configure{shutdown_timeout = -0.001}"); |
430 | } | 487 | } |
431 | 488 | ||
432 | // ----------------------------------------------------------------------------------------- | 489 | // --------------------------------------------------------------------------------------------- |
433 | 490 | ||
434 | SECTION("shutdown_timeout = 0") | 491 | SECTION("shutdown_timeout = 0") |
435 | { | 492 | { |
436 | L.requireSuccess("require 'lanes'.configure{shutdown_timeout = 0}"); | 493 | L.requireSuccess("require 'lanes'.configure{shutdown_timeout = 0}"); |
437 | } | 494 | } |
438 | 495 | ||
439 | // ----------------------------------------------------------------------------------------- | 496 | // --------------------------------------------------------------------------------------------- |
440 | 497 | ||
441 | SECTION("shutdown_timeout = 1s") | 498 | SECTION("shutdown_timeout = 1s") |
442 | { | 499 | { |
443 | L.requireSuccess("require 'lanes'.configure{shutdown_timeout = 1}"); | 500 | L.requireSuccess("require 'lanes'.configure{shutdown_timeout = 1}"); |
444 | } | 501 | } |
445 | 502 | ||
446 | // ----------------------------------------------------------------------------------------- | 503 | // --------------------------------------------------------------------------------------------- |
447 | 504 | ||
448 | SECTION("shutdown_timeout = 3600s") | 505 | SECTION("shutdown_timeout = 3600s") |
449 | { | 506 | { |
450 | L.requireSuccess("require 'lanes'.configure{shutdown_timeout = 3600}"); | 507 | L.requireSuccess("require 'lanes'.configure{shutdown_timeout = 3600}"); |
451 | } | 508 | } |
452 | 509 | ||
453 | // ----------------------------------------------------------------------------------------- | 510 | // --------------------------------------------------------------------------------------------- |
454 | 511 | ||
455 | SECTION("shutdown_timeout = <too long>") | 512 | SECTION("shutdown_timeout = <too long>") |
456 | { | 513 | { |
457 | L.requireFailure("require 'lanes'.configure{shutdown_timeout = 3600.001}"); | 514 | L.requireFailure("require 'lanes'.configure{shutdown_timeout = 3600.001}"); |
458 | } | ||
459 | } | 515 | } |
516 | } | ||
517 | |||
518 | // ################################################################################################# | ||
519 | |||
520 | TEST_CASE("lanes.configure.strip_functions") | ||
521 | { | ||
522 | LuaState L{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ false } }; | ||
460 | 523 | ||
461 | // --------------------------------------------------------------------------------------------- | ||
462 | // strip_functions should be a boolean | 524 | // strip_functions should be a boolean |
463 | 525 | ||
464 | SECTION("strip_functions") | 526 | SECTION("strip_functions = <table>") |
465 | { | 527 | { |
466 | SECTION("strip_functions = <table>") | 528 | L.requireFailure("require 'lanes'.configure{strip_functions = {}}"); |
467 | { | 529 | } |
468 | L.requireFailure("require 'lanes'.configure{strip_functions = {}}"); | ||
469 | } | ||
470 | 530 | ||
471 | // ----------------------------------------------------------------------------------------- | 531 | // --------------------------------------------------------------------------------------------- |
472 | 532 | ||
473 | SECTION("strip_functions = <string>") | 533 | SECTION("strip_functions = <string>") |
474 | { | 534 | { |
475 | L.requireFailure("require 'lanes'.configure{strip_functions = 'gluh'}"); | 535 | L.requireFailure("require 'lanes'.configure{strip_functions = 'gluh'}"); |
476 | } | 536 | } |
477 | 537 | ||
478 | // ----------------------------------------------------------------------------------------- | 538 | // --------------------------------------------------------------------------------------------- |
479 | 539 | ||
480 | SECTION("strip_functions = <number>") | 540 | SECTION("strip_functions = <number>") |
481 | { | 541 | { |
482 | L.requireFailure("require 'lanes'.configure{strip_functions = 1}"); | 542 | L.requireFailure("require 'lanes'.configure{strip_functions = 1}"); |
483 | } | 543 | } |
484 | 544 | ||
485 | // ----------------------------------------------------------------------------------------- | 545 | // --------------------------------------------------------------------------------------------- |
486 | 546 | ||
487 | SECTION("strip_functions = <C function>") | 547 | SECTION("strip_functions = <C function>") |
488 | { | 548 | { |
489 | L.requireFailure("require 'lanes'.configure{strip_functions = print}"); | 549 | L.requireFailure("require 'lanes'.configure{strip_functions = print}"); |
490 | } | 550 | } |
491 | 551 | ||
492 | // ----------------------------------------------------------------------------------------- | 552 | // --------------------------------------------------------------------------------------------- |
493 | 553 | ||
494 | SECTION("strip_functions = false") | 554 | SECTION("strip_functions = false") |
495 | { | 555 | { |
496 | L.requireSuccess("require 'lanes'.configure{strip_functions = false}"); | 556 | L.requireSuccess("require 'lanes'.configure{strip_functions = false}"); |
497 | } | 557 | } |
498 | 558 | ||
499 | // ----------------------------------------------------------------------------------------- | 559 | // --------------------------------------------------------------------------------------------- |
500 | 560 | ||
501 | SECTION("strip_functions = true") | 561 | SECTION("strip_functions = true") |
502 | { | 562 | { |
503 | L.requireSuccess("require 'lanes'.configure{strip_functions = true}"); | 563 | L.requireSuccess("require 'lanes'.configure{strip_functions = true}"); |
504 | } | ||
505 | } | 564 | } |
565 | } | ||
566 | |||
567 | // ################################################################################################# | ||
568 | |||
569 | TEST_CASE("lanes.configure.track_lanes") | ||
570 | { | ||
571 | LuaState L{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ false } }; | ||
506 | 572 | ||
507 | // --------------------------------------------------------------------------------------------- | ||
508 | // track_lanes should be a boolean | 573 | // track_lanes should be a boolean |
509 | 574 | ||
510 | SECTION("track_lanes") | 575 | SECTION("track_lanes = <table>") |
511 | { | 576 | { |
512 | SECTION("track_lanes = <table>") | 577 | L.requireFailure("require 'lanes'.configure{track_lanes = {}}"); |
513 | { | 578 | } |
514 | L.requireFailure("require 'lanes'.configure{track_lanes = {}}"); | ||
515 | } | ||
516 | 579 | ||
517 | // ----------------------------------------------------------------------------------------- | 580 | // --------------------------------------------------------------------------------------------- |
518 | 581 | ||
519 | SECTION("track_lanes = <string>") | 582 | SECTION("track_lanes = <string>") |
520 | { | 583 | { |
521 | L.requireFailure("require 'lanes'.configure{track_lanes = 'gluh'}"); | 584 | L.requireFailure("require 'lanes'.configure{track_lanes = 'gluh'}"); |
522 | } | 585 | } |
523 | 586 | ||
524 | // ----------------------------------------------------------------------------------------- | 587 | // --------------------------------------------------------------------------------------------- |
525 | 588 | ||
526 | SECTION("track_lanes = <number>") | 589 | SECTION("track_lanes = <number>") |
527 | { | 590 | { |
528 | L.requireFailure("require 'lanes'.configure{track_lanes = 1}"); | 591 | L.requireFailure("require 'lanes'.configure{track_lanes = 1}"); |
529 | } | 592 | } |
530 | 593 | ||
531 | // ----------------------------------------------------------------------------------------- | 594 | // --------------------------------------------------------------------------------------------- |
532 | 595 | ||
533 | SECTION("track_lanes = <C function>") | 596 | SECTION("track_lanes = <C function>") |
534 | { | 597 | { |
535 | L.requireFailure("require 'lanes'.configure{track_lanes = print}"); | 598 | L.requireFailure("require 'lanes'.configure{track_lanes = print}"); |
536 | } | 599 | } |
537 | 600 | ||
538 | // ----------------------------------------------------------------------------------------- | 601 | // --------------------------------------------------------------------------------------------- |
539 | 602 | ||
540 | SECTION("track_lanes = false") | 603 | SECTION("track_lanes = false") |
541 | { | 604 | { |
542 | L.requireSuccess("require 'lanes'.configure{track_lanes = false}"); | 605 | L.requireSuccess("require 'lanes'.configure{track_lanes = false}"); |
543 | } | 606 | } |
544 | 607 | ||
545 | // ----------------------------------------------------------------------------------------- | 608 | // --------------------------------------------------------------------------------------------- |
546 | 609 | ||
547 | SECTION("track_lanes = true") | 610 | SECTION("track_lanes = true") |
548 | { | 611 | { |
549 | L.requireSuccess("require 'lanes'.configure{track_lanes = true}"); | 612 | L.requireSuccess("require 'lanes'.configure{track_lanes = true}"); |
550 | } | ||
551 | } | 613 | } |
614 | } | ||
615 | |||
616 | // ################################################################################################# | ||
617 | |||
618 | TEST_CASE("lanes.configure.verbose_errors") | ||
619 | { | ||
620 | LuaState L{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ false } }; | ||
552 | 621 | ||
553 | // --------------------------------------------------------------------------------------------- | ||
554 | // verbose_errors should be a boolean | 622 | // verbose_errors should be a boolean |
555 | 623 | ||
556 | SECTION("verbose_errors") | 624 | SECTION("verbose_errors = <table>") |
557 | { | 625 | { |
558 | SECTION("verbose_errors = <table>") | 626 | L.requireFailure("require 'lanes'.configure{verbose_errors = {}}"); |
559 | { | 627 | } |
560 | L.requireFailure("require 'lanes'.configure{verbose_errors = {}}"); | ||
561 | } | ||
562 | 628 | ||
563 | // ----------------------------------------------------------------------------------------- | 629 | // --------------------------------------------------------------------------------------------- |
564 | 630 | ||
565 | SECTION("verbose_errors = <string>") | 631 | SECTION("verbose_errors = <string>") |
566 | { | 632 | { |
567 | L.requireFailure("require 'lanes'.configure{verbose_errors = 'gluh'}"); | 633 | L.requireFailure("require 'lanes'.configure{verbose_errors = 'gluh'}"); |
568 | } | 634 | } |
569 | 635 | ||
570 | // ----------------------------------------------------------------------------------------- | 636 | // --------------------------------------------------------------------------------------------- |
571 | 637 | ||
572 | SECTION("verbose_errors = <number>") | 638 | SECTION("verbose_errors = <number>") |
573 | { | 639 | { |
574 | L.requireFailure("require 'lanes'.configure{verbose_errors = 1}"); | 640 | L.requireFailure("require 'lanes'.configure{verbose_errors = 1}"); |
575 | } | 641 | } |
576 | 642 | ||
577 | // ----------------------------------------------------------------------------------------- | 643 | // --------------------------------------------------------------------------------------------- |
578 | 644 | ||
579 | SECTION("verbose_errors = <C function>") | 645 | SECTION("verbose_errors = <C function>") |
580 | { | 646 | { |
581 | L.requireFailure("require 'lanes'.configure{verbose_errors = print}"); | 647 | L.requireFailure("require 'lanes'.configure{verbose_errors = print}"); |
582 | } | 648 | } |
583 | 649 | ||
584 | // ----------------------------------------------------------------------------------------- | 650 | // --------------------------------------------------------------------------------------------- |
585 | 651 | ||
586 | SECTION("verbose_errors = false") | 652 | SECTION("verbose_errors = false") |
587 | { | 653 | { |
588 | L.requireSuccess("require 'lanes'.configure{verbose_errors = false}"); | 654 | L.requireSuccess("require 'lanes'.configure{verbose_errors = false}"); |
589 | } | 655 | } |
590 | 656 | ||
591 | // ----------------------------------------------------------------------------------------- | 657 | // --------------------------------------------------------------------------------------------- |
592 | 658 | ||
593 | SECTION("verbose_errors = true") | 659 | SECTION("verbose_errors = true") |
594 | { | 660 | { |
595 | L.requireSuccess("require 'lanes'.configure{verbose_errors = true}"); | 661 | L.requireSuccess("require 'lanes'.configure{verbose_errors = true}"); |
596 | } | ||
597 | } | 662 | } |
663 | } | ||
664 | |||
665 | // ################################################################################################# | ||
666 | |||
667 | TEST_CASE("lanes.configure.with_timers") | ||
668 | { | ||
669 | LuaState L{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ false } }; | ||
598 | 670 | ||
599 | // --------------------------------------------------------------------------------------------- | ||
600 | // with_timers should be a boolean | 671 | // with_timers should be a boolean |
601 | 672 | ||
602 | SECTION("with_timers") | 673 | SECTION("with_timers = <table>") |
603 | { | 674 | { |
604 | SECTION("with_timers = <table>") | 675 | L.requireFailure("require 'lanes'.configure{with_timers = {}}"); |
605 | { | 676 | } |
606 | L.requireFailure("require 'lanes'.configure{with_timers = {}}"); | ||
607 | } | ||
608 | 677 | ||
609 | // ----------------------------------------------------------------------------------------- | 678 | // --------------------------------------------------------------------------------------------- |
610 | 679 | ||
611 | SECTION("with_timers = <string>") | 680 | SECTION("with_timers = <string>") |
612 | { | 681 | { |
613 | L.requireFailure("require 'lanes'.configure{with_timers = 'gluh'}"); | 682 | L.requireFailure("require 'lanes'.configure{with_timers = 'gluh'}"); |
614 | } | 683 | } |
615 | 684 | ||
616 | // ----------------------------------------------------------------------------------------- | 685 | // --------------------------------------------------------------------------------------------- |
617 | 686 | ||
618 | SECTION("with_timers = <number>") | 687 | SECTION("with_timers = <number>") |
619 | { | 688 | { |
620 | L.requireFailure("require 'lanes'.configure{with_timers = 1}"); | 689 | L.requireFailure("require 'lanes'.configure{with_timers = 1}"); |
621 | } | 690 | } |
622 | 691 | ||
623 | // ----------------------------------------------------------------------------------------- | 692 | // --------------------------------------------------------------------------------------------- |
624 | 693 | ||
625 | SECTION("with_timers = <C function>") | 694 | SECTION("with_timers = <C function>") |
626 | { | 695 | { |
627 | L.requireFailure("require 'lanes'.configure{with_timers = print}"); | 696 | L.requireFailure("require 'lanes'.configure{with_timers = print}"); |
628 | } | 697 | } |
629 | 698 | ||
630 | // ----------------------------------------------------------------------------------------- | 699 | // --------------------------------------------------------------------------------------------- |
631 | 700 | ||
632 | SECTION("with_timers = false") | 701 | SECTION("with_timers = false") |
633 | { | 702 | { |
634 | L.requireSuccess("require 'lanes'.configure{with_timers = false}"); | 703 | L.requireSuccess("require 'lanes'.configure{with_timers = false}"); |
635 | } | 704 | } |
636 | 705 | ||
637 | // ----------------------------------------------------------------------------------------- | 706 | // --------------------------------------------------------------------------------------------- |
638 | 707 | ||
639 | SECTION("with_timers = true") | 708 | SECTION("with_timers = true") |
640 | { | 709 | { |
641 | L.requireSuccess("require 'lanes'.configure{with_timers = true}"); | 710 | L.requireSuccess("require 'lanes'.configure{with_timers = true}"); |
642 | } | ||
643 | } | 711 | } |
712 | } | ||
713 | |||
714 | // ################################################################################################# | ||
715 | |||
716 | TEST_CASE("lanes.configure.unknown_setting") | ||
717 | { | ||
718 | LuaState L{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ false } }; | ||
644 | 719 | ||
645 | // --------------------------------------------------------------------------------------------- | ||
646 | // any unknown setting should be rejected | 720 | // any unknown setting should be rejected |
647 | 721 | ||
648 | SECTION("unknown_setting") | 722 | SECTION("table setting") |
649 | { | 723 | { |
650 | SECTION("table setting") | 724 | L.requireFailure("require 'lanes'.configure{[{}] = {}}"); |
651 | { | 725 | } |
652 | L.requireFailure("require 'lanes'.configure{[{}] = {}}"); | ||
653 | } | ||
654 | 726 | ||
655 | // ----------------------------------------------------------------------------------------- | 727 | // --------------------------------------------------------------------------------------------- |
656 | 728 | ||
657 | SECTION("boolean setting") | 729 | SECTION("boolean setting") |
658 | { | 730 | { |
659 | L.requireFailure("require 'lanes'.configure{[true] = 'gluh'}"); | 731 | L.requireFailure("require 'lanes'.configure{[true] = 'gluh'}"); |
660 | } | 732 | } |
661 | 733 | ||
662 | // ----------------------------------------------------------------------------------------- | 734 | // --------------------------------------------------------------------------------------------- |
663 | 735 | ||
664 | SECTION("function setting") | 736 | SECTION("function setting") |
665 | { | 737 | { |
666 | L.requireFailure("require 'lanes'.configure{[function() end] = 1}"); | 738 | L.requireFailure("require 'lanes'.configure{[function() end] = 1}"); |
667 | } | 739 | } |
668 | 740 | ||
669 | // ----------------------------------------------------------------------------------------- | 741 | // --------------------------------------------------------------------------------------------- |
670 | 742 | ||
671 | SECTION("number setting") | 743 | SECTION("number setting") |
672 | { | 744 | { |
673 | L.requireFailure("require 'lanes'.configure{[1] = function() end}"); | 745 | L.requireFailure("require 'lanes'.configure{[1] = function() end}"); |
674 | } | 746 | } |
675 | 747 | ||
676 | // ----------------------------------------------------------------------------------------- | 748 | // --------------------------------------------------------------------------------------------- |
677 | 749 | ||
678 | SECTION("unknown string setting") | 750 | SECTION("unknown string setting") |
679 | { | 751 | { |
680 | L.requireFailure("require 'lanes'.configure{['gluh'] = false}"); | 752 | L.requireFailure("require 'lanes'.configure{['gluh'] = false}"); |
681 | } | ||
682 | } | 753 | } |
683 | } | 754 | } |
684 | 755 | ||
diff --git a/unit_tests/linda_tests.cpp b/unit_tests/linda_tests.cpp index f2934eb..9dbaa85 100644 --- a/unit_tests/linda_tests.cpp +++ b/unit_tests/linda_tests.cpp | |||
@@ -3,67 +3,132 @@ | |||
3 | 3 | ||
4 | // ################################################################################################# | 4 | // ################################################################################################# |
5 | 5 | ||
6 | TEST_CASE("linda.single Keeper") | 6 | TEST_CASE("linda.single_keeper.creation/no_argument") |
7 | { | 7 | { |
8 | LuaState S{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ true } }; | 8 | LuaState S{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ true } }; |
9 | S.requireSuccess("lanes = require 'lanes'"); | 9 | S.requireSuccess("lanes = require 'lanes'"); |
10 | 10 | ||
11 | SECTION("Linda creation") | 11 | // no argument is ok |
12 | { | 12 | S.requireSuccess("lanes.linda()"); |
13 | // no parameters is ok | 13 | S.requireNotReturnedString("return tostring(lanes.linda())", R"===(Linda: <not a string>)==="); // unspecified name should not result in <not a string> |
14 | S.requireSuccess("lanes.linda()"); | 14 | } |
15 | S.requireNotReturnedString("return tostring(lanes.linda())", R"===(Linda: <not a string>)==="); // unspecified name should not result in <not a string> | ||
16 | |||
17 | // since we have only one keeper, only group 0 is authorized | ||
18 | S.requireFailure("lanes.linda(-1)"); | ||
19 | S.requireSuccess("lanes.linda(0)"); | ||
20 | S.requireFailure("lanes.linda(1)"); | ||
21 | |||
22 | // any name is ok | ||
23 | S.requireSuccess("lanes.linda('')"); // an empty name results in a string conversion of the form "Linda: <some hex value>" that we can't test (but it works) | ||
24 | S.requireReturnedString("return tostring(lanes.linda('short name'))", R"===(Linda: short name)==="); | ||
25 | S.requireReturnedString("return tostring(lanes.linda('very very very very very very long name'))", R"===(Linda: very very very very very very long name)==="); | ||
26 | S.requireReturnedString("return tostring(lanes.linda('auto'))", R"===(Linda: [string "return tostring(lanes.linda('auto'))"]:1)==="); | ||
27 | |||
28 | if constexpr (LUA_VERSION_NUM == 504) { | ||
29 | // a function is acceptable as a __close handler | ||
30 | S.requireSuccess("local l <close> = lanes.linda(function() end)"); | ||
31 | // a callable table too (a callable full userdata as well, but I have none here) | ||
32 | S.requireSuccess("local l <close> = lanes.linda(setmetatable({}, {__call = function() end}))"); | ||
33 | // if the function raises an error, we should get it | ||
34 | S.requireFailure("local l <close> = lanes.linda(function() error 'gluh' end)"); | ||
35 | } else { | ||
36 | // no __close support before Lua 5.4 | ||
37 | S.requireFailure("lanes.linda(function() end)"); | ||
38 | S.requireFailure("lanes.linda(setmetatable({}, {__call = function() end}))"); | ||
39 | } | ||
40 | 15 | ||
41 | // mixing parameters in any order is ok: 2 out of 3 | 16 | // ################################################################################################# |
42 | S.requireSuccess("lanes.linda(0, 'name')"); | ||
43 | S.requireSuccess("lanes.linda('name', 0)"); | ||
44 | if constexpr (LUA_VERSION_NUM == 504) { | ||
45 | S.requireSuccess("lanes.linda(0, function() end)"); | ||
46 | S.requireSuccess("lanes.linda(function() end, 0)"); | ||
47 | S.requireSuccess("lanes.linda('name', function() end)"); | ||
48 | S.requireSuccess("lanes.linda(function() end, 'name')"); | ||
49 | } | ||
50 | 17 | ||
51 | // mixing parameters in any order is ok: 3 out of 3 | 18 | TEST_CASE("linda.single_keeper.creation/non_table_arguments") |
52 | if constexpr (LUA_VERSION_NUM == 504) { | 19 | { |
53 | S.requireSuccess("lanes.linda(0, 'name', function() end)"); | 20 | LuaState S{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ true } }; |
54 | S.requireSuccess("lanes.linda(0, function() end, 'name')"); | 21 | S.requireSuccess("lanes = require 'lanes'"); |
55 | S.requireSuccess("lanes.linda('name', 0, function() end)"); | 22 | |
56 | S.requireSuccess("lanes.linda('name', function() end, 0)"); | 23 | // any argument that is not a table is not ok |
57 | S.requireSuccess("lanes.linda(function() end, 0, 'name')"); | 24 | S.requireFailure("lanes.linda(0)"); |
58 | S.requireSuccess("lanes.linda(function() end, 'name', 0)"); | 25 | S.requireFailure("lanes.linda('bob')"); |
59 | } | 26 | S.requireFailure("lanes.linda(false)"); |
27 | S.requireFailure("lanes.linda(function() end)"); | ||
28 | S.requireFailure("lanes.linda(lanes.cancel_error)"); | ||
29 | } | ||
30 | |||
31 | // ################################################################################################# | ||
32 | |||
33 | TEST_CASE("linda.single_keeper.creation/close_handler") | ||
34 | { | ||
35 | LuaState S{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ true } }; | ||
36 | S.requireSuccess("lanes = require 'lanes'"); | ||
37 | |||
38 | if constexpr (LUA_VERSION_NUM == 504) { | ||
39 | // a function is acceptable as a __close handler | ||
40 | S.requireSuccess("local l <close> = lanes.linda{close_handler = function() end}"); | ||
41 | // a callable table too (a callable full userdata as well, but I have none here) | ||
42 | S.requireSuccess("local l <close> = lanes.linda{close_handler = setmetatable({}, {__call = function() end})}"); | ||
43 | } else { | ||
44 | // no __close support before Lua 5.4, field is ignored (therefore invalid values are accepted too!) | ||
45 | S.requireSuccess("lanes.linda{close_handler = 'a string'}"); | ||
46 | S.requireSuccess("lanes.linda{close_handler = function() end}"); | ||
47 | S.requireSuccess("lanes.linda{close_handler = setmetatable({}, {__call = function() end})}"); | ||
48 | } | ||
49 | } | ||
50 | |||
51 | // ################################################################################################# | ||
52 | |||
53 | TEST_CASE("linda.single_keeper.creation/table_argument") | ||
54 | { | ||
55 | LuaState S{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ true } }; | ||
56 | S.requireSuccess("lanes = require 'lanes'"); | ||
57 | |||
58 | // one table is fine | ||
59 | S.requireSuccess("lanes.linda{}"); | ||
60 | // anything beyond that is not | ||
61 | S.requireFailure("lanes.linda({},{})"); | ||
62 | S.requireFailure("lanes.linda({},'bob')"); | ||
63 | S.requireFailure("lanes.linda({},42)"); | ||
64 | } | ||
65 | |||
66 | // ################################################################################################# | ||
67 | |||
68 | TEST_CASE("linda.single_keeper.creation/group") | ||
69 | { | ||
70 | LuaState S{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ true } }; | ||
71 | S.requireSuccess("lanes = require 'lanes'"); | ||
72 | |||
73 | // since we have only one keeper, only group 0 is authorized | ||
74 | S.requireFailure("lanes.linda{group = -1}"); | ||
75 | S.requireSuccess("lanes.linda{group = 0}"); | ||
76 | S.requireFailure("lanes.linda{group = 1}"); | ||
77 | } | ||
78 | |||
79 | // ################################################################################################# | ||
80 | |||
81 | TEST_CASE("linda.single_keeper.creation/name") | ||
82 | { | ||
83 | LuaState S{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ true } }; | ||
84 | S.requireSuccess("lanes = require 'lanes'"); | ||
85 | |||
86 | // any name is ok | ||
87 | S.requireSuccess("lanes.linda{name = ''}"); // an empty name results in a string conversion of the form "Linda: <some hex value>" that we can't test (but it works) | ||
88 | S.requireReturnedString("return tostring(lanes.linda{name = 'short name'})", R"===(Linda: short name)==="); | ||
89 | S.requireReturnedString("return tostring(lanes.linda{name = 'very very very very very very long name'})", R"===(Linda: very very very very very very long name)==="); | ||
90 | S.requireReturnedString("return tostring(lanes.linda{name = 'auto'})", R"===(Linda: [string "return tostring(lanes.linda{name = 'auto'})"]:1)==="); | ||
91 | } | ||
92 | |||
93 | // ################################################################################################# | ||
94 | |||
95 | TEST_CASE("linda.single_keeper.creation/wake_period") | ||
96 | { | ||
97 | LuaState S{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ true } }; | ||
98 | S.requireSuccess("lanes = require 'lanes'"); | ||
60 | 99 | ||
61 | // unsupported parameters should fail | 100 | // wake_period should be a number > 0 |
62 | S.requireFailure("lanes.linda(true)"); | 101 | S.requireFailure("lanes.linda{wake_period = false}"); |
63 | S.requireFailure("lanes.linda(false)"); | 102 | S.requireFailure("lanes.linda{wake_period = 'bob'}"); |
64 | // uncallable table or full userdata | 103 | S.requireFailure("lanes.linda{wake_period = {}}"); |
65 | S.requireFailure("lanes.linda({})"); | 104 | S.requireFailure("lanes.linda{wake_period = -1}"); |
66 | S.requireFailure("lanes.linda(lanes.linda())"); | 105 | S.requireFailure("lanes.linda{wake_period = 0}"); |
106 | S.requireSuccess("lanes.linda{wake_period = 0.0001}"); | ||
107 | } | ||
108 | |||
109 | // ################################################################################################# | ||
110 | |||
111 | TEST_CASE("linda.single_keeper.wake_period") | ||
112 | { | ||
113 | FAIL("TODO: check that wake_period works as expected"); | ||
114 | // - use configure default if not provided | ||
115 | // - overrides default when provided | ||
116 | // - blocking operation wakes at the specified period | ||
117 | } | ||
118 | |||
119 | // ################################################################################################# | ||
120 | |||
121 | TEST_CASE("linda.single_keeper.the_rest") | ||
122 | { | ||
123 | LuaState S{ LuaState::WithBaseLibs{ true }, LuaState::WithFixture{ true } }; | ||
124 | S.requireSuccess("lanes = require 'lanes'"); | ||
125 | |||
126 | // --------------------------------------------------------------------------------------------- | ||
127 | |||
128 | SECTION("error in close handler is propagated") | ||
129 | { | ||
130 | // if the function raises an error, we should get it | ||
131 | S.requireFailure("local l <close> = lanes.linda{close_handler = function() error 'gluh' end}"); | ||
67 | } | 132 | } |
68 | 133 | ||
69 | // --------------------------------------------------------------------------------------------- | 134 | // --------------------------------------------------------------------------------------------- |
@@ -311,12 +376,12 @@ TEST_CASE("linda.multi Keeper") | |||
311 | 376 | ||
312 | S.requireSuccess("lanes = require 'lanes'.configure{nb_user_keepers = 3}"); | 377 | S.requireSuccess("lanes = require 'lanes'.configure{nb_user_keepers = 3}"); |
313 | 378 | ||
314 | S.requireFailure("lanes.linda(-1)"); | 379 | S.requireFailure("lanes.linda{group = -1}"); |
315 | S.requireSuccess("lanes.linda(0)"); | 380 | S.requireSuccess("lanes.linda{group = 0}"); |
316 | S.requireSuccess("lanes.linda(1)"); | 381 | S.requireSuccess("lanes.linda{group = 1}"); |
317 | S.requireSuccess("lanes.linda(2)"); | 382 | S.requireSuccess("lanes.linda{group = 2}"); |
318 | S.requireSuccess("lanes.linda(3)"); | 383 | S.requireSuccess("lanes.linda{group = 3}"); |
319 | S.requireFailure("lanes.linda(4)"); | 384 | S.requireFailure("lanes.linda{group = 4}"); |
320 | } | 385 | } |
321 | 386 | ||
322 | // ################################################################################################# | 387 | // ################################################################################################# |
diff --git a/unit_tests/scripts/lane/tasking_cancelling.lua b/unit_tests/scripts/lane/tasking_cancelling.lua index ea4516e..873140e 100644 --- a/unit_tests/scripts/lane/tasking_cancelling.lua +++ b/unit_tests/scripts/lane/tasking_cancelling.lua | |||
@@ -16,7 +16,7 @@ local lanes_linda = assert(lanes.linda) | |||
16 | -- ################################################################################################## | 16 | -- ################################################################################################## |
17 | 17 | ||
18 | -- cancellation of lanes waiting on a linda | 18 | -- cancellation of lanes waiting on a linda |
19 | local limited = lanes_linda("limited") | 19 | local limited = lanes_linda{name = "limited"} |
20 | assert.fails(function() limited:limit("key", -1) end) | 20 | assert.fails(function() limited:limit("key", -1) end) |
21 | assert.failsnot(function() limited:limit("key", 1) end) | 21 | assert.failsnot(function() limited:limit("key", 1) end) |
22 | -- [[################################################ | 22 | -- [[################################################ |
diff --git a/unit_tests/scripts/lane/tasking_comms_criss_cross.lua b/unit_tests/scripts/lane/tasking_comms_criss_cross.lua index 497e81d..610da8b 100644 --- a/unit_tests/scripts/lane/tasking_comms_criss_cross.lua +++ b/unit_tests/scripts/lane/tasking_comms_criss_cross.lua | |||
@@ -42,7 +42,7 @@ local tc = lanes_gen("io", { name = 'auto', gc_cb = gc_cb }, | |||
42 | end | 42 | end |
43 | ) | 43 | ) |
44 | 44 | ||
45 | local linda= lanes_linda("criss cross") | 45 | local linda= lanes_linda{name = "criss cross"} |
46 | 46 | ||
47 | local a,b= tc(linda, "A","B"), tc(linda, "B","A") -- launching two lanes, twisted comms | 47 | local a,b= tc(linda, "A","B"), tc(linda, "B","A") -- launching two lanes, twisted comms |
48 | 48 | ||
diff --git a/unit_tests/scripts/lane/tasking_communications.lua b/unit_tests/scripts/lane/tasking_communications.lua index 631d105..01842b4 100644 --- a/unit_tests/scripts/lane/tasking_communications.lua +++ b/unit_tests/scripts/lane/tasking_communications.lua | |||
@@ -72,7 +72,7 @@ local chunk= function(linda) | |||
72 | WR("chunk ", "Lane ends!\n") | 72 | WR("chunk ", "Lane ends!\n") |
73 | end | 73 | end |
74 | 74 | ||
75 | local linda = lanes_linda("communications") | 75 | local linda = lanes_linda{name = "communications"} |
76 | assert(type(linda) == "userdata" and tostring(linda) == "Linda: communications") | 76 | assert(type(linda) == "userdata" and tostring(linda) == "Linda: communications") |
77 | -- | 77 | -- |
78 | -- ["->"] master -> slave | 78 | -- ["->"] master -> slave |
diff --git a/unit_tests/scripts/lane/tasking_send_receive_code.lua b/unit_tests/scripts/lane/tasking_send_receive_code.lua index e329a88..cb3663f 100644 --- a/unit_tests/scripts/lane/tasking_send_receive_code.lua +++ b/unit_tests/scripts/lane/tasking_send_receive_code.lua | |||
@@ -65,7 +65,7 @@ local function chunk2(linda) | |||
65 | linda:send("up", function() return ":)" end, "ok2") | 65 | linda:send("up", function() return ":)" end, "ok2") |
66 | end | 66 | end |
67 | 67 | ||
68 | local linda = lanes_linda("auto") | 68 | local linda = lanes_linda{name = "auto"} |
69 | local t2= lanes_gen("debug,package,string,io", { name = 'auto', gc_cb = gc_cb }, chunk2)(linda) -- prepare & launch | 69 | local t2= lanes_gen("debug,package,string,io", { name = 'auto', gc_cb = gc_cb }, chunk2)(linda) -- prepare & launch |
70 | linda:send("down", function(linda) linda:send("up", "ready!") end, | 70 | linda:send("down", function(linda) linda:send("up", "ready!") end, |
71 | "ok") | 71 | "ok") |
diff --git a/unit_tests/scripts/linda/multiple_keepers.lua b/unit_tests/scripts/linda/multiple_keepers.lua index 8733087..267d874 100644 --- a/unit_tests/scripts/linda/multiple_keepers.lua +++ b/unit_tests/scripts/linda/multiple_keepers.lua | |||
@@ -2,9 +2,9 @@ | |||
2 | local require_lanes_result_1, require_lanes_result_2 = require "lanes".configure{nb_user_keepers = 3, keepers_gc_threshold = 500} | 2 | local require_lanes_result_1, require_lanes_result_2 = require "lanes".configure{nb_user_keepers = 3, keepers_gc_threshold = 500} |
3 | local lanes = require_lanes_result_1 | 3 | local lanes = require_lanes_result_1 |
4 | 4 | ||
5 | local a = lanes.linda("A", 1) | 5 | local a = lanes.linda{name = "A", group = 1} |
6 | local b = lanes.linda("B", 2) | 6 | local b = lanes.linda{name = "B", group = 2} |
7 | local c = lanes.linda("C", 3) | 7 | local c = lanes.linda{name = "C", group = 3} |
8 | 8 | ||
9 | -- store each linda in the other 2 | 9 | -- store each linda in the other 2 |
10 | do | 10 | do |
diff --git a/unit_tests/scripts/linda/send_registered_userdata.lua b/unit_tests/scripts/linda/send_registered_userdata.lua index 2c0195a..90c05c9 100644 --- a/unit_tests/scripts/linda/send_registered_userdata.lua +++ b/unit_tests/scripts/linda/send_registered_userdata.lua | |||
@@ -1,5 +1,5 @@ | |||
1 | local lanes = require 'lanes'.configure{with_timers = false} | 1 | local lanes = require 'lanes'.configure{with_timers = false} |
2 | local l = lanes.linda'gleh' | 2 | local l = lanes.linda{name = 'gleh'} |
3 | l:set('yo', io.stdin) | 3 | l:set('yo', io.stdin) |
4 | local n, stdin_out = l:get('yo') | 4 | local n, stdin_out = l:get('yo') |
5 | assert(n == 1 and stdin_out == io.stdin, tostring(stdin_out) .. " ~= " .. tostring(io.stdin)) | 5 | assert(n == 1 and stdin_out == io.stdin, tostring(stdin_out) .. " ~= " .. tostring(io.stdin)) |