Various fixes of RDF.Datatype.cast/1 implementations
This commit is contained in:
parent
e0635b42ad
commit
97b1cec4aa
5 changed files with 17 additions and 16 deletions
|
@ -44,12 +44,8 @@ defmodule RDF.Boolean do
|
||||||
!Decimal.equal?(literal.value, 0)
|
!Decimal.equal?(literal.value, 0)
|
||||||
|> new()
|
|> new()
|
||||||
|
|
||||||
is_xsd_double(datatype) or is_xsd_float(datatype) ->
|
|
||||||
literal.value not in [0.0, :nan]
|
|
||||||
|> new()
|
|
||||||
|
|
||||||
RDF.Numeric.type?(datatype) ->
|
RDF.Numeric.type?(datatype) ->
|
||||||
literal.value
|
literal.value not in [0, 0.0, :nan]
|
||||||
|> new()
|
|> new()
|
||||||
|
|
||||||
true ->
|
true ->
|
||||||
|
|
|
@ -36,9 +36,10 @@ defmodule RDF.Integer do
|
||||||
new(1)
|
new(1)
|
||||||
|
|
||||||
is_xsd_string(datatype) ->
|
is_xsd_string(datatype) ->
|
||||||
literal.value
|
case Integer.parse(literal.value) do
|
||||||
|> new()
|
{value, _} -> new(value)
|
||||||
|> canonical()
|
_ -> nil
|
||||||
|
end
|
||||||
|
|
||||||
is_xsd_decimal(datatype) ->
|
is_xsd_decimal(datatype) ->
|
||||||
literal.value
|
literal.value
|
||||||
|
|
|
@ -64,6 +64,7 @@ defmodule RDF.BooleanTest do
|
||||||
test "casting an integer" do
|
test "casting an integer" do
|
||||||
assert RDF.integer(0) |> RDF.Boolean.cast() == RDF.false
|
assert RDF.integer(0) |> RDF.Boolean.cast() == RDF.false
|
||||||
assert RDF.integer(1) |> RDF.Boolean.cast() == RDF.true
|
assert RDF.integer(1) |> RDF.Boolean.cast() == RDF.true
|
||||||
|
assert RDF.integer(42) |> RDF.Boolean.cast() == RDF.true
|
||||||
end
|
end
|
||||||
|
|
||||||
test "casting a decimal" do
|
test "casting a decimal" do
|
||||||
|
|
|
@ -74,6 +74,7 @@ defmodule RDF.DoubleTest do
|
||||||
test "casting a string" do
|
test "casting a string" do
|
||||||
assert RDF.string("1.0") |> RDF.Double.cast() == RDF.double("1.0E0")
|
assert RDF.string("1.0") |> RDF.Double.cast() == RDF.double("1.0E0")
|
||||||
assert RDF.string("3.14") |> RDF.Double.cast() == RDF.double("3.14E0")
|
assert RDF.string("3.14") |> RDF.Double.cast() == RDF.double("3.14E0")
|
||||||
|
assert RDF.string("3.14E0") |> RDF.Double.cast() == RDF.double("3.14E0")
|
||||||
end
|
end
|
||||||
|
|
||||||
test "casting an integer" do
|
test "casting an integer" do
|
||||||
|
|
|
@ -29,6 +29,8 @@ defmodule RDF.IntegerTest do
|
||||||
|
|
||||||
test "casting a string" do
|
test "casting a string" do
|
||||||
assert RDF.string("0") |> RDF.Integer.cast() == RDF.integer(0)
|
assert RDF.string("0") |> RDF.Integer.cast() == RDF.integer(0)
|
||||||
|
assert RDF.string("042") |> RDF.Integer.cast() == RDF.integer(42)
|
||||||
|
assert RDF.string("3.14") |> RDF.Integer.cast() == RDF.integer(3)
|
||||||
end
|
end
|
||||||
|
|
||||||
test "casting an decimal" do
|
test "casting an decimal" do
|
||||||
|
|
Loading…
Reference in a new issue