nx_mcp_transport_gate.nx source
↩ module page · 22 lines · 1227 B
1import "nx_mcp_transport.nx"
2
3func main(argc: i64, argv: *i64) -> i64 {
4 let full: *u8 = "HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\n{}" as *u8
5 let size: i64 = mc_slen(full)
6 if mc_http_expected(full, size, size) != size { return 1 }
7 if mc_http_expected(full, size - 1, size) != size { return 2 }
8 if mc_http_expected(full, size - 3, size) != 0 { return 3 }
9 if mc_http_expected(full, size, size - 1) != (0 - 2) { return 4 }
10 let empty: *u8 = "HTTP/1.1 202 Accepted\r\ncontent-length: 0\r\n\r\n" as *u8
11 let es: i64 = mc_slen(empty)
12 if mc_http_expected(empty, es, es) != es { return 5 }
13 let closed: *u8 = "HTTP/1.1 200 OK\r\nX-Test: yes\r\n\r\n{}" as *u8
14 if mc_http_expected(closed, mc_slen(closed), mc_slen(closed)) != (0 - 1) { return 6 }
15 let chunked: *u8 = "HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n0\r\n\r\n" as *u8
16 if mc_http_expected(chunked, mc_slen(chunked), mc_slen(chunked)) != (0 - 1) { return 7 }
17 if mc_received_result(size - 1, size) >= 0 { return 8 }
18 if mc_received_result(size, size) != size { return 9 }
19 if mc_received_result(size, 0) >= 0 { return 10 }
20 mc_puts("PASS 10 HTTP frame completion/truncation cases\n" as *u8)
21 return 0
22}