feat: query_to_string and parse_query with tests
This commit is contained in:
@@ -341,7 +341,7 @@ pub fn parse_path_tests() {
|
||||
])
|
||||
}
|
||||
|
||||
pub fn parse_query_tests() {
|
||||
pub fn parse_query_part_tests() {
|
||||
describe("query parsing", [
|
||||
it("simple parse", fn() {
|
||||
uri.parse("foo:?name=ferret")
|
||||
@@ -553,7 +553,7 @@ pub fn parse_fragment_tests() {
|
||||
])
|
||||
}
|
||||
|
||||
fn parse_special_tests() {
|
||||
pub fn parse_special_tests() {
|
||||
describe("special parsing", [
|
||||
it("special 1", fn() {
|
||||
uri.parse("//?")
|
||||
@@ -731,9 +731,9 @@ fn parse_special_tests() {
|
||||
uri.parse("#")
|
||||
|> should.equal(Ok(Uri(..types.empty_uri, path: "", fragment: Some(""))))
|
||||
uri.parse("##")
|
||||
|> should.equal(Ok(Uri(..types.empty_uri, path: "", fragment: Some("#"))))
|
||||
|> should.be_error
|
||||
uri.parse("###")
|
||||
|> should.equal(Ok(Uri(..types.empty_uri, path: "", fragment: Some("##"))))
|
||||
|> should.be_error
|
||||
}),
|
||||
it("special 2", fn() {
|
||||
uri.parse("a://:1/")
|
||||
@@ -781,9 +781,7 @@ fn parse_special_tests() {
|
||||
Uri(..types.empty_uri, host: Some("localhost"), path: "/"),
|
||||
))
|
||||
uri.parse("//:")
|
||||
|> should.equal(Ok(
|
||||
Uri(..types.empty_uri, host: Some("localhost"), path: ""),
|
||||
))
|
||||
|> should.equal(Ok(Uri(..types.empty_uri, host: Some(""), path: "")))
|
||||
}),
|
||||
])
|
||||
}
|
||||
@@ -1157,29 +1155,6 @@ pub fn equivalence_tests() {
|
||||
])
|
||||
}
|
||||
|
||||
pub fn percent_encode_tests() {
|
||||
describe("percent encoding", [
|
||||
it("encoding", fn() {
|
||||
percent_codec_fixtures
|
||||
|> list.map(fn(t) {
|
||||
let #(a, b) = t
|
||||
uri.percent_encode(a)
|
||||
|> should.equal(b)
|
||||
})
|
||||
Nil
|
||||
}),
|
||||
it("decoding", fn() {
|
||||
percent_codec_fixtures
|
||||
|> list.map(fn(t) {
|
||||
let #(a, b) = t
|
||||
uri.percent_decode(b)
|
||||
|> should.equal(Ok(a))
|
||||
})
|
||||
Nil
|
||||
}),
|
||||
])
|
||||
}
|
||||
|
||||
const percent_codec_fixtures = [
|
||||
#(" ", "%20"),
|
||||
#(",", "%2C"),
|
||||
@@ -1206,6 +1181,85 @@ const percent_codec_fixtures = [
|
||||
#("+", "+"),
|
||||
#("100% great+fun", "100%25%20great+fun"),
|
||||
]
|
||||
|
||||
pub fn percent_encode_tests() {
|
||||
describe("percent encoding", [
|
||||
it("encoding", fn() {
|
||||
percent_codec_fixtures
|
||||
|> list.map(fn(t) {
|
||||
let #(a, b) = t
|
||||
uri.percent_encode(a)
|
||||
|> should.equal(b)
|
||||
})
|
||||
Nil
|
||||
}),
|
||||
it("decoding", fn() {
|
||||
percent_codec_fixtures
|
||||
|> list.map(fn(t) {
|
||||
let #(a, b) = t
|
||||
uri.percent_decode(b)
|
||||
|> should.equal(Ok(a))
|
||||
})
|
||||
Nil
|
||||
}),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn parse_query_tests() {
|
||||
describe("parse_query", [
|
||||
it("basic parse", fn() {
|
||||
uri.parse_query("el1=123&el2=321")
|
||||
|> should.be_ok
|
||||
|> should.equal([#("el1", "123"), #("el2", "321")])
|
||||
uri.parse_query("el%201=123&el+2=321")
|
||||
|> should.be_ok
|
||||
|> should.equal([#("el 1", "123"), #("el 2", "321")])
|
||||
uri.parse_query("el%E2%82%AC1=12%CE%A33&el%F0%90%80%852=321")
|
||||
|> should.be_ok
|
||||
|> should.equal([#("el€1", "12Σ3"), #("el𐀅2", "321")])
|
||||
}),
|
||||
it("empty parts", fn() {
|
||||
uri.parse_query("el1=123&&el2=321")
|
||||
|> should.be_ok
|
||||
|> should.equal([#("el1", "123"), #("el2", "321")])
|
||||
uri.parse_query("el1=&el2=")
|
||||
|> should.be_ok
|
||||
|> should.equal([#("el1", ""), #("el2", "")])
|
||||
uri.parse_query("")
|
||||
|> should.be_ok
|
||||
|> should.equal([])
|
||||
uri.parse_query("=123&el2=321")
|
||||
|> should.be_ok
|
||||
|> should.equal([#("", "123"), #("el2", "321")])
|
||||
uri.parse_query("=&el2=321")
|
||||
|> should.be_ok
|
||||
|> should.equal([#("", ""), #("el2", "321")])
|
||||
}),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn query_to_string_tests() {
|
||||
describe("query_to_string", [
|
||||
it("basic query", fn() {
|
||||
uri.query_to_string([#("el1", "123"), #("el2", "321")])
|
||||
|> should.equal("el1=123&el2=321")
|
||||
uri.query_to_string([#("el 1", "123"), #("el 2", "321")])
|
||||
|> should.equal("el%201=123&el%202=321")
|
||||
uri.query_to_string([#("el€1", "12Σ3"), #("el𐀅2", "321")])
|
||||
|> should.equal("el%E2%82%AC1=12%CE%A33&el%F0%90%80%852=321")
|
||||
}),
|
||||
it("empty parts", fn() {
|
||||
uri.query_to_string([#("el1", ""), #("el2", "")])
|
||||
|> should.equal("el1=&el2=")
|
||||
uri.query_to_string([])
|
||||
|> should.equal("")
|
||||
uri.query_to_string([#("", "123"), #("el2", "321")])
|
||||
|> should.equal("=123&el2=321")
|
||||
uri.query_to_string([#("", ""), #("el2", "321")])
|
||||
|> should.equal("=&el2=321")
|
||||
}),
|
||||
])
|
||||
}
|
||||
// gleeunit test functions end in `_test`
|
||||
// pub fn uri_test() {
|
||||
// match("uri:")
|
||||
|
||||
Reference in New Issue
Block a user