code wiki / (root) / nx_mcp_transport_gate.nx

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}