5819eec0cf
It turned out that the costs of separating the XSD datatypes are too high and probably not worth the effort, since with its limited scope probably nobody would want to use XSD.ex outside of the RDF.ex context anyway.
105 lines
3.1 KiB
Elixir
105 lines
3.1 KiB
Elixir
defmodule RDF.StatementTest do
|
|
use RDF.Test.Case
|
|
|
|
doctest RDF.Statement
|
|
|
|
describe "valid?/1" do
|
|
@iri ~I<http://example.com/Foo>
|
|
@bnode ~B<foo>
|
|
@valid_literal ~L"foo"
|
|
@invalid_literal XSD.integer("foo")
|
|
|
|
@valid_triples [
|
|
{@iri, @iri, @iri},
|
|
{@bnode, @iri, @iri},
|
|
{@iri, @iri, @bnode},
|
|
{@bnode, @iri, @bnode},
|
|
{@iri, @iri, @valid_literal},
|
|
{@bnode, @iri, @valid_literal},
|
|
{@iri, @iri, @invalid_literal},
|
|
{@bnode, @iri, @invalid_literal},
|
|
]
|
|
|
|
@valid_quads [
|
|
{@iri, @iri, @iri , @iri},
|
|
{@bnode, @iri, @iri , @iri},
|
|
{@iri, @iri, @bnode , @iri},
|
|
{@bnode, @iri, @bnode , @iri},
|
|
{@iri, @iri, @valid_literal , @iri},
|
|
{@bnode, @iri, @valid_literal , @iri},
|
|
{@iri, @iri, @invalid_literal, @iri},
|
|
{@bnode, @iri, @invalid_literal, @iri},
|
|
]
|
|
|
|
test "valid triples" do
|
|
Enum.each @valid_triples, fn argument ->
|
|
assert RDF.Statement.valid?(argument) == true
|
|
assert RDF.Triple.valid?(argument) == true
|
|
refute RDF.Quad.valid?(argument)
|
|
end
|
|
end
|
|
|
|
test "valid quads" do
|
|
Enum.each @valid_quads, fn argument ->
|
|
assert RDF.Statement.valid?(argument) == true
|
|
assert RDF.Quad.valid?(argument) == true
|
|
refute RDF.Triple.valid?(argument)
|
|
end
|
|
end
|
|
|
|
test "with invalid triples" do
|
|
[
|
|
{@iri, @bnode, @iri},
|
|
{@valid_literal, @iri, @iri},
|
|
{@iri, @valid_literal, @iri},
|
|
]
|
|
|> Enum.each(fn argument ->
|
|
assert RDF.Statement.valid?(argument) == false
|
|
assert RDF.Triple.valid?(argument) == false
|
|
assert RDF.Quad.valid?(argument) == false
|
|
end)
|
|
end
|
|
|
|
test "with invalid quads" do
|
|
[
|
|
{@iri, @bnode, @iri, @iri},
|
|
{@iri, @iri, @iri, @bnode},
|
|
{@valid_literal, @iri, @iri, @iri},
|
|
{@iri, @valid_literal, @iri, @iri},
|
|
{@iri, @iri , @iri, @valid_literal},
|
|
]
|
|
|> Enum.each(fn argument ->
|
|
assert RDF.Statement.valid?(argument) == false
|
|
assert RDF.Triple.valid?(argument) == false
|
|
assert RDF.Quad.valid?(argument) == false
|
|
end)
|
|
end
|
|
|
|
test "with invalid statements by number of elements" do
|
|
refute RDF.Statement.valid?({@iri, @iri})
|
|
refute RDF.Triple.valid?({@iri, @iri})
|
|
refute RDF.Quad.valid?({@iri, @iri})
|
|
|
|
refute RDF.Statement.valid?({@iri, @iri, @iri, @iri, @iri})
|
|
refute RDF.Triple.valid?({@iri, @iri, @iri, @iri, @iri})
|
|
refute RDF.Quad.valid?({@iri, @iri, @iri, @iri, @iri})
|
|
|
|
refute RDF.Triple.valid?({@iri, @iri, @iri, @iri})
|
|
refute RDF.Quad.valid?({@iri, @iri, @iri})
|
|
end
|
|
|
|
test "with non-tuples" do
|
|
[
|
|
42,
|
|
"foo",
|
|
@iri,
|
|
@bnode,
|
|
]
|
|
|> Enum.each(fn arg ->
|
|
refute RDF.Statement.valid?(arg)
|
|
refute RDF.Triple.valid?(arg)
|
|
refute RDF.Quad.valid?(arg)
|
|
end)
|
|
end
|
|
end
|
|
end
|