106 lines
2.6 KiB
Gleam
106 lines
2.6 KiB
Gleam
import gleam/string
|
||
import gleeunit
|
||
import gleeunit/should
|
||
import glentities
|
||
import glentities/internal/string_utils
|
||
|
||
pub fn main() {
|
||
gleeunit.main()
|
||
}
|
||
|
||
pub fn decode_test() {
|
||
let input =
|
||
"This & 'string' contains 👀 many ꙮ "encoded" characters. ☃"
|
||
|
||
should.equal(
|
||
glentities.decode(input),
|
||
"This & 'string' contains 👀 many ꙮ \"encoded\" characters. ☃",
|
||
)
|
||
}
|
||
|
||
pub fn encode_named_test() {
|
||
let input =
|
||
"This & 'string' contains many Θ \"encoded\" characters. ☃"
|
||
|
||
should.equal(
|
||
glentities.encode(input, glentities.Named),
|
||
"This &amp 'string' contains    many Θ "encoded" characters. ☃",
|
||
)
|
||
}
|
||
|
||
pub fn encode_hex_test() {
|
||
let input =
|
||
"This & 'string' contains many Θ \"encoded\" characters. ☃"
|
||
|
||
should.equal(
|
||
glentities.encode(input, glentities.Hex),
|
||
"This &amp 'string' contains    many Θ "encoded" characters. ☃",
|
||
)
|
||
}
|
||
|
||
pub fn encode_html_body_test() {
|
||
let input =
|
||
"This & 'string' contains many Θ \"encoded\" <characters>. ☃"
|
||
|
||
should.equal(
|
||
glentities.encode(input, glentities.HTMLBody),
|
||
"This &amp 'string' contains many Θ "encoded" <characters>. ☃",
|
||
)
|
||
}
|
||
|
||
pub fn roundtrip_named_test() {
|
||
let input =
|
||
string_utils.normalise(
|
||
"Ἰοὺ ἰού· τὰ πάντʼ ἂν ἐξήκοι σαφῆ. ஸ்றீனிவாஸ ராமானுஜன் ஐயங்கார் A ∩ B = { c : c ∈ A, c ∈ B }",
|
||
)
|
||
|
||
should.equal(
|
||
input
|
||
|> glentities.encode(glentities.Named)
|
||
|> glentities.decode(),
|
||
input,
|
||
)
|
||
}
|
||
|
||
pub fn roundtrip_hex_test() {
|
||
let input =
|
||
string_utils.normalise(
|
||
"Ἰοὺ ἰού· τὰ πάντʼ ἂν ἐξήκοι σαφῆ. ஸ்றீனிவாஸ ராமானுஜன் ஐயங்கார் A ∩ B = { c : c ∈ A, c ∈ B }",
|
||
)
|
||
|
||
should.equal(
|
||
input
|
||
|> glentities.encode(glentities.Hex)
|
||
|> glentities.decode(),
|
||
input,
|
||
)
|
||
}
|
||
|
||
pub fn tco_test() {
|
||
let input =
|
||
string.repeat(
|
||
"I will never try to be clever in tail call recursive languages again",
|
||
100,
|
||
)
|
||
|
||
should.equal(
|
||
input
|
||
|> glentities.encode(glentities.Hex)
|
||
|> glentities.decode(),
|
||
input,
|
||
)
|
||
|
||
should.equal(
|
||
input
|
||
|> glentities.encode(glentities.Named)
|
||
|> glentities.decode(),
|
||
input,
|
||
)
|
||
|
||
should.equal(
|
||
input
|
||
|> glentities.encode(glentities.HTMLBody)
|
||
|> glentities.decode(),
|
||
input,
|
||
)
|
||
}
|