gmqcc/tests/ternary.qc

46 lines
1 KiB
C++

void print(...) = #1;
string ftos (float) = #2;
void test(float cond, float v1, float v2, float a) {
print(ftos(cond ? v1 : v2), " ");
print( (cond ? v1 : v2) ? ( (a == 1) ? "a=1"
: (a == 2) ? "a=2"
: "a=other"
)
: "not met",
"\n");
}
void select_a(float x) {
print("select_a: ", ftos(x), "\n");
}
void select_b(float x) {
print("select_b: ", ftos(x), "\n");
}
void main() {
float a, b;
test(0, -99, 1, 1);
test(0, -99, 1, 2);
test(0, -99, 1, 3);
test(0, -99, 0, 1);
test(0, -99, 0, 2);
test(0, -99, 0, 3);
test(1, 1, -99, 1);
test(1, 1, -99, 2);
test(1, 1, -99, 3);
test(1, 0, -99, 1);
test(1, 0, -99, 2);
test(1, 0, -99, 3);
b = 5;
a = b ? 5 : 6;
print(ftos(a), "\n");
b ? a = 9 : a = 10;
print(ftos(a), "\n");
!b ? a = 9 : a = 10;
print(ftos(a), "\n");
((1) ? select_a : select_b) (1);
((0) ? select_a : select_b) (0);
}