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

4b825dc642cb6eb9a060e54bf8d69288fbee4904cfad47cfa334b206c65f22086bcc5d63e6f70944
1
#include "tads.h"
2
#include "t3.h"
3
4
preinit() { }
5
6
main(argc)
7
{
8
    local x;
9
    local y;
10
    local lst, str;
11
12
    x = [1, 2, 3].length();
13
14
    lst = [4, 5, 6];
15
    x = lst.length();
16
17
    lst += [7, 8];
18
    x = lst.length();
19
20
    "[1, 2, 3, 4, 5, 6], keep>3 =
21
        <<sayList([1,2,3,4,5,6].subset({x: x > 3}))>>\n";
22
23
    lst = [6, 5, 4, 3, 2, 1];
24
    "lst = <<sayList(lst)>>, keep>3 =
25
        <<sayList(lst.subset({x: x > 3}))>>\n";
26
27
    lst += [9, 0, 10, -1, 11, -2];
28
    "lst = <<sayList(lst)>>, keep>3 =
29
        <<sayList(lst.subset({x: x > 3}))>>\n";
30
31
    "lst = <<sayList(lst)>>, *100 =
32
        <<sayList(lst.mapAll({x: x*100}))>>\n";
33
34
    lst += lst;
35
    "\bConcatenating list to itself: <<sayList(lst)>>\n";
36
    "\b";
37
38
    "forEach: "; lst.forEach(new function(x) { "<<x>>; "; }); "\n";
39
    "\b";
40
41
    "indexOf 6: <<lst.indexOf(6)>>\n";
42
    "indexOf -2: <<lst.indexOf(-2)>>\n";
43
    "indexOf 9: <<lst.indexOf(9)>>\n";
44
    "indexOf 123: <<lst.indexOf(123)>>\n";
45
    "\b";
46
47
    "indexWhich x > 0:  <<lst.indexWhich({x: x > 0})>>\n";
48
    "indexWhich x > 7:  <<lst.indexWhich({x: x > 7})>>\n";
49
    "indexWhich x &lt; 0:  <<lst.indexWhich({x: x < 0})>>\n";
50
    "indexWhich x > 1000:  <<lst.indexWhich({x: x > 1000})>>\n";
51
    "\b";
52
53
    "valWhich x > 0: <<lst.valWhich({x: x > 0})>>\n";
54
    "valWhich x > 7: <<lst.valWhich({x: x > 7})>>\n";
55
    "valWhich x &lt; 0: <<lst.valWhich({x: x < 0})>>\n";
56
    "valWhich x &lt; 4: <<lst.valWhich({x: x < 4})>>\n";
57
    "valWhich x > 2000: <<lst.valWhich({x: x > 2000})>>\n";
58
    "\b";
59
60
    "lastIndexOf 6: <<lst.lastIndexOf(6)>>\n";
61
    "lastIndexOf -2: <<lst.lastIndexOf(-2)>>\n";
62
    "lastIndexOf 9: <<lst.lastIndexOf(9)>>\n";
63
    "lastIndexOf 123: <<lst.lastIndexOf(123)>>\n";
64
    "\b";
65
66
    "lastIndexWhich x > 0: <<lst.lastIndexWhich({x: x > 0})>>\n";
67
    "lastIndexWhich x &lt; 0: <<lst.lastIndexWhich({x: x < 0})>>\n";
68
    "lastIndexWhich x > 10: <<lst.lastIndexWhich({x: x > 10})>>\n";
69
    "lastIndexWhich x > 2000: <<lst.lastIndexWhich({x: x > 2000})>>\n";
70
    "\b";
71
72
    "lastValWhich x > 0: <<lst.lastValWhich({x: x > 0})>>\n";
73
    "lastValWhich x &lt; 0: <<lst.lastValWhich({x: x < 0})>>\n";
74
    "lastValWhich x > 500: <<lst.lastValWhich({x: x > 500})>>\n";
75
    "lastValWhich x > 2000: <<lst.lastValWhich({x: x > 2000})>>\n";
76
    "\b";
77
78
    "countOf 6: <<lst.countOf(6)>>\n";
79
    "countOf 5: <<lst.countOf(5)>>\n";
80
    "countOf -2: <<lst.countOf(-2)>>\n";
81
    "countOf 123: <<lst.countOf(123)>>\n";
82
    "\b";
83
84
    "countWhich x > 0: <<lst.countWhich({x: x > 0})>>\n";
85
    "countWhich x > 2000: <<lst.countWhich({x: x > 2000})>>\n";
86
    "countWhich x &lt; 2000: <<lst.countWhich({x: x < 2000})>>\n";
87
    "\b";
88
89
    "getUnique: <<sayList(lst.getUnique())>>\n";
90
    "getUnique [5, 1, 5, 2, 5, 5, 2, 7]:
91
     <<sayList([5, 1, 5, 2, 5, 5, 2, 7].getUnique())>>\n";
92
    "\b";
93
94
    lst = [1, 2, 3, 4, 5];
95
    "appendUnique: <<sayList(lst.appendUnique([2, 4, 6, 8, 10, 12]))>>\n";
96
97
    lst += 6;
98
    "appendUnique: <<sayList(lst.appendUnique([3, 4, 5, 6, 7]))>>\n";
99
100
    y = [1, 3, 5];
101
    y += [3, 5];
102
    "appendUnique: <<sayList(lst.appendUnique(y))>>\n";
103
104
    y += [9, 11];
105
    "appendUnique: <<sayList(lst.appendUnique(y))>>\n";
106
107
    "\b";
108
    "append 77: <<sayList(lst.append(77))>>\n";
109
    "append [11,22,33]: <<sayList(lst.append([11,22,33]))>>\n";
110
111
    "\b";
112
    y = [11, 20, 1, 17, 5, 3];
113
    y += [9, 8, 7, 6];
114
    "sort: <<sayList(y.sort())>>\n";
115
    "sort descending: <<sayList(y.sort(true))>>\n";
116
    "sort in string ordering:
117
    <<sayList(y.sort(nil,
118
    {a, b: toString(a) > toString(b)
119
    ? 1 : toString(a) < toString(b) ? -1 : 0}))>>\n";
120
121
    "\b";
122
123
    y = [1, 2, 3, 4, 5];
124
    y = y.prepend(77);
125
    y = y.prepend(88);
126
    y = y.prepend(99);
127
    "prepend: <<sayList(y)>>\n";
128
129
    "\b";
130
131
    y = [10, 20, 30, 40, 50];
132
    y = y.insertAt(1, 1, 2, 3);
133
    "insert1: <<sayList(y)>>\n";
134
135
    y = y.insertAt(9, 44, 55, 66);
136
    "insert2: <<sayList(y)>>\n";
137
    
138
    y = y.insertAt(5, 777, 888, 999);
139
    "insert3: <<sayList(y)>>\n";
140
141
    "\b";
142
143
    y = y.removeElementAt(6);
144
    "removeAt(6): <<sayList(y)>>\n";
145
146
    y = y.removeElementAt(1);
147
    "removeAt(1): <<sayList(y)>>\n";
148
149
    y = y.removeElementAt(y.length());
150
    "removeAt(length): <<sayList(y)>>\n";
151
152
    "\b";
153
154
    y = y.removeRange(3, 7);
155
    "removeRange(3, 7): <<sayList(y)>>\n";
156
157
    y = y.removeRange(1, 2);
158
    "removeRange(1, 2): <<sayList(y)>>\n";
159
160
    y = y.removeRange(y.length() - 1, y.length());
161
    "removeRange(length-1, length): <<sayList(y)>>\n";
162
163
    "\b";
164
165
    "'goodbye', len = <<'goodbye'.length()>>\n";
166
167
    str = 'hello';
168
    "str = '<<str>>', len = <<str.length()>>\n";
169
170
    str += '!!!';
171
    "str = '<<str>>', len = <<str.length()>>\n";
172
173
    "'goodbye', substr(5) = <<'goodbye'.substr(5)>>\n";
174
    "'goodbye', substr(4, 2) = <<'goodbye'.substr(4, 2)>>\n";
175
176
    str = 'hello there';
177
    "str = '<<str>>', substr(5) = <<str.substr(5)>>\n";
178
    "str = '<<str>>', substr(4, 2) = <<str.substr(4, 2)>>\n";
179
180
    str += '!!!';
181
    "str = '<<str>>', substr(5) = <<str.substr(5)>>\n";
182
    "str = '<<str>>', substr(4, 2) = <<str.substr(4, 2)>>\n";
183
}
184
185
sayList(lst)
186
{
187
    if (lst == nil)
188
        "nil";
189
    else
190
    {
191
        "[";
192
        for (local i = 1, local cnt = lst.length() ; i <= cnt ; ++i)
193
        {
194
            if (i != 1)
195
                ", ";
196
            if (dataType(lst[i]) == TypeList)
197
                sayList(lst[i]);
198
            else
199
                tadsSay(lst[i]);
200
        }
201
        "]";
202
    }
203
}