From 339f9d90d1fe001978d15e1c007a3861a7145453 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 2 Dec 2023 15:53:25 -0500 Subject: [WIP] Add support for converting literals to canonical form --- test/extra/canon/bad-boolean.ttl | 5 ++ test/extra/canon/bad-decimal-leading.ttl | 4 ++ test/extra/canon/bad-decimal-trailing.ttl | 4 ++ test/extra/canon/bad-empty-boolean.ttl | 5 ++ test/extra/canon/bad-integer-leading.ttl | 4 ++ test/extra/canon/bad-integer-trailing.ttl | 4 ++ test/extra/canon/bad-lang-long.ttl | 3 ++ test/extra/canon/manifest.ttl | 65 ++++++++++++++++++++++++++ test/extra/canon/test-canon.nt | 70 ++++++++++++++++++++++++++++ test/extra/canon/test-canon.ttl | 76 +++++++++++++++++++++++++++++++ 10 files changed, 240 insertions(+) create mode 100644 test/extra/canon/bad-boolean.ttl create mode 100644 test/extra/canon/bad-decimal-leading.ttl create mode 100644 test/extra/canon/bad-decimal-trailing.ttl create mode 100644 test/extra/canon/bad-empty-boolean.ttl create mode 100644 test/extra/canon/bad-integer-leading.ttl create mode 100644 test/extra/canon/bad-integer-trailing.ttl create mode 100644 test/extra/canon/bad-lang-long.ttl create mode 100644 test/extra/canon/manifest.ttl create mode 100644 test/extra/canon/test-canon.nt create mode 100644 test/extra/canon/test-canon.ttl (limited to 'test/extra') diff --git a/test/extra/canon/bad-boolean.ttl b/test/extra/canon/bad-boolean.ttl new file mode 100644 index 00000000..c4fc3eb5 --- /dev/null +++ b/test/extra/canon/bad-boolean.ttl @@ -0,0 +1,5 @@ +@base . +@prefix xsd: . + +[] " ja "^^xsd:boolean . + diff --git a/test/extra/canon/bad-decimal-leading.ttl b/test/extra/canon/bad-decimal-leading.ttl new file mode 100644 index 00000000..0d18eac7 --- /dev/null +++ b/test/extra/canon/bad-decimal-leading.ttl @@ -0,0 +1,4 @@ +@base . +@prefix xsd: . + +[] " junk 1234.5678 "^^xsd:decimal . diff --git a/test/extra/canon/bad-decimal-trailing.ttl b/test/extra/canon/bad-decimal-trailing.ttl new file mode 100644 index 00000000..10882ef5 --- /dev/null +++ b/test/extra/canon/bad-decimal-trailing.ttl @@ -0,0 +1,4 @@ +@base . +@prefix xsd: . + +[] " 1234.5678 junk "^^xsd:decimal . diff --git a/test/extra/canon/bad-empty-boolean.ttl b/test/extra/canon/bad-empty-boolean.ttl new file mode 100644 index 00000000..9a390c46 --- /dev/null +++ b/test/extra/canon/bad-empty-boolean.ttl @@ -0,0 +1,5 @@ +@base . +@prefix xsd: . + +[] ""^^xsd:boolean . + diff --git a/test/extra/canon/bad-integer-leading.ttl b/test/extra/canon/bad-integer-leading.ttl new file mode 100644 index 00000000..80c1a6af --- /dev/null +++ b/test/extra/canon/bad-integer-leading.ttl @@ -0,0 +1,4 @@ +@base . +@prefix xsd: . + +[] " junk 987654321 "^^xsd:integer . diff --git a/test/extra/canon/bad-integer-trailing.ttl b/test/extra/canon/bad-integer-trailing.ttl new file mode 100644 index 00000000..a94a9ec4 --- /dev/null +++ b/test/extra/canon/bad-integer-trailing.ttl @@ -0,0 +1,4 @@ +@base . +@prefix xsd: . + +[] " 987654321 junk "^^xsd:integer . diff --git a/test/extra/canon/bad-lang-long.ttl b/test/extra/canon/bad-lang-long.ttl new file mode 100644 index 00000000..f84df07f --- /dev/null +++ b/test/extra/canon/bad-lang-long.ttl @@ -0,0 +1,3 @@ +@base . + +[] "hello"@ridiculously-long-lang-tag-beyond-even-RFC4646-recommendation . diff --git a/test/extra/canon/manifest.ttl b/test/extra/canon/manifest.ttl new file mode 100644 index 00000000..143928ee --- /dev/null +++ b/test/extra/canon/manifest.ttl @@ -0,0 +1,65 @@ +@prefix mf: . +@prefix rdfs: . +@prefix rdft: . + +<> + a mf:Manifest ; + rdfs:comment "Serd canonical literal writing test suite" ; + mf:entries ( + <#bad-boolean> + <#bad-decimal-leading> + <#bad-decimal-trailing> + <#bad-empty-boolean> + <#bad-integer-leading> + <#bad-integer-trailing> + <#bad-lang-long> + <#test-canon> + ) . + +<#bad-boolean> + a rdft:TestTurtleNegativeEval ; + rdfs:comment "Invalid xsd::boolean syntax" ; + mf:action ; + mf:name "bad-boolean" . + +<#bad-decimal-leading> + a rdft:TestTurtleNegativeEval ; + rdfs:comment "Invalid xsd::decimal syntax (leading garbage)" ; + mf:action ; + mf:name "bad-decimal-leading" . + +<#bad-decimal-trailing> + a rdft:TestTurtleNegativeEval ; + rdfs:comment "Invalid xsd::decimal syntax (trailing garbage)" ; + mf:action ; + mf:name "bad-decimal-trailing" . + +<#bad-empty-boolean> + a rdft:TestTurtleNegativeEval ; + rdfs:comment "Invalid xsd::boolean syntax (no value)" ; + mf:action ; + mf:name "bad-empty-boolean" . + +<#bad-integer-leading> + a rdft:TestTurtleNegativeEval ; + rdfs:comment "Invalid xsd::integer syntax (leading garbage)" ; + mf:action ; + mf:name "bad-integer-leading" . + +<#bad-integer-trailing> + a rdft:TestTurtleNegativeEval ; + rdfs:comment "Invalid xsd::integer syntax (trailing garbage)" ; + mf:action ; + mf:name "bad-integer-trailing" . + +<#bad-lang-long> + a rdft:TestTurtleNegativeEval ; + rdfs:comment "Overly long language tag" ; + mf:action ; + mf:name "bad-lang-long" . + +<#test-canon> + a rdft:TestTurtleEval ; + mf:action ; + mf:name "test-canon" ; + mf:result . diff --git a/test/extra/canon/test-canon.nt b/test/extra/canon/test-canon.nt new file mode 100644 index 00000000..ff492890 --- /dev/null +++ b/test/extra/canon/test-canon.nt @@ -0,0 +1,70 @@ +_:b1 "false"^^ . +_:b1 "false"^^ . +_:b1 "true"^^ . +_:b1 "true"^^ . +_:b1 "1.0E2"^^ . +_:b1 "-1.0E2"^^ . +_:b1 "1.0E3"^^ . +_:b1 "-1.0E3"^^ . +_:b1 "9223372036854775807"^^ . +_:b1 "-9223372036854775808"^^ . +_:b1 "2147483647"^^ . +_:b1 "-2147483648"^^ . +_:b1 "32767"^^ . +_:b1 "-32768"^^ . +_:b1 "127"^^ . +_:b1 "-128"^^ . +_:b1 "1"^^ . +_:b1 "18446744073709551615"^^ . +_:b1 "1"^^ . +_:b1 "4294967295"^^ . +_:b1 "1"^^ . +_:b1 "65535"^^ . +_:b1 "1"^^ . +_:b1 "255"^^ . +_:b1 "0.0"^^ . +_:b1 "0.0"^^ . +_:b1 "-0.0"^^ . +_:b1 "36893488147419103232.0"^^ . +_:b1 "36893488147419103232.0"^^ . +_:b1 "36893488147419103232.0"^^ . +_:b1 "36893488147419103232.0"^^ . +_:b1 "36893488147419103232.0"^^ . +_:b1 "36893488147419103232.0"^^ . +_:b1 "36893488147419103232.123"^^ . +_:b1 "-36893488147419103232.0"^^ . +_:b1 "-36893488147419103232.0"^^ . +_:b1 "-36893488147419103232.0"^^ . +_:b1 "-36893488147419103232.0"^^ . +_:b1 "-36893488147419103232.123"^^ . +_:b1 "0.123"^^ . +_:b1 "0.123"^^ . +_:b1 "0.123"^^ . +_:b1 "0.123"^^ . +_:b1 "-0.123"^^ . +_:b1 "-0.123"^^ . +_:b1 "36893488147419103232"^^ . +_:b1 "36893488147419103232"^^ . +_:b1 "36893488147419103232"^^ . +_:b1 "36893488147419103232"^^ . +_:b1 "-36893488147419103232"^^ . +_:b1 "-36893488147419103232"^^ . +_:b1 "0"^^ . +_:b1 "-36893488147419103232"^^ . +_:b1 "-1"^^ . +_:b1 "-36893488147419103232"^^ . +_:b1 "0"^^ . +_:b1 "36893488147419103232"^^ . +_:b1 "1"^^ . +_:b1 "36893488147419103232"^^ . +_:b1 "no language tag" . +_:b1 "english"@en-ca . +_:b1 "P1Y6M"^^ . +_:b1 "12:15:01Z"^^ . +_:b1 "2004-04-12Z"^^ . +_:b1 "A1B7F080"^^ . +_:b1 "Zm9vYmF="^^ . +_:b1 "untyped" . +_:b1 . +_:b1 "notxsd"^^ . +_:b1 "unsupported"^^ . diff --git a/test/extra/canon/test-canon.ttl b/test/extra/canon/test-canon.ttl new file mode 100644 index 00000000..0d0b4682 --- /dev/null +++ b/test/extra/canon/test-canon.ttl @@ -0,0 +1,76 @@ +@base . +@prefix rdf: . +@prefix xsd: . + +[ + " false "^^xsd:boolean , + " 0 "^^xsd:boolean , + " true "^^xsd:boolean , + " 1 "^^xsd:boolean ; + " +0100.0 "^^xsd:float , + " -0100.0 "^^xsd:float , + " +01000.0 "^^xsd:double , + " -01000.0 "^^xsd:double ; + " +09223372036854775807 "^^xsd:long , + " -09223372036854775808 "^^xsd:long , + " +02147483647 "^^xsd:int , + " -02147483648 "^^xsd:int , + " +032767 "^^xsd:short , + " -032768 "^^xsd:short , + " +0127 "^^xsd:byte , + " -0128 "^^xsd:byte , + " 01 "^^xsd:unsignedLong , + " 018446744073709551615 "^^xsd:unsignedLong , + " 01 "^^xsd:unsignedInt , + " 04294967295 "^^xsd:unsignedInt , + " 01 "^^xsd:unsignedShort , + " 065535 "^^xsd:unsignedShort , + " 01 "^^xsd:unsignedByte , + " 0255 "^^xsd:unsignedByte ; + " 00 "^^xsd:decimal , + " +0 "^^xsd:decimal , + " -0 "^^xsd:decimal , + " 36893488147419103232 "^^xsd:decimal , + " 0036893488147419103232 "^^xsd:decimal , + " +36893488147419103232 "^^xsd:decimal , + " +0036893488147419103232 "^^xsd:decimal , + " +0036893488147419103232. "^^xsd:decimal , + " +0036893488147419103232.00 "^^xsd:decimal , + " +0036893488147419103232.12300 "^^xsd:decimal , + " -36893488147419103232 "^^xsd:decimal , + " -0036893488147419103232 "^^xsd:decimal , + " -0036893488147419103232. "^^xsd:decimal , + " -0036893488147419103232.00 "^^xsd:decimal , + " -0036893488147419103232.12300 "^^xsd:decimal , + " 00.12300 "^^xsd:decimal , + " .12300 "^^xsd:decimal , + " +.12300 "^^xsd:decimal , + " +00.12300 "^^xsd:decimal , + " -.12300 "^^xsd:decimal , + " -00.12300 "^^xsd:decimal ; + " 36893488147419103232 "^^xsd:integer , + " 0036893488147419103232 "^^xsd:integer , + " +36893488147419103232 "^^xsd:integer , + " +0036893488147419103232 "^^xsd:integer , + " -36893488147419103232 "^^xsd:integer , + " -0036893488147419103232 "^^xsd:integer , + " 00 "^^xsd:nonPositiveInteger , + " -036893488147419103232 "^^xsd:nonPositiveInteger , + " -01 "^^xsd:negativeInteger , + " -036893488147419103232 "^^xsd:negativeInteger , + " 00 "^^xsd:nonNegativeInteger , + " 036893488147419103232 "^^xsd:nonNegativeInteger , + " +01 "^^xsd:positiveInteger , + " 036893488147419103232 "^^xsd:positiveInteger ; + "no language tag"^^rdf:langString ; + "english"@EN-CA ; +