1169d92004-05-02Martin Nilsson START_MARKER
05dc762001-07-20Martin Stjernholm 
39a7012004-01-27Martin Nilsson test_eq(_Roxen.html_encode_string (0), "0") test_eq(_Roxen.html_encode_string (""), "") test_eq(_Roxen.html_encode_string (10), "10") test_eq(_Roxen.html_encode_string("a&b<c>d"), "a&amp;b&lt;c&gt;d") test_eq(_Roxen.http_decode_string(""), "") test_eq(_Roxen.http_decode_string("abc+d%20e%41"), "abc+d eA") test_eq(_Roxen.http_decode_string(""), "")
6af85a2012-09-13Martin Nilsson test_eq(_Roxen.http_decode_string("+"), "+")
6812792014-10-16Arne Goedeke 
d13a212016-03-02Henrik Grubbström (Grubba) test_eq(_Roxen.http_decode_string("%uD83D%uDE02"), "\U0001f602")
1837dd2014-10-16Arne Goedeke // the following inputs are all illegal
6812792014-10-16Arne Goedeke test_eval_error(_Roxen.http_decode_string("%")) test_eval_error(_Roxen.http_decode_string("%0")) test_eval_error(_Roxen.http_decode_string("%%")) test_eval_error(_Roxen.http_decode_string("%%%")) test_eval_error(_Roxen.http_decode_string("%41%")) test_eval_error(_Roxen.http_decode_string("%41%0")) test_eval_error(_Roxen.http_decode_string("%41%%")) test_eval_error(_Roxen.http_decode_string("%41%%%")) test_eval_error(_Roxen.http_decode_string("%u")) test_eval_error(_Roxen.http_decode_string("%u0")) test_eval_error(_Roxen.http_decode_string("%u00")) test_eval_error(_Roxen.http_decode_string("%u000")) test_eval_error(_Roxen.http_decode_string("%u000_")) test_eval_error(_Roxen.http_decode_string("%41%u")) test_eval_error(_Roxen.http_decode_string("%41%u0")) test_eval_error(_Roxen.http_decode_string("%41%u00")) test_eval_error(_Roxen.http_decode_string("%41%u000")) test_eval_error(_Roxen.http_decode_string("%41%u000_"))
d13a212016-03-02Henrik Grubbström (Grubba) dnl test_eval_error(_Roxen.http_decode_string("%uD83D")) dnl test_eval_error(_Roxen.http_decode_string("%uDE02")) dnl test_eval_error(_Roxen.http_decode_string("X%uD83DX")) dnl test_eval_error(_Roxen.http_decode_string("X%uDE02X"))
6812792014-10-16Arne Goedeke 
39a7012004-01-27Martin Nilsson test_eq(_Roxen.http_decode_string("%u12345"), "\x1234""5") test_eq(_Roxen.http_decode_string("%U12345"), "\x1234""5")
7113c02004-01-27Martin Nilsson  define(test_mkhttp,[[ test_any_equal([[ string x=_Roxen.make_http_headers($1); if(!has_suffix(x, "\r\n")) return -1; return sort(x/"\r\n"-({""})); ]],$2) ]]) test_eval_error(_Roxen.make_http_headers(0)) test_mkhttp( ([]), ({}) ) test_mkhttp( (["":""]), ({": "}) ) test_mkhttp( (["a":"1","b":"2"]), ({"a: 1","b: 2"}) ) test_mkhttp( (["a":"1","b":({"2","3"})]), ({"a: 1","b: 2","b: 3"}) ) test_mkhttp( (["a":"1","b":({"2","2"})]), ({"a: 1","b: 2","b: 2"}) )
f2225c2009-07-29Martin Nilsson  define(test_hp,[[ test_do( add_constant("hp", _Roxen.HeaderParser()) ) test_equal( hp->feed( $1 ), $2) test_do( add_constant("hp") ) ]]) test_hp( "GET / HTTP/1.0\r\nblaha: foo\nbar\r\nzonk: 1\r\n\r\n", ({ "", "GET / HTTP/1.0", ([ "blaha":"foo", "zonk":"1" ]) }) ) test_hp( "GET / HTTP/1.0\r\nblaha: foo\r\nzonk: 1\r\n\r\n", ({ "", "GET / HTTP/1.0", ([ "blaha":"foo", "zonk":"1" ]) }) ) test_hp( "GET / HTTP/1.0\r\nblaha: foo\n\rblaha: bar\r\n\r\n", ({ "", "GET / HTTP/1.0", ([ "blaha":({ "foo", "bar" }) ]) }) )
1169d92004-05-02Martin Nilsson END_MARKER