summaryrefslogtreecommitdiff
path: root/t/inherit.t
diff options
context:
space:
mode:
Diffstat (limited to 't/inherit.t')
-rw-r--r--t/inherit.t46
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