summaryrefslogtreecommitdiff
path: root/test/iota.go
blob: 393edac804eca0a0d3a38949743cd9e38f70149b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
// $G $F.go && $L $F.$A && ./$A.out

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package main

func assert(cond bool, msg string) {
	if !cond {
		print("assertion fail: ", msg, "\n");
		panic(1);
	}
}

const (
	x int = iota;
	y = iota;
	z = 1 << iota;
	f float = 2 * iota;
	g float = 4.5 * float(iota);
)

const (
	X = 0;
	Y;
	Z;
)

const (
	A = 1 << iota;
	B;
	C;
	D;
	E = iota * iota;
	F;
	G;
)

const (
	a = 1;
	b = iota << a;
	c = iota << b;
	d;
)

const (
	i = (a << iota) + (b * iota);
	j;
	k;
	l;
)

const (
	m = iota == 0;
	n;
)

const (
	p = float(iota);
	q;
	r;
)

const (
	s = string(iota + 'a');
	t;
)

const (
	abit, amask = 1 << iota, 1 << iota - 1;
	bbit, bmask = 1 << iota, 1 << iota - 1;
	cbit, cmask = 1 << iota, 1 << iota - 1;
)

func main() {
	assert(x == 0, "x");
	assert(y == 1, "y");
	assert(z == 4, "z");
	assert(f == 6.0, "f");
	assert(g == 18.0, "g");

	assert(X == 0, "X");
	assert(Y == 0, "Y");
	assert(Z == 0, "Z");

	assert(A == 1, "A");
	assert(B == 2, "B");
	assert(C == 4, "C");
	assert(D == 8, "D");
	assert(E == 16, "E");
	assert(F == 25, "F");

	assert(a == 1, "a");
	assert(b == 2, "b");
	assert(c == 8, "c");
	assert(d == 12, "d");

	assert(i == 1, "i");
	assert(j == 4, "j");
	assert(k == 8, "k");
	assert(l == 14, "l");

	assert(m, "m");
	assert(!n, "n");

	assert(p == 0.0, "p");
	assert(q == 1.0, "q");
	assert(r == 2.0, "r");

	assert(s == "a", "s");
	assert(t == "b", "t");

	assert(abit == 1, "abit");
	assert(amask == 0, "amask");
	assert(bbit == 2, "bbit");
	assert(bmask == 1, "bmask");
	assert(cbit == 4, "cbit");
	assert(cmask == 3, "cmask");
}