improve turi.nim tests: js, vm; merge tdecodequery.nim (#16500)
* improve turi tests: js, vm; merge tdecodequery.nim * improve test * add test in js, improve test * remove matrix: "--styleCheck:hint --panics:on" * fixup
This commit is contained in:
parent
c9886a4952
commit
fc1a4faf56
2 changed files with 169 additions and 182 deletions
|
|
@ -1,7 +0,0 @@
|
||||||
import std/[uri, sequtils]
|
|
||||||
|
|
||||||
|
|
||||||
block:
|
|
||||||
doAssert toSeq(decodeQuery("a=1&b=0")) == @[("a", "1"), ("b", "0")]
|
|
||||||
doAssertRaises(UriParseError):
|
|
||||||
discard toSeq(decodeQuery("a=1&b=2c=6"))
|
|
||||||
|
|
@ -1,24 +1,14 @@
|
||||||
discard """
|
discard """
|
||||||
cmd: "nim c -r --styleCheck:hint --panics:on $options $file"
|
targets: "c js"
|
||||||
targets: "c"
|
joinable: false # because of `include uri`
|
||||||
nimout: ""
|
|
||||||
action: "run"
|
|
||||||
exitcode: 0
|
|
||||||
timeout: 60.0
|
|
||||||
"""
|
"""
|
||||||
include uri
|
|
||||||
|
|
||||||
|
# import std/uri # pending https://github.com/nim-lang/Nim/pull/11865
|
||||||
|
include uri # because of `removeDotSegments`
|
||||||
|
from std/sequtils import toSeq
|
||||||
|
|
||||||
block:
|
template main() =
|
||||||
let org = "udp://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:8080"
|
block: # encodeUrl, decodeUrl
|
||||||
let url = parseUri(org)
|
|
||||||
doAssert url.hostname == "2001:0db8:85a3:0000:0000:8a2e:0370:7334" # true
|
|
||||||
let newUrl = parseUri($url)
|
|
||||||
doAssert newUrl.hostname == "2001:0db8:85a3:0000:0000:8a2e:0370:7334" # true
|
|
||||||
|
|
||||||
|
|
||||||
block:
|
|
||||||
block:
|
|
||||||
const test1 = "abc\L+def xyz"
|
const test1 = "abc\L+def xyz"
|
||||||
doAssert encodeUrl(test1) == "abc%0A%2Bdef+xyz"
|
doAssert encodeUrl(test1) == "abc%0A%2Bdef+xyz"
|
||||||
doAssert decodeUrl(encodeUrl(test1)) == test1
|
doAssert decodeUrl(encodeUrl(test1)) == test1
|
||||||
|
|
@ -26,6 +16,14 @@ block:
|
||||||
doAssert decodeUrl(encodeUrl(test1, false), false) == test1
|
doAssert decodeUrl(encodeUrl(test1, false), false) == test1
|
||||||
doAssert decodeUrl(encodeUrl(test1)) == test1
|
doAssert decodeUrl(encodeUrl(test1)) == test1
|
||||||
|
|
||||||
|
block: # parseUri
|
||||||
|
block:
|
||||||
|
let org = "udp://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:8080"
|
||||||
|
let url = parseUri(org)
|
||||||
|
doAssert url.hostname == "2001:0db8:85a3:0000:0000:8a2e:0370:7334" # true
|
||||||
|
let newUrl = parseUri($url)
|
||||||
|
doAssert newUrl.hostname == "2001:0db8:85a3:0000:0000:8a2e:0370:7334" # true
|
||||||
|
|
||||||
block:
|
block:
|
||||||
let str = "http://localhost"
|
let str = "http://localhost"
|
||||||
let test = parseUri(str)
|
let test = parseUri(str)
|
||||||
|
|
@ -126,11 +124,7 @@ block:
|
||||||
doAssert test.port == ""
|
doAssert test.port == ""
|
||||||
doAssert test.path == "/foo/bar/baz.txt"
|
doAssert test.path == "/foo/bar/baz.txt"
|
||||||
|
|
||||||
# Remove dot segments tests
|
block: # combine
|
||||||
block:
|
|
||||||
doAssert removeDotSegments("/foo/bar/baz") == "/foo/bar/baz"
|
|
||||||
|
|
||||||
# Combine tests
|
|
||||||
block:
|
block:
|
||||||
let concat = combine(parseUri("http://google.com/foo/bar/"), parseUri("baz"))
|
let concat = combine(parseUri("http://google.com/foo/bar/"), parseUri("baz"))
|
||||||
doAssert concat.path == "/foo/bar/baz"
|
doAssert concat.path == "/foo/bar/baz"
|
||||||
|
|
@ -168,7 +162,7 @@ block:
|
||||||
parseUri("baz"))
|
parseUri("baz"))
|
||||||
doAssert concat.path == "/foo/test/bar/baz"
|
doAssert concat.path == "/foo/test/bar/baz"
|
||||||
|
|
||||||
# `/` tests
|
block: # `/`
|
||||||
block:
|
block:
|
||||||
let test = parseUri("http://example.com/foo") / "bar/asd"
|
let test = parseUri("http://example.com/foo") / "bar/asd"
|
||||||
doAssert test.path == "/foo/bar/asd"
|
doAssert test.path == "/foo/bar/asd"
|
||||||
|
|
@ -177,27 +171,22 @@ block:
|
||||||
let test = parseUri("http://example.com/foo/") / "/bar/asd"
|
let test = parseUri("http://example.com/foo/") / "/bar/asd"
|
||||||
doAssert test.path == "/foo/bar/asd"
|
doAssert test.path == "/foo/bar/asd"
|
||||||
|
|
||||||
# removeDotSegments tests
|
block: # removeDotSegments
|
||||||
block:
|
doAssert removeDotSegments("/foo/bar/baz") == "/foo/bar/baz"
|
||||||
# empty test
|
doAssert removeDotSegments("") == "" # empty test
|
||||||
doAssert removeDotSegments("") == ""
|
|
||||||
|
|
||||||
# bug #3207
|
block: # bug #3207
|
||||||
block:
|
|
||||||
doAssert parseUri("http://qq/1").combine(parseUri("https://qqq")).`$` == "https://qqq"
|
doAssert parseUri("http://qq/1").combine(parseUri("https://qqq")).`$` == "https://qqq"
|
||||||
|
|
||||||
# bug #4959
|
block: # bug #4959
|
||||||
block:
|
|
||||||
let foo = parseUri("http://example.com") / "/baz"
|
let foo = parseUri("http://example.com") / "/baz"
|
||||||
doAssert foo.path == "/baz"
|
doAssert foo.path == "/baz"
|
||||||
|
|
||||||
# bug found on stream 13/10/17
|
block: # bug found on stream 13/10/17
|
||||||
block:
|
|
||||||
let foo = parseUri("http://localhost:9515") / "status"
|
let foo = parseUri("http://localhost:9515") / "status"
|
||||||
doAssert $foo == "http://localhost:9515/status"
|
doAssert $foo == "http://localhost:9515/status"
|
||||||
|
|
||||||
# bug #6649 #6652
|
block: # bug #6649 #6652
|
||||||
block:
|
|
||||||
var foo = parseUri("http://example.com")
|
var foo = parseUri("http://example.com")
|
||||||
foo.hostname = "example.com"
|
foo.hostname = "example.com"
|
||||||
foo.path = "baz"
|
foo.path = "baz"
|
||||||
|
|
@ -224,8 +213,7 @@ block:
|
||||||
foo.path = "relative"
|
foo.path = "relative"
|
||||||
doAssert $foo == "file:relative"
|
doAssert $foo == "file:relative"
|
||||||
|
|
||||||
# isAbsolute tests
|
block: # isAbsolute tests
|
||||||
block:
|
|
||||||
doAssert "www.google.com".parseUri().isAbsolute() == false
|
doAssert "www.google.com".parseUri().isAbsolute() == false
|
||||||
doAssert "http://www.google.com".parseUri().isAbsolute() == true
|
doAssert "http://www.google.com".parseUri().isAbsolute() == true
|
||||||
doAssert "file:/dir/file".parseUri().isAbsolute() == true
|
doAssert "file:/dir/file".parseUri().isAbsolute() == true
|
||||||
|
|
@ -265,8 +253,7 @@ block:
|
||||||
doAssert "https://example.com/about/staff.html?".parseUri().isAbsolute == true
|
doAssert "https://example.com/about/staff.html?".parseUri().isAbsolute == true
|
||||||
doAssert "https://example.com/about/staff.html?parameters".parseUri().isAbsolute == true
|
doAssert "https://example.com/about/staff.html?parameters".parseUri().isAbsolute == true
|
||||||
|
|
||||||
# encodeQuery tests
|
block: # encodeQuery tests
|
||||||
block:
|
|
||||||
doAssert encodeQuery({:}) == ""
|
doAssert encodeQuery({:}) == ""
|
||||||
doAssert encodeQuery({"foo": "bar"}) == "foo=bar"
|
doAssert encodeQuery({"foo": "bar"}) == "foo=bar"
|
||||||
doAssert encodeQuery({"foo": "bar & baz"}) == "foo=bar+%26+baz"
|
doAssert encodeQuery({"foo": "bar & baz"}) == "foo=bar+%26+baz"
|
||||||
|
|
@ -276,17 +263,17 @@ block:
|
||||||
doAssert encodeQuery({"a": "1", "b": "", "c": "3"}) == "a=1&b&c=3"
|
doAssert encodeQuery({"a": "1", "b": "", "c": "3"}) == "a=1&b&c=3"
|
||||||
doAssert encodeQuery({"a": "1", "b": "", "c": "3"}, omitEq = false) == "a=1&b=&c=3"
|
doAssert encodeQuery({"a": "1", "b": "", "c": "3"}, omitEq = false) == "a=1&b=&c=3"
|
||||||
|
|
||||||
|
block: # `?`
|
||||||
block:
|
block:
|
||||||
var foo = parseUri("http://example.com") / "foo" ? {"bar": "1", "baz": "qux"}
|
var foo = parseUri("http://example.com") / "foo" ? {"bar": "1", "baz": "qux"}
|
||||||
var foo1 = parseUri("http://example.com/foo?bar=1&baz=qux")
|
var foo1 = parseUri("http://example.com/foo?bar=1&baz=qux")
|
||||||
doAssert foo == foo1
|
doAssert foo == foo1
|
||||||
|
|
||||||
block:
|
block:
|
||||||
var foo = parseUri("http://example.com") / "foo" ? {"do": "do", "bar": ""}
|
var foo = parseUri("http://example.com") / "foo" ? {"do": "do", "bar": ""}
|
||||||
var foo1 = parseUri("http://example.com/foo?do=do&bar")
|
var foo1 = parseUri("http://example.com/foo?do=do&bar")
|
||||||
doAssert foo == foo1
|
doAssert foo == foo1
|
||||||
|
|
||||||
block dataUriBase64:
|
block: # getDataUri, dataUriBase64
|
||||||
doAssert getDataUri("", "text/plain") == "data:text/plain;charset=utf-8;base64,"
|
doAssert getDataUri("", "text/plain") == "data:text/plain;charset=utf-8;base64,"
|
||||||
doAssert getDataUri(" ", "text/plain") == "data:text/plain;charset=utf-8;base64,IA=="
|
doAssert getDataUri(" ", "text/plain") == "data:text/plain;charset=utf-8;base64,IA=="
|
||||||
doAssert getDataUri("c\xf7>", "text/plain") == "data:text/plain;charset=utf-8;base64,Y/c+"
|
doAssert getDataUri("c\xf7>", "text/plain") == "data:text/plain;charset=utf-8;base64,Y/c+"
|
||||||
|
|
@ -295,6 +282,13 @@ block:
|
||||||
doAssert getDataUri("""!@#$%^&*()_+""", "text/plain") == "data:text/plain;charset=utf-8;base64,IUAjJCVeJiooKV8r"
|
doAssert getDataUri("""!@#$%^&*()_+""", "text/plain") == "data:text/plain;charset=utf-8;base64,IUAjJCVeJiooKV8r"
|
||||||
doAssert(getDataUri("the quick brown dog jumps over the lazy fox", "text/plain") ==
|
doAssert(getDataUri("the quick brown dog jumps over the lazy fox", "text/plain") ==
|
||||||
"data:text/plain;charset=utf-8;base64,dGhlIHF1aWNrIGJyb3duIGRvZyBqdW1wcyBvdmVyIHRoZSBsYXp5IGZveA==")
|
"data:text/plain;charset=utf-8;base64,dGhlIHF1aWNrIGJyb3duIGRvZyBqdW1wcyBvdmVyIHRoZSBsYXp5IGZveA==")
|
||||||
doAssert(getDataUri("""The present is theirs
|
doAssert(getDataUri("The present is theirs\n The future, for which I really worked, is mine.", "text/plain") ==
|
||||||
The future, for which I really worked, is mine.""", "text/plain") ==
|
|
||||||
"data:text/plain;charset=utf-8;base64,VGhlIHByZXNlbnQgaXMgdGhlaXJzCiAgICAgIFRoZSBmdXR1cmUsIGZvciB3aGljaCBJIHJlYWxseSB3b3JrZWQsIGlzIG1pbmUu")
|
"data:text/plain;charset=utf-8;base64,VGhlIHByZXNlbnQgaXMgdGhlaXJzCiAgICAgIFRoZSBmdXR1cmUsIGZvciB3aGljaCBJIHJlYWxseSB3b3JrZWQsIGlzIG1pbmUu")
|
||||||
|
|
||||||
|
block: # decodeQuery
|
||||||
|
doAssert toSeq(decodeQuery("a=1&b=0")) == @[("a", "1"), ("b", "0")]
|
||||||
|
doAssertRaises(UriParseError):
|
||||||
|
discard toSeq(decodeQuery("a=1&b=2c=6"))
|
||||||
|
|
||||||
|
static: main()
|
||||||
|
main()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue