aboutsummaryrefslogtreecommitdiff
path: root/tests/object.nom
diff options
context:
space:
mode:
Diffstat (limited to 'tests/object.nom')
-rw-r--r--tests/object.nom41
1 files changed, 34 insertions, 7 deletions
diff --git a/tests/object.nom b/tests/object.nom
index b3e8164..4848bf9 100644
--- a/tests/object.nom
+++ b/tests/object.nom
@@ -5,39 +5,66 @@ use "core"
use "lib/object.nom"
object "Dog"
- action [bark]
+ (class Dog).genus <- "Canus"
+ method [initialize %]
+ %.barks or<- 0
+
+ method [bark, woof]
%barks <- ("Bark!" for % in 1 to ((me).barks))
return: %barks joined with " "
- action [get pissed off]
+ method [get pissed off]
((me).barks) +<- 1
-%d <-: new "Dog" {barks:2}
+%d <-: new Dog {barks:2}
as %d
assume: (me) = %d
assume: ((me).barks) = 2
assume: (bark) = "Bark! Bark!"
+ assume: (woof) = "Bark! Bark!"
get pissed off
assume: ((me).barks) = 3
assume: (bark) = "Bark! Bark! Bark!"
+ assume: (me).genus = "Canus"
assume: "\(%d.class)" = "Dog"
+assume: %d.genus = "Canus"
assume: %d.barks = 3
-as: new "Dog" {barks:1}
+as: new Dog
+ assume: ((me).barks) = 0
+ ..or barf "Default initializer failed"
+
+as: new Dog {barks:1}
assume: (bark) = "Bark!"
action [foo]
- as: new "Dog" {barks:23}
+ as: new Dog {barks:23}
return: (me).barks
assume: (foo) = 23
..or barf: "Oops, \(foo) != 23"
-as: new "Dog" {barks:101}
- try: as (new "Dog" {barks:8}) (barf)
+as: new Dog {barks:101}
+ try: as (new Dog {barks:8}) (barf)
..and if it succeeds: barf
assume: (me).barks = 101
..or barf "Error in nested 'as % %' failed to properly reset 'self'"
+
+object "Corgi" extends: class Dog
+ method [sploot]
+ "splooted"
+
+%corg <- (new Corgi)
+assume: %corg.barks = 0
+as: new Corgi {barks:1}
+ assume: (sploot) = "splooted"
+ ..or barf "subclass method failed"
+
+ assume: (bark) = "Bark!"
+ ..or barf "inheritance failed"
+
+ assume: (woof) = "Bark!"
+
say "Object test passed."