-module(gleam@uri_test). -compile(no_auto_import). -export([full_parse_test/0, parse_only_path_test/0, parse_only_host_test/0, error_parsing_uri_test/0, full_uri_to_string_test/0, path_only_uri_to_string_test/0, parse_query_string_test/0, parse_empty_query_string_test/0, parse_query_string_with_empty_test/0, error_parsing_query_test/0, query_to_string_test/0, empty_query_to_string_test/0, percent_encode_test/0, percent_encode_consistency_test/0, percent_decode_test/0, percent_decode_consistency_test/0, parse_segments_test/0, origin_test/0, merge_test/0]). -spec full_parse_test() -> gleam@should:expectation(). full_parse_test() -> Parsed@1 = case gleam@uri:parse( <<"https://foo:bar@example.com:1234/path?query=true#fragment"/utf8>> ) of {ok, Parsed} -> Parsed; Gleam@Assert -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert, module => <<"gleam/uri_test"/utf8>>, function => <<"full_parse_test"/utf8>>, line => 8}) end, gleam@should:equal(erlang:element(2, Parsed@1), {some, <<"https"/utf8>>}), gleam@should:equal(erlang:element(3, Parsed@1), {some, <<"foo:bar"/utf8>>}), gleam@should:equal( erlang:element(4, Parsed@1), {some, <<"example.com"/utf8>>} ), gleam@should:equal(erlang:element(5, Parsed@1), {some, 1234}), gleam@should:equal(erlang:element(6, Parsed@1), <<"/path"/utf8>>), gleam@should:equal( erlang:element(7, Parsed@1), {some, <<"query=true"/utf8>>} ), gleam@should:equal(erlang:element(8, Parsed@1), {some, <<"fragment"/utf8>>}). -spec parse_only_path_test() -> gleam@should:expectation(). parse_only_path_test() -> Parsed@1 = case gleam@uri:parse(<<""/utf8>>) of {ok, Parsed} -> Parsed; Gleam@Assert -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert, module => <<"gleam/uri_test"/utf8>>, function => <<"parse_only_path_test"/utf8>>, line => 20}) end, gleam@should:equal(erlang:element(2, Parsed@1), none), gleam@should:equal(erlang:element(3, Parsed@1), none), gleam@should:equal(erlang:element(4, Parsed@1), none), gleam@should:equal(erlang:element(5, Parsed@1), none), gleam@should:equal(erlang:element(6, Parsed@1), <<""/utf8>>), gleam@should:equal(erlang:element(7, Parsed@1), none), gleam@should:equal(erlang:element(8, Parsed@1), none). -spec parse_only_host_test() -> gleam@should:expectation(). parse_only_host_test() -> Parsed@1 = case gleam@uri:parse(<<"//"/utf8>>) of {ok, Parsed} -> Parsed; Gleam@Assert -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert, module => <<"gleam/uri_test"/utf8>>, function => <<"parse_only_host_test"/utf8>>, line => 31}) end, gleam@should:equal(erlang:element(2, Parsed@1), none), gleam@should:equal(erlang:element(3, Parsed@1), none), gleam@should:equal(erlang:element(4, Parsed@1), {some, <<""/utf8>>}), gleam@should:equal(erlang:element(5, Parsed@1), none), gleam@should:equal(erlang:element(6, Parsed@1), <<""/utf8>>), gleam@should:equal(erlang:element(7, Parsed@1), none), gleam@should:equal(erlang:element(8, Parsed@1), none). -spec error_parsing_uri_test() -> gleam@should:expectation(). error_parsing_uri_test() -> gleam@should:equal(gleam@uri:parse(<<"::"/utf8>>), {error, nil}). -spec full_uri_to_string_test() -> gleam@should:expectation(). full_uri_to_string_test() -> Test_uri = {uri, {some, <<"https"/utf8>>}, {some, <<"foo:bar"/utf8>>}, {some, <<"example.com"/utf8>>}, {some, 1234}, <<"/path"/utf8>>, {some, <<"query=true"/utf8>>}, {some, <<"fragment"/utf8>>}}, gleam@should:equal( gleam@uri:to_string(Test_uri), <<"https://foo:bar@example.com:1234/path?query=true#fragment"/utf8>> ). -spec path_only_uri_to_string_test() -> gleam@should:expectation(). path_only_uri_to_string_test() -> Test_uri = {uri, none, none, none, none, <<"/"/utf8>>, none, none}, gleam@should:equal(gleam@uri:to_string(Test_uri), <<"/"/utf8>>). -spec parse_query_string_test() -> gleam@should:expectation(). parse_query_string_test() -> Parsed@1 = case gleam@uri:parse_query(<<"foo+bar=1&city=%C3%B6rebro"/utf8>>) of {ok, Parsed} -> Parsed; Gleam@Assert -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert, module => <<"gleam/uri_test"/utf8>>, function => <<"parse_query_string_test"/utf8>>, line => 68}) end, gleam@should:equal( Parsed@1, [{<<"foo bar"/utf8>>, <<"1"/utf8>>}, {<<"city"/utf8>>, <<"örebro"/utf8>>}] ), Parsed@3 = case gleam@uri:parse_query(<<"a[]=1&a[]=2"/utf8>>) of {ok, Parsed@2} -> Parsed@2; Gleam@Assert@1 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@1, module => <<"gleam/uri_test"/utf8>>, function => <<"parse_query_string_test"/utf8>>, line => 72}) end, gleam@should:equal( Parsed@3, [{<<"a[]"/utf8>>, <<"1"/utf8>>}, {<<"a[]"/utf8>>, <<"2"/utf8>>}] ). -spec parse_empty_query_string_test() -> gleam@should:expectation(). parse_empty_query_string_test() -> Parsed@1 = case gleam@uri:parse_query(<<""/utf8>>) of {ok, Parsed} -> Parsed; Gleam@Assert -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert, module => <<"gleam/uri_test"/utf8>>, function => <<"parse_empty_query_string_test"/utf8>>, line => 79}) end, gleam@should:equal(Parsed@1, []). -spec parse_query_string_with_empty_test() -> gleam@should:expectation(). parse_query_string_with_empty_test() -> gleam@should:equal( gleam@uri:parse_query(<<"present"/utf8>>), {ok, [{<<"present"/utf8>>, <<""/utf8>>}]} ). -spec error_parsing_query_test() -> gleam@should:expectation(). error_parsing_query_test() -> gleam@should:equal(gleam@uri:parse_query(<<"%C2"/utf8>>), {error, nil}). -spec query_to_string_test() -> gleam@should:expectation(). query_to_string_test() -> Query_string = gleam@uri:query_to_string( [{<<"foo bar"/utf8>>, <<"1"/utf8>>}, {<<"city"/utf8>>, <<"örebro"/utf8>>}] ), gleam@should:equal(Query_string, <<"foo+bar=1&city=%C3%B6rebro"/utf8>>). -spec empty_query_to_string_test() -> gleam@should:expectation(). empty_query_to_string_test() -> Query_string = gleam@uri:query_to_string([]), gleam@should:equal(Query_string, <<""/utf8>>). -spec percent_codec_fixtures() -> list({binary(), binary()}). percent_codec_fixtures() -> [{<<" "/utf8>>, <<"+"/utf8>>}, {<<","/utf8>>, <<"%2C"/utf8>>}, {<<";"/utf8>>, <<"%3B"/utf8>>}, {<<":"/utf8>>, <<"%3A"/utf8>>}, {<<"!"/utf8>>, <<"%21"/utf8>>}, {<<"?"/utf8>>, <<"%3F"/utf8>>}, {<<"'"/utf8>>, <<"%27"/utf8>>}, {<<"("/utf8>>, <<"%28"/utf8>>}, {<<")"/utf8>>, <<"%29"/utf8>>}, {<<"["/utf8>>, <<"%5B"/utf8>>}, {<<"@"/utf8>>, <<"%40"/utf8>>}, {<<"/"/utf8>>, <<"%2F"/utf8>>}, {<<"\\"/utf8>>, <<"%5C"/utf8>>}, {<<"&"/utf8>>, <<"%26"/utf8>>}, {<<"#"/utf8>>, <<"%23"/utf8>>}, {<<"="/utf8>>, <<"%3D"/utf8>>}, {<<"~"/utf8>>, <<"%7E"/utf8>>}, {<<"ñ"/utf8>>, <<"%C3%B1"/utf8>>}, {<<"-"/utf8>>, <<"-"/utf8>>}, {<<"_"/utf8>>, <<"_"/utf8>>}, {<<"."/utf8>>, <<"."/utf8>>}, {<<"*"/utf8>>, <<"*"/utf8>>}, {<<"100% great"/utf8>>, <<"100%25+great"/utf8>>}]. -spec percent_encode_test() -> list(gleam@should:expectation()). percent_encode_test() -> gleam@list:map(percent_codec_fixtures(), fun(T) -> {A, B} = T, gleam@should:equal(gleam@uri:percent_encode(A), B) end). -spec percent_encode_consistency_test() -> gleam@should:expectation(). percent_encode_consistency_test() -> K = <<"foo bar[]"/utf8>>, V = <<"ñaña (,:*~)"/utf8>>, Query_string = gleam@uri:query_to_string([{K, V}]), Encoded_key = gleam@uri:percent_encode(K), Encoded_value = gleam@uri:percent_encode(V), Manual_query_string = gleam@string:concat( [Encoded_key, <<"="/utf8>>, Encoded_value] ), gleam@should:equal(Query_string, Manual_query_string). -spec percent_decode_test() -> list(gleam@should:expectation()). percent_decode_test() -> gleam@list:map(percent_codec_fixtures(), fun(T) -> {A, B} = T, gleam@should:equal(gleam@uri:percent_decode(B), {ok, A}) end). -spec percent_decode_consistency_test() -> gleam@should:expectation(). percent_decode_consistency_test() -> K = <<"foo+bar[]"/utf8>>, V = <<"%C3%B6rebro"/utf8>>, Query = gleam@string:concat([K, <<"="/utf8>>, V]), Parsed@1 = case gleam@uri:parse_query(Query) of {ok, Parsed} -> Parsed; Gleam@Assert -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert, module => <<"gleam/uri_test"/utf8>>, function => <<"percent_decode_consistency_test"/utf8>>, line => 167}) end, Decoded_key@1 = case gleam@uri:percent_decode(K) of {ok, Decoded_key} -> Decoded_key; Gleam@Assert@1 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@1, module => <<"gleam/uri_test"/utf8>>, function => <<"percent_decode_consistency_test"/utf8>>, line => 169}) end, Decoded_value@1 = case gleam@uri:percent_decode(V) of {ok, Decoded_value} -> Decoded_value; Gleam@Assert@2 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@2, module => <<"gleam/uri_test"/utf8>>, function => <<"percent_decode_consistency_test"/utf8>>, line => 170}) end, gleam@should:equal(Parsed@1, [{Decoded_key@1, Decoded_value@1}]). -spec parse_segments_test() -> gleam@should:expectation(). parse_segments_test() -> gleam@should:equal(gleam@uri:path_segments(<<"/"/utf8>>), []), gleam@should:equal( gleam@uri:path_segments(<<"/foo/bar"/utf8>>), [<<"foo"/utf8>>, <<"bar"/utf8>>] ), gleam@should:equal(gleam@uri:path_segments(<<"////"/utf8>>), []), gleam@should:equal( gleam@uri:path_segments(<<"/foo//bar"/utf8>>), [<<"foo"/utf8>>, <<"bar"/utf8>>] ), gleam@should:equal(gleam@uri:path_segments(<<"/."/utf8>>), []), gleam@should:equal( gleam@uri:path_segments(<<"/.foo"/utf8>>), [<<".foo"/utf8>>] ), gleam@should:equal( gleam@uri:path_segments(<<"/../bar"/utf8>>), [<<"bar"/utf8>>] ), gleam@should:equal( gleam@uri:path_segments(<<"../bar"/utf8>>), [<<"bar"/utf8>>] ), gleam@should:equal( gleam@uri:path_segments(<<"/foo/../bar"/utf8>>), [<<"bar"/utf8>>] ). -spec origin_test() -> gleam@should:expectation(). origin_test() -> Parsed@1 = case gleam@uri:parse(<<"http://example.test/path?foo#bar"/utf8>>) of {ok, Parsed} -> Parsed; Gleam@Assert -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert, module => <<"gleam/uri_test"/utf8>>, function => <<"origin_test"/utf8>>, line => 190}) end, gleam@should:equal( gleam@uri:origin(Parsed@1), {ok, <<"http://example.test"/utf8>>} ), Parsed@3 = case gleam@uri:parse(<<"http://example.test:8080"/utf8>>) of {ok, Parsed@2} -> Parsed@2; Gleam@Assert@1 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@1, module => <<"gleam/uri_test"/utf8>>, function => <<"origin_test"/utf8>>, line => 194}) end, gleam@should:equal( gleam@uri:origin(Parsed@3), {ok, <<"http://example.test:8080"/utf8>>} ), Parsed@5 = case gleam@uri:parse(<<"https://example.test"/utf8>>) of {ok, Parsed@4} -> Parsed@4; Gleam@Assert@2 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@2, module => <<"gleam/uri_test"/utf8>>, function => <<"origin_test"/utf8>>, line => 198}) end, gleam@should:equal( gleam@uri:origin(Parsed@5), {ok, <<"https://example.test"/utf8>>} ), Parsed@7 = case gleam@uri:parse(<<"http:///path"/utf8>>) of {ok, Parsed@6} -> Parsed@6; Gleam@Assert@3 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@3, module => <<"gleam/uri_test"/utf8>>, function => <<"origin_test"/utf8>>, line => 202}) end, gleam@should:equal(gleam@uri:origin(Parsed@7), {ok, <<"http://"/utf8>>}), Parsed@9 = case gleam@uri:parse(<<"http://"/utf8>>) of {ok, Parsed@8} -> Parsed@8; Gleam@Assert@4 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@4, module => <<"gleam/uri_test"/utf8>>, function => <<"origin_test"/utf8>>, line => 206}) end, gleam@should:equal(gleam@uri:origin(Parsed@9), {ok, <<"http://"/utf8>>}), Parsed@11 = case gleam@uri:parse(<<"/path"/utf8>>) of {ok, Parsed@10} -> Parsed@10; Gleam@Assert@5 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@5, module => <<"gleam/uri_test"/utf8>>, function => <<"origin_test"/utf8>>, line => 210}) end, gleam@should:equal(gleam@uri:origin(Parsed@11), {error, nil}), Parsed@13 = case gleam@uri:parse(<<"file:///dev/null"/utf8>>) of {ok, Parsed@12} -> Parsed@12; Gleam@Assert@6 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@6, module => <<"gleam/uri_test"/utf8>>, function => <<"origin_test"/utf8>>, line => 214}) end, gleam@should:equal(gleam@uri:origin(Parsed@13), {error, nil}). -spec merge_test() -> gleam@should:expectation(). merge_test() -> A@1 = case gleam@uri:parse(<<"/relative"/utf8>>) of {ok, A} -> A; Gleam@Assert -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 220}) end, B@1 = case gleam@uri:parse(<<""/utf8>>) of {ok, B} -> B; Gleam@Assert@1 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@1, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 221}) end, gleam@should:equal(gleam@uri:merge(A@1, B@1), {error, nil}), A@3 = case gleam@uri:parse(<<"http://google.com/foo"/utf8>>) of {ok, A@2} -> A@2; Gleam@Assert@2 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@2, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 225}) end, B@3 = case gleam@uri:parse(<<"http://example.com/baz"/utf8>>) of {ok, B@2} -> B@2; Gleam@Assert@3 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@3, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 226}) end, gleam@should:equal( gleam@uri:merge(A@3, B@3), gleam@uri:parse(<<"http://example.com/baz"/utf8>>) ), A@5 = case gleam@uri:parse(<<"http://google.com/foo"/utf8>>) of {ok, A@4} -> A@4; Gleam@Assert@4 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@4, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 230}) end, B@5 = case gleam@uri:parse(<<"http://example.com/.././bar/../../baz"/utf8>>) of {ok, B@4} -> B@4; Gleam@Assert@5 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@5, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 231}) end, gleam@should:equal( gleam@uri:merge(A@5, B@5), gleam@uri:parse(<<"http://example.com/baz"/utf8>>) ), A@7 = case gleam@uri:parse(<<"http://google.com/foo"/utf8>>) of {ok, A@6} -> A@6; Gleam@Assert@6 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@6, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 235}) end, B@7 = case gleam@uri:parse(<<"//example.com/baz"/utf8>>) of {ok, B@6} -> B@6; Gleam@Assert@7 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@7, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 236}) end, gleam@should:equal( gleam@uri:merge(A@7, B@7), gleam@uri:parse(<<"http://example.com/baz"/utf8>>) ), A@9 = case gleam@uri:parse(<<"http://google.com/foo"/utf8>>) of {ok, A@8} -> A@8; Gleam@Assert@8 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@8, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 240}) end, B@9 = case gleam@uri:parse(<<"//example.com/.././bar/../../../baz"/utf8>>) of {ok, B@8} -> B@8; Gleam@Assert@9 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@9, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 241}) end, gleam@should:equal( gleam@uri:merge(A@9, B@9), gleam@uri:parse(<<"http://example.com/baz"/utf8>>) ), A@11 = case gleam@uri:parse(<<"http://example.com/foo/bar"/utf8>>) of {ok, A@10} -> A@10; Gleam@Assert@10 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@10, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 245}) end, B@11 = case gleam@uri:parse(<<"/baz"/utf8>>) of {ok, B@10} -> B@10; Gleam@Assert@11 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@11, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 246}) end, gleam@should:equal( gleam@uri:merge(A@11, B@11), gleam@uri:parse(<<"http://example.com/baz"/utf8>>) ), A@13 = case gleam@uri:parse(<<"http://example.com/foo/bar"/utf8>>) of {ok, A@12} -> A@12; Gleam@Assert@12 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@12, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 250}) end, B@13 = case gleam@uri:parse(<<"baz"/utf8>>) of {ok, B@12} -> B@12; Gleam@Assert@13 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@13, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 251}) end, gleam@should:equal( gleam@uri:merge(A@13, B@13), gleam@uri:parse(<<"http://example.com/foo/baz"/utf8>>) ), A@15 = case gleam@uri:parse(<<"http://example.com/foo/"/utf8>>) of {ok, A@14} -> A@14; Gleam@Assert@14 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@14, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 255}) end, B@15 = case gleam@uri:parse(<<"baz"/utf8>>) of {ok, B@14} -> B@14; Gleam@Assert@15 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@15, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 256}) end, gleam@should:equal( gleam@uri:merge(A@15, B@15), gleam@uri:parse(<<"http://example.com/foo/baz"/utf8>>) ), A@17 = case gleam@uri:parse(<<"http://example.com"/utf8>>) of {ok, A@16} -> A@16; Gleam@Assert@16 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@16, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 260}) end, B@17 = case gleam@uri:parse(<<"baz"/utf8>>) of {ok, B@16} -> B@16; Gleam@Assert@17 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@17, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 261}) end, gleam@should:equal( gleam@uri:merge(A@17, B@17), gleam@uri:parse(<<"http://example.com/baz"/utf8>>) ), A@19 = case gleam@uri:parse(<<"http://example.com"/utf8>>) of {ok, A@18} -> A@18; Gleam@Assert@18 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@18, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 265}) end, B@19 = case gleam@uri:parse(<<"/.././bar/../../../baz"/utf8>>) of {ok, B@18} -> B@18; Gleam@Assert@19 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@19, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 266}) end, gleam@should:equal( gleam@uri:merge(A@19, B@19), gleam@uri:parse(<<"http://example.com/baz"/utf8>>) ), A@21 = case gleam@uri:parse(<<"http://example.com/foo/bar"/utf8>>) of {ok, A@20} -> A@20; Gleam@Assert@20 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@20, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 270}) end, B@21 = case gleam@uri:parse(<<""/utf8>>) of {ok, B@20} -> B@20; Gleam@Assert@21 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@21, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 271}) end, gleam@should:equal( gleam@uri:merge(A@21, B@21), gleam@uri:parse(<<"http://example.com/foo/bar"/utf8>>) ), A@23 = case gleam@uri:parse(<<"http://example.com/foo/bar"/utf8>>) of {ok, A@22} -> A@22; Gleam@Assert@22 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@22, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 275}) end, B@23 = case gleam@uri:parse(<<"#fragment"/utf8>>) of {ok, B@22} -> B@22; Gleam@Assert@23 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@23, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 276}) end, gleam@should:equal( gleam@uri:merge(A@23, B@23), gleam@uri:parse(<<"http://example.com/foo/bar#fragment"/utf8>>) ), A@25 = case gleam@uri:parse(<<"http://example.com/foo/bar"/utf8>>) of {ok, A@24} -> A@24; Gleam@Assert@24 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@24, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 280}) end, B@25 = case gleam@uri:parse(<<"?query"/utf8>>) of {ok, B@24} -> B@24; Gleam@Assert@25 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@25, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 281}) end, gleam@should:equal( gleam@uri:merge(A@25, B@25), gleam@uri:parse(<<"http://example.com/foo/bar?query"/utf8>>) ), A@27 = case gleam@uri:parse(<<"http://example.com/foo/bar?query1"/utf8>>) of {ok, A@26} -> A@26; Gleam@Assert@26 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@26, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 285}) end, B@27 = case gleam@uri:parse(<<"?query2"/utf8>>) of {ok, B@26} -> B@26; Gleam@Assert@27 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@27, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 286}) end, gleam@should:equal( gleam@uri:merge(A@27, B@27), gleam@uri:parse(<<"http://example.com/foo/bar?query2"/utf8>>) ), A@29 = case gleam@uri:parse(<<"http://example.com/foo/bar?query"/utf8>>) of {ok, A@28} -> A@28; Gleam@Assert@28 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@28, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 290}) end, B@29 = case gleam@uri:parse(<<""/utf8>>) of {ok, B@28} -> B@28; Gleam@Assert@29 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => Gleam@Assert@29, module => <<"gleam/uri_test"/utf8>>, function => <<"merge_test"/utf8>>, line => 291}) end, gleam@should:equal( gleam@uri:merge(A@29, B@29), gleam@uri:parse(<<"http://example.com/foo/bar?query"/utf8>>) ).