From 918a9da5f6a3f6bafa107d15faff89f74c90b7e1 Mon Sep 17 00:00:00 2001 From: Peter Saxton Date: Tue, 16 Jun 2020 09:36:14 +0100 Subject: add uri merge functionality --- test/gleam/uri_test.gleam | 77 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) (limited to 'test') diff --git a/test/gleam/uri_test.gleam b/test/gleam/uri_test.gleam index 9f102e0..3e638fd 100644 --- a/test/gleam/uri_test.gleam +++ b/test/gleam/uri_test.gleam @@ -131,3 +131,80 @@ pub fn origin_test() { uri.origin(parsed) |> should.equal(Error(Nil)) } + +pub fn merge_test() { + let Ok(a) = uri.parse("/relative") + let Ok(b) = uri.parse("") + uri.merge(a, b) + |> should.equal(Error(Nil)) + + let Ok(a) = uri.parse("http://google.com/foo") + let Ok(b) = uri.parse("http://example.com/baz") + uri.merge(a, b) + |> should.equal(uri.parse("http://example.com/baz")) + + let Ok(a) = uri.parse("http://google.com/foo") + let Ok(b) = uri.parse("http://example.com/.././bar/../../baz") + uri.merge(a, b) + |> should.equal(uri.parse("http://example.com/baz")) + + let Ok(a) = uri.parse("http://google.com/foo") + let Ok(b) = uri.parse("//example.com/baz") + uri.merge(a, b) + |> should.equal(uri.parse("http://example.com/baz")) + + let Ok(a) = uri.parse("http://google.com/foo") + let Ok(b) = uri.parse("//example.com/.././bar/../../../baz") + uri.merge(a, b) + |> should.equal(uri.parse("http://example.com/baz")) + + let Ok(a) = uri.parse("http://example.com/foo/bar") + let Ok(b) = uri.parse("/baz") + uri.merge(a, b) + |> should.equal(uri.parse("http://example.com/baz")) + + let Ok(a) = uri.parse("http://example.com/foo/bar") + let Ok(b) = uri.parse("baz") + uri.merge(a, b) + |> should.equal(uri.parse("http://example.com/foo/baz")) + + let Ok(a) = uri.parse("http://example.com/foo/") + let Ok(b) = uri.parse("baz") + uri.merge(a, b) + |> should.equal(uri.parse("http://example.com/foo/baz")) + + let Ok(a) = uri.parse("http://example.com") + let Ok(b) = uri.parse("baz") + uri.merge(a, b) + |> should.equal(uri.parse("http://example.com/baz")) + + let Ok(a) = uri.parse("http://example.com") + let Ok(b) = uri.parse("/.././bar/../../../baz") + uri.merge(a, b) + |> should.equal(uri.parse("http://example.com/baz")) + + let Ok(a) = uri.parse("http://example.com/foo/bar") + let Ok(b) = uri.parse("") + uri.merge(a, b) + |> should.equal(uri.parse("http://example.com/foo/bar")) + + let Ok(a) = uri.parse("http://example.com/foo/bar") + let Ok(b) = uri.parse("#fragment") + uri.merge(a, b) + |> should.equal(uri.parse("http://example.com/foo/bar#fragment")) + + let Ok(a) = uri.parse("http://example.com/foo/bar") + let Ok(b) = uri.parse("?query") + uri.merge(a, b) + |> should.equal(uri.parse("http://example.com/foo/bar?query")) + + let Ok(a) = uri.parse("http://example.com/foo/bar?query1") + let Ok(b) = uri.parse("?query2") + uri.merge(a, b) + |> should.equal(uri.parse("http://example.com/foo/bar?query2")) + + let Ok(a) = uri.parse("http://example.com/foo/bar?query") + let Ok(b) = uri.parse("") + uri.merge(a, b) + |> should.equal(uri.parse("http://example.com/foo/bar?query")) +} -- cgit v1.2.3