code wiki / (root) / nx_url_params_test.nx

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}