Merge branch 'master' of git://factorcode.org/git/factor
[factor/jcg.git] / basis / cocoa / cocoa-tests.factor
blob59ea91c3cfb87bbcca8ec0015ac07f09e35cee85
1 IN: cocoa.tests
2 USING: cocoa cocoa.messages cocoa.subclassing cocoa.types
3 compiler kernel namespaces cocoa.classes tools.test memory
4 compiler.units math ;
6 CLASS: {
7     { +superclass+ "NSObject" }
8     { +name+ "Foo" }
9 } {
10     "foo:"
11     "void"
12     { "id" "SEL" "NSRect" }
13     [ gc "x" set 2drop ]
14 } ;
16 : test-foo
17     Foo -> alloc -> init
18     dup 1.0 2.0 101.0 102.0 <NSRect> -> foo:
19     -> release ;
21 test-foo
23 [ 1.0 ] [ "x" get NSRect-x ] unit-test
24 [ 2.0 ] [ "x" get NSRect-y ] unit-test
25 [ 101.0 ] [ "x" get NSRect-w ] unit-test
26 [ 102.0 ] [ "x" get NSRect-h ] unit-test
28 CLASS: {
29     { +superclass+ "NSObject" }
30     { +name+ "Bar" }
31 } {
32     "bar"
33     "NSRect"
34     { "id" "SEL" }
35     [ 2drop test-foo "x" get ]
36 } ;
38 Bar [
39     -> alloc -> init
40     dup -> bar "x" set
41     -> release
42 ] compile-call
44 [ 1.0 ] [ "x" get NSRect-x ] unit-test
45 [ 2.0 ] [ "x" get NSRect-y ] unit-test
46 [ 101.0 ] [ "x" get NSRect-w ] unit-test
47 [ 102.0 ] [ "x" get NSRect-h ] unit-test
49 ! Make sure that we can add methods
50 CLASS: {
51     { +superclass+ "NSObject" }
52     { +name+ "Bar" }
53 } {
54     "bar"
55     "NSRect"
56     { "id" "SEL" }
57     [ 2drop test-foo "x" get ]
58 } {
59     "babb"
60     "int"
61     { "id" "SEL" "int" }
62     [ 2nip sq ]
63 } ;
65 [ 144 ] [
66     Bar [
67         -> alloc -> init
68         dup 12 -> babb
69         swap -> release
70     ] compile-call
71 ] unit-test