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

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