diff options
Diffstat (limited to 't/inherit.t')
-rw-r--r-- | t/inherit.t | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/t/inherit.t b/t/inherit.t new file mode 100644 index 0000000..58f7e22 --- /dev/null +++ b/t/inherit.t @@ -0,0 +1,46 @@ +#!/bin/bash + +. t/testlib.sh + +class A; do + + function thing() { + echo "<$self> A/thing ($*)" + } + +done + +class B; do + extends A + + function other() { + echo "<$self> B/other ($*)" + } + +done + +class C; do + extends B + + function thing() { + echo "<$self> C/thing ($*)" + + $self next/method "$@" + } + +done + +A new-into objA +B new-into objB +C new-into objC + +[[ -n "$objA" ]]; should-succeed simple instantiation +[[ -n "$objB" ]]; should-succeed instantiation with inheritance + +is "$($objA thing 1 2 3)" "<*A*> A/thing (1 2 3)" direct call +is "$($objB other a b c)" "<*B*> B/other (a b c)" direct call +is "$($objB thing 4 5 6)" "<*B*> A/thing (4 5 6)" inherited call +is "$($objC thing 7 8 9)" $'<*C*> C/thing (7 8 9)\n<*C*> A/thing (7 8 9)' next/method + + +done-testing |