diff options
| author | Bruce Hill <bitbucket@bruce-hill.com> | 2018-06-15 00:17:01 -0700 |
|---|---|---|
| committer | Bruce Hill <bitbucket@bruce-hill.com> | 2018-06-15 00:17:09 -0700 |
| commit | 1a6e28e8358e8ed9a6de4d4112da6b3506e6f6a3 (patch) | |
| tree | e5539b2b20b25d08e6e884e53fbca6d3f0557c44 /tests/object.nom | |
| parent | b12744d831c4158671fc22401590eaac00f7c141 (diff) | |
Improvements to object system.
Diffstat (limited to 'tests/object.nom')
| -rw-r--r-- | tests/object.nom | 41 |
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." |
