]> git.xonotic.org Git - xonotic/gmqcc.git/blob - tests/operators.qc
Undo fix and actually use a macro in the accumulation test .. just incase.
[xonotic/gmqcc.git] / tests / operators.qc
1 .float mem;
2
3 void main() {
4     float a;
5
6     // regular binary+store
7     a = 5;
8     print(ftos(a += 1), " = ");
9     print(ftos(a), "\n");
10
11     entity e = spawn();
12     e.mem = 10;
13     print(ftos(e.mem += 1), " = ");
14     print(ftos(e.mem), "\n");
15
16     // prefix
17     print(ftos(++a), " = ");
18     print(ftos(a), "\n");
19     print(ftos(--a), " = ");
20     print(ftos(a), "\n");
21     print(ftos(++e.mem), " = ");
22     print(ftos(e.mem), "\n");
23
24     // suffix
25     print(ftos(a++), " = ");
26     print(ftos(a-1), "\n");
27     // the CLANG way:
28     a = 3;
29     print(ftos((a++ + a) + a), " = 11\n");
30
31     // check if minus translates
32     print(ftos(a--), "\n");
33     print(ftos(--a), "\n");
34
35     // postfix on members
36     print(ftos(e.mem--), " = ");
37     print(ftos(e.mem+1), "\n");
38
39     // compounds in general
40     a = 3;
41     print(ftos(a *= 2), " = 6\n");
42     print(ftos(a /= 2), " = 3\n");
43
44     // compounds on vectors
45     vector v;
46     v = '3 4 5';
47     print(vtos(v *= 2), " = '6 8 10'\n");
48     print(vtos(v /= 2), " = '3 4 5'\n");
49
50     // bit compounds
51     a = 1;
52     print(ftos(a |= 2), " = 3\n");
53     print(ftos(a &= 6), " = 2\n");
54     a = 7;
55
56     print(ftos(a &~= 3), " = 4\n");
57 }