nx_url_params_test.nx source
↩ module page · 67 lines · 2231 B
1// nx_url_params_test.nx -- smoke for nx_url_params.nx.
2
3import "nx_url_params.nx"
4
5func _ut_strlen(s: *u8) -> i64 {
6 var n: i64 = 0
7 while s[n] != 0 { n = n + 1 }
8 return n
9}
10
11func nx_url_params_test() -> i64 {
12 var fails: i64 = 0
13
14 // T1: no '?' -> no query.
15 let u1: *u8 = "/tictactoe/index.html" as *u8
16 if nx_url_query_start(u1, _ut_strlen(u1)) != -1 { fails = fails + 1 }
17
18 // T2: simple ?v=1.
19 let u2: *u8 = "/tictactoe/?v=1" as *u8
20 let v2: i64 = nx_url_param_int(u2, _ut_strlen(u2), "v" as *u8)
21 if v2 != 1 { fails = fails + 1 }
22
23 // T3: missing param.
24 let v3: i64 = nx_url_param_int(u2, _ut_strlen(u2), "missing" as *u8)
25 if v3 != -1 { fails = fails + 1 }
26
27 // T4: multi-digit value (?v=42).
28 let u4: *u8 = "/tictactoe/?v=42" as *u8
29 let v4: i64 = nx_url_param_int(u4, _ut_strlen(u4), "v" as *u8)
30 if v4 != 42 { fails = fails + 1 }
31
32 // T5: param not first (?other=x&v=7).
33 let u5: *u8 = "/tictactoe/?other=x&v=7" as *u8
34 let v5: i64 = nx_url_param_int(u5, _ut_strlen(u5), "v" as *u8)
35 if v5 != 7 { fails = fails + 1 }
36
37 // T6: param first followed by another (?v=3&other=x).
38 let u6: *u8 = "/tictactoe/?v=3&other=x" as *u8
39 let v6: i64 = nx_url_param_int(u6, _ut_strlen(u6), "v" as *u8)
40 if v6 != 3 { fails = fails + 1 }
41
42 // T7: fragment shouldn't confuse us (?v=5#frag).
43 let u7: *u8 = "/tictactoe/?v=5#frag" as *u8
44 let v7: i64 = nx_url_param_int(u7, _ut_strlen(u7), "v" as *u8)
45 if v7 != 5 { fails = fails + 1 }
46
47 // T8: name prefix isn't a false match (?version=10 should NOT match "v").
48 let u8s: *u8 = "/tictactoe/?version=10" as *u8
49 let v8: i64 = nx_url_param_int(u8s, _ut_strlen(u8s), "v" as *u8)
50 if v8 != -1 { fails = fails + 1 }
51
52 // T9: non-numeric value returns -1.
53 let u9: *u8 = "/tictactoe/?v=abc" as *u8
54 let v9: i64 = nx_url_param_int(u9, _ut_strlen(u9), "v" as *u8)
55 if v9 != -1 { fails = fails + 1 }
56
57 // T10: empty value treated as missing-int (?v=).
58 let u10: *u8 = "/tictactoe/?v=" as *u8
59 let v10: i64 = nx_url_param_int(u10, _ut_strlen(u10), "v" as *u8)
60 if v10 != -1 { fails = fails + 1 }
61
62 return fails
63}
64
65func main() -> i64 {
66 return nx_url_params_test()
67}