v2 / vlib / v / tests / enums / enum_bitfield_64bit_test.v
69 lines · 65 sloc · 2.44 KB · 6488041a749df9762348d019c4223908c476f2e2
Raw
1// vfmt off
2@[flag]
3enum PawnsBoard as u64 {
4 a8 b8 c8 d8 e8 f8 g8 h8
5 a7 b7 c7 d7 e7 f7 g7 h7
6 a6 b6 c6 d6 e6 f6 g6 h6
7 a5 b5 c5 d5 e5 f5 g5 h5
8 a4 b4 c4 d4 e4 f4 g4 h4
9 a3 b3 c3 d3 e3 f3 g3 h3
10 a2 b2 c2 d2 e2 f2 g2 h2
11 a1 b1 c1 d1 e1 f1 g1 h1
12}
13// vfmt on
14
15fn test_flag_enum_with_64_value_bits() {
16 last_value := PawnsBoard.h1
17 dump(last_value)
18 dump(u64(last_value))
19 assert u64(last_value) == 0x8000_0000_0000_0000
20
21 wb := PawnsBoard.a2 | .b2 | .c2 | .d2 | .e2 | .f2 | .g2 | .h2
22 dump(wb)
23 dump(u64(wb))
24 assert u64(wb) == 71776119061217280
25 assert '${u64(wb):064b}' == '0000000011111111000000000000000000000000000000000000000000000000'
26 assert '${wb}' == 'PawnsBoard{.a2 | .b2 | .c2 | .d2 | .e2 | .f2 | .g2 | .h2}'
27
28 bb := PawnsBoard.a7 | .b7 | .c7 | .d7 | .e7 | .f7 | .g7 | .h7
29 dump(bb)
30 dump(u64(bb))
31 assert u64(bb) == 65280
32 assert '${u64(bb):064b}' == '0000000000000000000000000000000000000000000000001111111100000000'
33 // assert '${bb}' == 'PawnsBoard{.a7 | .b7 | .c7 | .d7 | .e7 | .f7 | .g7 | .h7}'
34
35 if false {
36 eprintln('----------------------------------------------')
37 for x in [PawnsBoard.a1, .a2, .a3, .a4, .a5, .a6, .a7, .a8] {
38 eprintln('>> x: ${x} | hex value: ${u64(x).hex()}')
39 }
40 eprintln('----------------------------------------------')
41 for x in [PawnsBoard.b1, .b2, .b3, .b4, .b5, .b6, .b7, .b8] {
42 eprintln('>> x: ${x} | hex value: ${u64(x).hex()}')
43 }
44 eprintln('----------------------------------------------')
45 for x in [PawnsBoard.c1, .c2, .c3, .c4, .c5, .c6, .c7, .c8] {
46 eprintln('>> x: ${x} | hex value: ${u64(x).hex()}')
47 }
48 eprintln('----------------------------------------------')
49 for x in [PawnsBoard.d1, .d2, .d3, .d4, .d5, .d6, .d7, .d8] {
50 eprintln('>> x: ${x} | hex value: ${u64(x).hex()}')
51 }
52 eprintln('----------------------------------------------')
53 for x in [PawnsBoard.e1, .e2, .e3, .e4, .e5, .e6, .e7, .e8] {
54 eprintln('>> x: ${x} | hex value: ${u64(x).hex()}')
55 }
56 eprintln('----------------------------------------------')
57 for x in [PawnsBoard.f1, .f2, .f3, .f4, .f5, .f6, .f7, .f8] {
58 eprintln('>> x: ${x} | hex value: ${u64(x).hex()}')
59 }
60 eprintln('----------------------------------------------')
61 for x in [PawnsBoard.g1, .g2, .g3, .g4, .g5, .g6, .g7, .g8] {
62 eprintln('>> x: ${x} | hex value: ${u64(x).hex()}')
63 }
64 eprintln('----------------------------------------------')
65 for x in [PawnsBoard.h1, .h2, .h3, .h4, .h5, .h6, .h7, .h8] {
66 eprintln('>> x: ${x} | hex value: ${u64(x).hex()}')
67 }
68 }
69}
70