diff --git a/lib/rdf/datatypes/boolean.ex b/lib/rdf/datatypes/boolean.ex index 34b79c5..0b150c5 100644 --- a/lib/rdf/datatypes/boolean.ex +++ b/lib/rdf/datatypes/boolean.ex @@ -54,6 +54,8 @@ defmodule RDF.Boolean do end end + def cast(_), do: nil + @doc """ Returns `RDF.true` if the effective boolean value of the given argument is `RDF.false`, or `RDF.false` if it is `RDF.true`. diff --git a/lib/rdf/datatypes/date.ex b/lib/rdf/datatypes/date.ex index 7032a01..7fcc07c 100644 --- a/lib/rdf/datatypes/date.ex +++ b/lib/rdf/datatypes/date.ex @@ -86,4 +86,6 @@ defmodule RDF.Date do end end + def cast(_), do: nil + end diff --git a/lib/rdf/datatypes/date_time.ex b/lib/rdf/datatypes/date_time.ex index 31cd3ad..c3aab50 100644 --- a/lib/rdf/datatypes/date_time.ex +++ b/lib/rdf/datatypes/date_time.ex @@ -88,6 +88,8 @@ defmodule RDF.DateTime do end end + def cast(_), do: nil + def tz(%Literal{value: %NaiveDateTime{}}), do: "" diff --git a/lib/rdf/datatypes/decimal.ex b/lib/rdf/datatypes/decimal.ex index efeac0f..22f9ca3 100644 --- a/lib/rdf/datatypes/decimal.ex +++ b/lib/rdf/datatypes/decimal.ex @@ -96,6 +96,8 @@ defmodule RDF.Decimal do end end + def cast(_), do: nil + def equal_value?(left, right), do: RDF.Numeric.equal_value?(left, right) diff --git a/lib/rdf/datatypes/double.ex b/lib/rdf/datatypes/double.ex index 12a50a6..516a889 100644 --- a/lib/rdf/datatypes/double.ex +++ b/lib/rdf/datatypes/double.ex @@ -128,6 +128,8 @@ defmodule RDF.Double do end end + def cast(_), do: nil + def equal_value?(left, right), do: RDF.Numeric.equal_value?(left, right) diff --git a/lib/rdf/datatypes/integer.ex b/lib/rdf/datatypes/integer.ex index 7508465..e5bb870 100644 --- a/lib/rdf/datatypes/integer.ex +++ b/lib/rdf/datatypes/integer.ex @@ -58,6 +58,8 @@ defmodule RDF.Integer do end end + def cast(_), do: nil + def equal_value?(left, right), do: RDF.Numeric.equal_value?(left, right) diff --git a/lib/rdf/datatypes/lang_string.ex b/lib/rdf/datatypes/lang_string.ex index d8e3fd3..afd907e 100644 --- a/lib/rdf/datatypes/lang_string.ex +++ b/lib/rdf/datatypes/lang_string.ex @@ -53,8 +53,9 @@ defmodule RDF.LangString do end end + def cast(_) do - raise "not supported" + nil end end diff --git a/lib/rdf/datatypes/string.ex b/lib/rdf/datatypes/string.ex index 9abdd96..3d21400 100644 --- a/lib/rdf/datatypes/string.ex +++ b/lib/rdf/datatypes/string.ex @@ -91,4 +91,6 @@ defmodule RDF.String do end end + def cast(_), do: nil + end diff --git a/lib/rdf/datatypes/time.ex b/lib/rdf/datatypes/time.ex index b28f640..2d6e8e0 100644 --- a/lib/rdf/datatypes/time.ex +++ b/lib/rdf/datatypes/time.ex @@ -141,4 +141,6 @@ defmodule RDF.Time do end end + def cast(_), do: nil + end diff --git a/test/unit/datatypes/boolean_test.exs b/test/unit/datatypes/boolean_test.exs index 355d8fa..458ed4d 100644 --- a/test/unit/datatypes/boolean_test.exs +++ b/test/unit/datatypes/boolean_test.exs @@ -112,6 +112,10 @@ defmodule RDF.BooleanTest do test "with literals of unsupported datatypes" do assert RDF.DateTime.now() |> RDF.Boolean.cast() == nil end + + test "with non-RDF terms" do + assert RDF.Boolean.cast(:foo) == nil + end end diff --git a/test/unit/datatypes/date_test.exs b/test/unit/datatypes/date_test.exs index 7e761f0..52a85ff 100644 --- a/test/unit/datatypes/date_test.exs +++ b/test/unit/datatypes/date_test.exs @@ -109,6 +109,10 @@ defmodule RDF.DateTest do assert RDF.integer(1) |> RDF.Date.cast() == nil assert RDF.decimal(3.14) |> RDF.Date.cast() == nil end + + test "with non-RDF terms" do + assert RDF.Date.cast(:foo) == nil + end end end diff --git a/test/unit/datatypes/date_time_test.exs b/test/unit/datatypes/date_time_test.exs index d6ff8dd..d971b8f 100644 --- a/test/unit/datatypes/date_time_test.exs +++ b/test/unit/datatypes/date_time_test.exs @@ -163,6 +163,10 @@ defmodule RDF.DateTimeTest do assert RDF.integer(1) |> RDF.DateTime.cast() == nil assert RDF.decimal(3.14) |> RDF.DateTime.cast() == nil end + + test "with non-RDF terms" do + assert RDF.DateTime.cast(:foo) == nil + end end diff --git a/test/unit/datatypes/decimal_test.exs b/test/unit/datatypes/decimal_test.exs index cfce14f..70ac805 100644 --- a/test/unit/datatypes/decimal_test.exs +++ b/test/unit/datatypes/decimal_test.exs @@ -117,6 +117,10 @@ defmodule RDF.DecimalTest do test "with literals of unsupported datatypes" do assert RDF.DateTime.now() |> RDF.Decimal.cast() == nil end + + test "with non-RDF terms" do + assert RDF.Decimal.cast(:foo) == nil + end end diff --git a/test/unit/datatypes/double_test.exs b/test/unit/datatypes/double_test.exs index cf0910b..b5e8f76 100644 --- a/test/unit/datatypes/double_test.exs +++ b/test/unit/datatypes/double_test.exs @@ -105,6 +105,10 @@ defmodule RDF.DoubleTest do test "with literals of unsupported datatypes" do assert RDF.DateTime.now() |> RDF.Double.cast() == nil end + + test "with non-RDF terms" do + assert RDF.Double.cast(:foo) == nil + end end end diff --git a/test/unit/datatypes/integer_test.exs b/test/unit/datatypes/integer_test.exs index a90a99b..c20dde7 100644 --- a/test/unit/datatypes/integer_test.exs +++ b/test/unit/datatypes/integer_test.exs @@ -70,6 +70,10 @@ defmodule RDF.IntegerTest do test "with literals of unsupported datatypes" do assert RDF.DateTime.now() |> RDF.Integer.cast() == nil end + + test "with non-RDF terms" do + assert RDF.Integer.cast(:foo) == nil + end end diff --git a/test/unit/datatypes/string_test.exs b/test/unit/datatypes/string_test.exs index 328152d..4ca853d 100644 --- a/test/unit/datatypes/string_test.exs +++ b/test/unit/datatypes/string_test.exs @@ -122,6 +122,10 @@ defmodule RDF.StringTest do assert RDF.decimal("NAN") |> RDF.String.cast() == nil assert RDF.double(true) |> RDF.String.cast() == nil end + + test "with non-RDF terms" do + assert RDF.String.cast(:foo) == nil + end end end diff --git a/test/unit/datatypes/time_test.exs b/test/unit/datatypes/time_test.exs index 088e7d3..ca6516b 100644 --- a/test/unit/datatypes/time_test.exs +++ b/test/unit/datatypes/time_test.exs @@ -96,6 +96,10 @@ defmodule RDF.TimeTest do assert RDF.integer(1) |> RDF.Time.cast() == nil assert RDF.decimal(3.14) |> RDF.Time.cast() == nil end + + test "with non-RDF terms" do + assert RDF.Time.cast(:foo) == nil + end end end