cfad47cfa3/t3compiler/tads3/test/data/objloop.t

4b825dc642cb6eb9a060e54bf8d69288fbee4904cfad47cfa334b206c65f22086bcc5d63e6f70944
1
/*
2
 *   object loop tests 
3
 */
4
5
#include "tads.h"
6
#include "t3.h"
7
8
9
class Room: object
10
    sdesc = "<class Room>"
11
;
12
13
startroom: Room
14
    sdesc = "Starting Room"
15
;
16
17
eastroom: Room
18
    sdesc = "East Room"
19
;
20
21
westroom: Room
22
    sdesc = "West Room"
23
;
24
25
class Item: object
26
    sdesc = "<class Item>"
27
    ldesc = "It looks like an ordinary <<sdesc>>. "
28
;
29
30
book: Item
31
    location = startroom
32
    sdesc = "book"
33
    ldesc = "It's a book. "
34
;
35
36
ball: Item
37
    location = eastroom
38
    sdesc = "ball"
39
;
40
41
class FixedItem: object
42
    sdesc = "&lt;class FixedItem>"
43
;
44
45
box: Item, FixedItem
46
    location = westroom
47
    sdesc = "box"
48
;
49
50
preinit()
51
{
52
}
53
54
main(args)
55
{
56
    local obj;
57
    local lst;
58
59
    "Scanning all objects:\n";
60
    for (obj = firstObj() ; obj != nil ; obj = nextObj(obj))
61
        "<<obj.sdesc>>\n";
62
63
    "\bScanning all class objects:\n";
64
    for (obj = firstObj(ObjClasses) ; obj != nil ;
65
         obj = nextObj(obj, ObjClasses))
66
        "<<obj.sdesc>>\n";
67
68
    "\bScanning all Rooms:\n";
69
    for (obj = firstObj(Room) ; obj != nil ; obj = nextObj(obj, Room))
70
        "<<obj.sdesc>>\n";
71
72
    "\bScanning all Items:\n";
73
    for (obj = firstObj(Item) ; obj != nil ; obj = nextObj(obj, Item))
74
        "<<obj.sdesc>>\n";
75
76
    "\bTesting ofKind:\n";
77
    "startroom.ofKind(Room) = <<bool2str(startroom.ofKind(Room))>>\n";
78
    "startroom.ofKind(Item) = <<bool2str(startroom.ofKind(Item))>>\n";
79
    "box.ofKind(Room) = <<bool2str(box.ofKind(Room))>>\n";
80
    "box.ofKind(Item) = <<bool2str(box.ofKind(Item))>>\n";
81
82
    "\bTesting getSuperclassList:\n";
83
    lst = startroom.getSuperclassList();
84
    for (local i = 1, local len = lst.length() ; i <= len ; ++i)
85
        "sc(startroom, <<i>>) = <<lst[i].sdesc>>\n";
86
87
    lst = box.getSuperclassList();
88
    for (local i = 1, local len = lst.length() ; i <= len ; ++i)
89
        "sc(box, <<i>>) = <<lst[i].sdesc>>\n";
90
91
    "\bTesting propDefined:\n";
92
    "startroom.propDefined(sdesc) =
93
        <<bool2str(startroom.propDefined(&sdesc))>>\n";
94
    "startroom.propDefined(location) =
95
        <<bool2str(startroom.propDefined(&location))>>\n";
96
    "book.propDefined(sdesc) =
97
        <<bool2str(book.propDefined(&sdesc))>>\n";
98
    "book.propDefined(location) =
99
        <<bool2str(book.propDefined(&location))>>\n";
100
101
    "\b";
102
    "book.propDefined(&sdesc, PropDefDirectly) =
103
        <<bool2str(book.propDefined(&sdesc, PropDefDirectly))>>\n";
104
    "book.propDefined(&sdesc, PropDefInherits) =
105
        <<bool2str(book.propDefined(&sdesc, PropDefInherits))>>\n";
106
    "book.propDefined(&ldesc, PropDefDirectly) =
107
        <<bool2str(book.propDefined(&ldesc, PropDefDirectly))>>\n";
108
    "book.propDefined(&ldesc, PropDefInherits) =
109
        <<bool2str(book.propDefined(&ldesc, PropDefInherits))>>\n";
110
    "book.propDefined(&sdesc, PropDefGetClass) =
111
        <<obj2str(book.propDefined(&sdesc, PropDefGetClass))>>\n";
112
    "book.propDefined(&ldesc, PropDefGetClass) =
113
        <<obj2str(book.propDefined(&ldesc, PropDefGetClass))>>\n";
114
115
    "\b";
116
    "ball.propDefined(&sdesc, PropDefDirectly) =
117
        <<bool2str(ball.propDefined(&sdesc, PropDefDirectly))>>\n";
118
    "ball.propDefined(&sdesc, PropDefInherits) =
119
        <<bool2str(ball.propDefined(&sdesc, PropDefInherits))>>\n";
120
    "ball.propDefined(&ldesc, PropDefDirectly) =
121
        <<bool2str(ball.propDefined(&ldesc, PropDefDirectly))>>\n";
122
    "ball.propDefined(&ldesc, PropDefInherits) =
123
        <<bool2str(ball.propDefined(&ldesc, PropDefInherits))>>\n";
124
    "ball.propDefined(&sdesc, PropDefGetClass) =
125
        <<obj2str(ball.propDefined(&sdesc, PropDefGetClass))>>\n";
126
    "ball.propDefined(&ldesc, PropDefGetClass) =
127
        <<obj2str(ball.propDefined(&ldesc, PropDefGetClass))>>\n";
128
129
    "\bTesting propType:\n";
130
    "startroom.propType(&sdesc) = <<startroom.propType(&sdesc)>>\n";
131
    "startroom.propType(&location) = <<startroom.propType(&location)>>\n";
132
133
    "\bDone!\n";
134
}
135
136
bool2str(x) { return x ? 'true' : 'nil'; }
137
138
obj2str(obj) { obj = nil ? "nil" : obj.sdesc; }