Packages
gleam_stdlib
0.10.1
1.0.3
1.0.2
1.0.1
1.0.0
0.71.0
0.70.0
0.69.0
0.68.1
0.68.0
0.67.1
0.67.0
0.65.0
0.64.0
0.63.2
0.63.1
0.63.0
0.62.1
0.62.0
0.61.0
0.60.0
0.59.0
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.1
0.35.0
0.34.0
0.33.1
0.33.0
0.32.1
0.32.0
0.31.0
0.30.2
0.30.1
0.30.0
0.29.2
0.29.1
0.29.0
0.28.2
0.28.1
0.28.0
0.27.0
0.26.1
0.26.0
0.25.0
0.24.0
0.23.0
0.22.3
0.22.2
0.22.1
0.22.0
0.21.0
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.18.0-rc1
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.4.0-rc1
0.3.1
0.3.0
0.2.0
retired
A standard library for the Gleam programming language
Current section
Files
Jump to
Current section
Files
gen/test/gleam@uri_test.erl
-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, error_parsing_query_test/0, query_to_string_test/0, empty_query_to_string_test/0, parse_segments_test/0, origin_test/0, merge_test/0]).
full_parse_test() ->
{ok,
Parsed} = gleam@uri:parse(
<<"https://foo:bar@example.com:1234/path?query=true#fragment"/utf8>>
),
gleam@should:equal(erlang:element(2, Parsed), {some, <<"https"/utf8>>}),
gleam@should:equal(erlang:element(3, Parsed), {some, <<"foo:bar"/utf8>>}),
gleam@should:equal(
erlang:element(4, Parsed),
{some, <<"example.com"/utf8>>}
),
gleam@should:equal(erlang:element(5, Parsed), {some, 1234}),
gleam@should:equal(erlang:element(6, Parsed), <<"/path"/utf8>>),
gleam@should:equal(
erlang:element(7, Parsed),
{some, <<"query=true"/utf8>>}
),
gleam@should:equal(erlang:element(8, Parsed), {some, <<"fragment"/utf8>>}).
parse_only_path_test() ->
{ok, Parsed} = gleam@uri:parse(<<""/utf8>>),
gleam@should:equal(erlang:element(2, Parsed), none),
gleam@should:equal(erlang:element(3, Parsed), none),
gleam@should:equal(erlang:element(4, Parsed), none),
gleam@should:equal(erlang:element(5, Parsed), none),
gleam@should:equal(erlang:element(6, Parsed), <<""/utf8>>),
gleam@should:equal(erlang:element(7, Parsed), none),
gleam@should:equal(erlang:element(8, Parsed), none).
parse_only_host_test() ->
{ok, Parsed} = gleam@uri:parse(<<"//"/utf8>>),
gleam@should:equal(erlang:element(2, Parsed), none),
gleam@should:equal(erlang:element(3, Parsed), none),
gleam@should:equal(erlang:element(4, Parsed), {some, <<""/utf8>>}),
gleam@should:equal(erlang:element(5, Parsed), none),
gleam@should:equal(erlang:element(6, Parsed), <<""/utf8>>),
gleam@should:equal(erlang:element(7, Parsed), none),
gleam@should:equal(erlang:element(8, Parsed), none).
error_parsing_uri_test() ->
gleam@should:equal(gleam@uri:parse(<<"::"/utf8>>), {error, nil}).
full_uri_to_string_test() ->
TestUri = {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(TestUri),
<<"https://foo:bar@example.com:1234/path?query=true#fragment"/utf8>>
).
path_only_uri_to_string_test() ->
TestUri = {uri, none, none, none, none, <<"/"/utf8>>, none, none},
gleam@should:equal(gleam@uri:to_string(TestUri), <<"/"/utf8>>).
parse_query_string_test() ->
{ok, Parsed} = gleam@uri:parse_query(<<"foo+bar=1&city=%C3%B6rebro"/utf8>>),
gleam@should:equal(
Parsed,
[{<<"foo bar"/utf8>>, <<"1"/utf8>>},
{<<"city"/utf8>>, <<"örebro"/utf8>>}]
).
parse_empty_query_string_test() ->
{ok, Parsed} = gleam@uri:parse_query(<<""/utf8>>),
gleam@should:equal(Parsed, []).
error_parsing_query_test() ->
gleam@should:equal(gleam@uri:parse_query(<<"%C2"/utf8>>), {error, nil}).
query_to_string_test() ->
QueryString = gleam@uri:query_to_string(
[{<<"foo bar"/utf8>>, <<"1"/utf8>>},
{<<"city"/utf8>>, <<"örebro"/utf8>>}]
),
gleam@should:equal(QueryString, <<"foo+bar=1&city=%C3%B6rebro"/utf8>>).
empty_query_to_string_test() ->
QueryString = gleam@uri:query_to_string([]),
gleam@should:equal(QueryString, <<""/utf8>>).
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>>]
).
origin_test() ->
{ok, Parsed} = gleam@uri:parse(<<"http://example.test/path?foo#bar"/utf8>>),
gleam@should:equal(
gleam@uri:origin(Parsed),
{ok, <<"http://example.test"/utf8>>}
),
{ok, Parsed1} = gleam@uri:parse(<<"http://example.test:8080"/utf8>>),
gleam@should:equal(
gleam@uri:origin(Parsed1),
{ok, <<"http://example.test:8080"/utf8>>}
),
{ok, Parsed2} = gleam@uri:parse(<<"https://example.test"/utf8>>),
gleam@should:equal(
gleam@uri:origin(Parsed2),
{ok, <<"https://example.test"/utf8>>}
),
{ok, Parsed3} = gleam@uri:parse(<<"http:///path"/utf8>>),
gleam@should:equal(gleam@uri:origin(Parsed3), {ok, <<"http://"/utf8>>}),
{ok, Parsed4} = gleam@uri:parse(<<"http://"/utf8>>),
gleam@should:equal(gleam@uri:origin(Parsed4), {ok, <<"http://"/utf8>>}),
{ok, Parsed5} = gleam@uri:parse(<<"/path"/utf8>>),
gleam@should:equal(gleam@uri:origin(Parsed5), {error, nil}),
{ok, Parsed6} = gleam@uri:parse(<<"file:///dev/null"/utf8>>),
gleam@should:equal(gleam@uri:origin(Parsed6), {error, nil}).
merge_test() ->
{ok, A} = gleam@uri:parse(<<"/relative"/utf8>>),
{ok, B} = gleam@uri:parse(<<""/utf8>>),
gleam@should:equal(gleam@uri:merge(A, B), {error, nil}),
{ok, A1} = gleam@uri:parse(<<"http://google.com/foo"/utf8>>),
{ok, B1} = gleam@uri:parse(<<"http://example.com/baz"/utf8>>),
gleam@should:equal(
gleam@uri:merge(A1, B1),
gleam@uri:parse(<<"http://example.com/baz"/utf8>>)
),
{ok, A2} = gleam@uri:parse(<<"http://google.com/foo"/utf8>>),
{ok,
B2} = gleam@uri:parse(<<"http://example.com/.././bar/../../baz"/utf8>>),
gleam@should:equal(
gleam@uri:merge(A2, B2),
gleam@uri:parse(<<"http://example.com/baz"/utf8>>)
),
{ok, A3} = gleam@uri:parse(<<"http://google.com/foo"/utf8>>),
{ok, B3} = gleam@uri:parse(<<"//example.com/baz"/utf8>>),
gleam@should:equal(
gleam@uri:merge(A3, B3),
gleam@uri:parse(<<"http://example.com/baz"/utf8>>)
),
{ok, A4} = gleam@uri:parse(<<"http://google.com/foo"/utf8>>),
{ok, B4} = gleam@uri:parse(<<"//example.com/.././bar/../../../baz"/utf8>>),
gleam@should:equal(
gleam@uri:merge(A4, B4),
gleam@uri:parse(<<"http://example.com/baz"/utf8>>)
),
{ok, A5} = gleam@uri:parse(<<"http://example.com/foo/bar"/utf8>>),
{ok, B5} = gleam@uri:parse(<<"/baz"/utf8>>),
gleam@should:equal(
gleam@uri:merge(A5, B5),
gleam@uri:parse(<<"http://example.com/baz"/utf8>>)
),
{ok, A6} = gleam@uri:parse(<<"http://example.com/foo/bar"/utf8>>),
{ok, B6} = gleam@uri:parse(<<"baz"/utf8>>),
gleam@should:equal(
gleam@uri:merge(A6, B6),
gleam@uri:parse(<<"http://example.com/foo/baz"/utf8>>)
),
{ok, A7} = gleam@uri:parse(<<"http://example.com/foo/"/utf8>>),
{ok, B7} = gleam@uri:parse(<<"baz"/utf8>>),
gleam@should:equal(
gleam@uri:merge(A7, B7),
gleam@uri:parse(<<"http://example.com/foo/baz"/utf8>>)
),
{ok, A8} = gleam@uri:parse(<<"http://example.com"/utf8>>),
{ok, B8} = gleam@uri:parse(<<"baz"/utf8>>),
gleam@should:equal(
gleam@uri:merge(A8, B8),
gleam@uri:parse(<<"http://example.com/baz"/utf8>>)
),
{ok, A9} = gleam@uri:parse(<<"http://example.com"/utf8>>),
{ok, B9} = gleam@uri:parse(<<"/.././bar/../../../baz"/utf8>>),
gleam@should:equal(
gleam@uri:merge(A9, B9),
gleam@uri:parse(<<"http://example.com/baz"/utf8>>)
),
{ok, A10} = gleam@uri:parse(<<"http://example.com/foo/bar"/utf8>>),
{ok, B10} = gleam@uri:parse(<<""/utf8>>),
gleam@should:equal(
gleam@uri:merge(A10, B10),
gleam@uri:parse(<<"http://example.com/foo/bar"/utf8>>)
),
{ok, A11} = gleam@uri:parse(<<"http://example.com/foo/bar"/utf8>>),
{ok, B11} = gleam@uri:parse(<<"#fragment"/utf8>>),
gleam@should:equal(
gleam@uri:merge(A11, B11),
gleam@uri:parse(<<"http://example.com/foo/bar#fragment"/utf8>>)
),
{ok, A12} = gleam@uri:parse(<<"http://example.com/foo/bar"/utf8>>),
{ok, B12} = gleam@uri:parse(<<"?query"/utf8>>),
gleam@should:equal(
gleam@uri:merge(A12, B12),
gleam@uri:parse(<<"http://example.com/foo/bar?query"/utf8>>)
),
{ok, A13} = gleam@uri:parse(<<"http://example.com/foo/bar?query1"/utf8>>),
{ok, B13} = gleam@uri:parse(<<"?query2"/utf8>>),
gleam@should:equal(
gleam@uri:merge(A13, B13),
gleam@uri:parse(<<"http://example.com/foo/bar?query2"/utf8>>)
),
{ok, A14} = gleam@uri:parse(<<"http://example.com/foo/bar?query"/utf8>>),
{ok, B14} = gleam@uri:parse(<<""/utf8>>),
gleam@should:equal(
gleam@uri:merge(A14, B14),
gleam@uri:parse(<<"http://example.com/foo/bar?query"/utf8>>)
).