v2 / vlib / v / build_constraint / constraint_test.v
117 lines · 104 sloc · 3.46 KB · d970a8fce22c62bd99468f679c19b9cd2c5481b2
Raw
1import v.build_constraint
2
3const benv = build_constraint.new_environment(['linux', 'tinyc'], ['abc', 'def'])
4
5fn test_eval_fact() {
6 assert benv.is_fact('tinyc')
7 assert benv.is_fact('linux')
8 assert !benv.is_fact('macos')
9 assert !benv.is_fact('windows')
10}
11
12fn test_eval_define() {
13 assert benv.is_define('abc')
14 assert benv.is_define('def')
15 assert !benv.is_define('xyz')
16}
17
18fn test_eval_true() {
19 assert benv.eval('true')!
20}
21
22fn test_eval_false() {
23 assert !benv.eval('false')!
24}
25
26fn test_eval_comment() {
27 assert benv.eval('true // some comment')!
28 assert benv.eval(' true// another comment ...')!
29 assert !benv.eval('false // some comment')!
30 assert !benv.eval(' false// another comment ...')!
31}
32
33fn test_eval_platforms_and_compilers() {
34 assert benv.eval('tinyc')!
35 assert benv.eval(' tinyc')!
36 assert benv.eval('tinyc ')!
37 assert benv.eval(' tinyc ')!
38 assert !benv.eval('gcc')!
39 assert !benv.eval('clang')!
40 assert !benv.eval('msvc')!
41 assert benv.eval('linux')!
42 assert benv.eval(' linux')!
43 assert benv.eval('linux ')!
44 assert benv.eval(' linux ')!
45 assert !benv.eval('windows')!
46 assert !benv.eval('macos')!
47 assert !benv.eval('freebsd')!
48}
49
50fn test_eval_defines() {
51 assert benv.eval('abc?')!
52 assert benv.eval(' abc?')!
53 assert benv.eval('abc? ')!
54 assert benv.eval(' abc? ')!
55 assert benv.eval('abc ?')!
56 assert benv.eval(' abc ?')!
57 assert benv.eval('abc ? ')!
58 assert benv.eval(' abc ? ')!
59 assert benv.eval('def?')!
60}
61
62fn test_eval_not() {
63 assert benv.eval('!gcc')!
64 assert benv.eval('!clang')!
65 assert benv.eval('!msvc')!
66 assert !benv.eval('!tinyc')!
67 assert !benv.eval(' !tinyc')!
68 assert !benv.eval('!tinyc ')!
69 assert !benv.eval(' !tinyc ')!
70 assert benv.eval('!xyz?')!
71}
72
73fn test_eval_and() {
74 assert benv.eval('linux && tinyc')!
75 assert !benv.eval('macos && tinyc')!
76 assert !benv.eval('windows && tinyc')!
77 assert !benv.eval('linux && gcc')!
78 //
79 assert benv.eval('linux && tinyc && abc?')!
80 assert benv.eval('linux && tinyc && def?')!
81 assert !benv.eval('linux && tinyc && xyz?')!
82 //
83 assert benv.eval('linux && !gcc')!
84 assert benv.eval('linux && !clang')!
85 assert benv.eval('!gcc && !windows')!
86 assert !benv.eval('!windows && tcc')!
87 assert !benv.eval('windows && gcc')!
88 assert !benv.eval('gcc && !windows')!
89}
90
91fn test_eval_or() {
92 assert benv.eval('windows||tinyc')!
93 assert benv.eval('windows || macos || tinyc')!
94 assert benv.eval('windows || macos || tinyc')!
95 assert benv.eval('windows || macos || gcc || abc?')!
96 assert benv.eval('!windows||gcc')!
97}
98
99fn test_complex() {
100 assert benv.eval(' (windows || tinyc) && linux ')!
101 assert !benv.eval(' (windows || gcc) && linux ')!
102 assert benv.eval(' (windows || tinyc) && !macos ')!
103 assert !benv.eval(' (windows || tinyc) && macos ')!
104}
105
106fn test_precedence() {
107 assert benv.eval(' tinyc && !windows ')! == benv.eval(' tinyc && (!windows)')!
108 assert benv.eval(' tinyc && !windows ')! == benv.eval(' (!windows) && tinyc')!
109 assert benv.eval(' !windows && tinyc')! == benv.eval(' (!windows) && tinyc')!
110 assert benv.eval(' !windows || tinyc')! == benv.eval(' (!windows) || tinyc')!
111 assert benv.eval(' !linux && tinyc')! == benv.eval(' (!linux) && tinyc')!
112 assert benv.eval(' !linux || tinyc')! == benv.eval(' (!linux) || tinyc')!
113 assert benv.eval(' !windows && gcc ')! == benv.eval(' (!windows) && gcc ')!
114 assert benv.eval(' !windows || gcc ')! == benv.eval(' (!windows) || gcc ')!
115 assert benv.eval(' !linux && gcc ')! == benv.eval(' (!linux) && gcc ')!
116 assert benv.eval(' !linux || gcc ')! == benv.eval(' (!linux) || gcc ')!
117}
118