man_or_boy.t 861 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!perl -T
  2. use utf8;
  3. use 5.006;
  4. use strict;
  5. use warnings;
  6. use Test::More;
  7. plan tests => 3;
  8. use Sidef;
  9. my @codes = (
  10. <<'EOT1',
  11. func a(k, x1, x2, x3, x4, x5) {
  12. func b() { a(--k, b, x1, x2, x3, x4) };
  13. k <= 0 ? (x4() + x5()) : b();
  14. }
  15. a(10, func(){1}, func(){-1}, func(){-1}, func(){1}, func(){0})
  16. EOT1
  17. <<'EOT2',
  18. func a(k, x1, x2, x3, x4, x5) {
  19. k <= 0 ? (x4() + x5())
  20. : func b { a(--k, b, x1, x2, x3, x4) }();
  21. }
  22. a(10, {1}, {-1}, {-1}, {1}, {0})
  23. EOT2
  24. <<'EOT3',
  25. class MOB {
  26. method a(k, x1, x2, x3, x4, x5) {
  27. func b { self.a(--k, b, x1, x2, x3, x4) }
  28. k <= 0 ? (x4() + x5()) : b()
  29. }
  30. }
  31. var obj = MOB();
  32. obj.a(10, {1}, {-1}, {-1}, {1}, {0})
  33. EOT3
  34. );
  35. foreach my $code (@codes) {
  36. my $sidef = Sidef->new(name => 'man_or_boy');
  37. my $result = $sidef->execute_code($code);
  38. is("$result", "-67");
  39. }