rdf-ex/test/unit/quad_test.exs
Marcel Otto 5819eec0cf Re-integrate XSD.ex
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.
2020-05-05 23:58:44 +02:00

33 lines
1.2 KiB
Elixir

defmodule RDF.QuadTest do
use RDF.Test.Case
doctest RDF.Quad
alias RDF.Quad
describe "values/1" do
test "with a valid RDF.Quad" do
assert Quad.values({~I<http://example.com/S>, ~I<http://example.com/p>, XSD.integer(42), ~I<http://example.com/Graph>})
== {"http://example.com/S", "http://example.com/p", 42, "http://example.com/Graph"}
assert Quad.values({~I<http://example.com/S>, ~I<http://example.com/p>, XSD.integer(42), nil})
== {"http://example.com/S", "http://example.com/p", 42, nil}
end
test "with an invalid RDF.Quad" do
refute Quad.values({~I<http://example.com/S>, ~I<http://example.com/p>})
refute Quad.values({self(), self(), self(), self()})
end
end
test "values/2" do
assert {~I<http://example.com/S>, ~I<http://example.com/p>, XSD.integer(42), ~I<http://example.com/Graph>}
|> Quad.values(fn
{:subject, subject} -> subject |> to_string() |> String.last() |> String.to_atom()
{:predicate, _} -> :p
{:object, object} -> object |> RDF.Term.value() |> Kernel.+(1)
{:graph_name, _} -> nil
end)
== {:S, :p, 43, nil}
end
end