oo_inheritance.t 928 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!perl -T
  2. use utf8;
  3. use 5.006;
  4. use strict;
  5. use warnings;
  6. use Test::More;
  7. plan tests => 8;
  8. use Sidef;
  9. my $code = <<'EOT';
  10. class Animal(String name, Number age) {
  11. method speak { "..." }
  12. }
  13. class Dog(String color) < Animal {
  14. method speak { "woof" }
  15. method ageHumanYears { self.age * 7 }
  16. }
  17. class Cat < Animal {
  18. method speak { "meow" }
  19. }
  20. var dog = Dog(name: "Sparky", age: 6, color: "white")
  21. var cat = Cat(name: "Mitten", age: 3)
  22. [dog, cat]
  23. EOT
  24. my $sidef = Sidef->new(name => 'oo_inheritance');
  25. my $objs = $sidef->execute_code($code);
  26. my $dog = $objs->[0];
  27. my $cat = $objs->[1];
  28. is("${\($dog->speak)}", "woof");
  29. is("${\($cat->speak)}", "meow");
  30. is("${\($dog->color)}", "white");
  31. is("${\($dog->ageHumanYears)}", "42");
  32. is("${\($cat->age)}", "3");
  33. is("${\($cat->name)}", "Mitten");
  34. is("${\($dog->name)}", "Sparky");
  35. is("${\($dog->age)}", "6");