136 lines
4.3 KiB
Elixir
136 lines
4.3 KiB
Elixir
defmodule RDF.IRI.UUID.GeneratorTest do
|
|
use RDF.Test.Case
|
|
|
|
doctest RDF.IRI.UUID.Generator
|
|
|
|
alias RDF.Resource.Generator
|
|
|
|
test "without arguments, a URN is generated" do
|
|
assert %IRI{value: "urn:uuid:" <> _} =
|
|
IRI.UUID.Generator.generator_config()
|
|
|> Generator.generate(nil)
|
|
end
|
|
|
|
test "setting the prefix function arguments" do
|
|
assert %IRI{value: "http://example.com/ns/" <> _} =
|
|
IRI.UUID.Generator.generator_config(prefix: "http://example.com/ns/")
|
|
|> Generator.generate(nil)
|
|
|
|
assert %IRI{} =
|
|
iri1 =
|
|
IRI.UUID.Generator.generator_config(prefix: EX)
|
|
|> Generator.generate(nil)
|
|
|
|
assert String.starts_with?(iri1.value, EX.__base_iri__())
|
|
|
|
assert %IRI{} =
|
|
iri2 =
|
|
IRI.UUID.Generator.generator_config(prefix: EX)
|
|
|> Generator.generate(nil)
|
|
|
|
assert iri1 != iri2
|
|
end
|
|
|
|
test "setting UUID params via defaults" do
|
|
for version <- [1, 4], format <- [:default, :hex] do
|
|
assert %IRI{value: "http://example.com/ns/" <> uuid} =
|
|
IRI.UUID.Generator.generator_config(
|
|
prefix: "http://example.com/ns/",
|
|
version: version,
|
|
format: format
|
|
)
|
|
|> Generator.generate(nil)
|
|
|
|
uuid_info = UUID.info!(uuid)
|
|
assert Keyword.get(uuid_info, :version) == version
|
|
assert Keyword.get(uuid_info, :type) == format
|
|
end
|
|
|
|
for version <- [3, 5],
|
|
format <- [:default, :hex],
|
|
namespace <- [:dns, :url, UUID.uuid4()] do
|
|
assert %IRI{value: "http://example.com/ns/" <> uuid} =
|
|
IRI.UUID.Generator.generator_config(
|
|
prefix: "http://example.com/ns/",
|
|
version: version,
|
|
format: format,
|
|
namespace: namespace,
|
|
name: "test"
|
|
)
|
|
|> Generator.generate(nil)
|
|
|
|
uuid_info = UUID.info!(uuid)
|
|
assert Keyword.get(uuid_info, :version) == version
|
|
assert Keyword.get(uuid_info, :type) == format
|
|
end
|
|
end
|
|
|
|
test "setting UUID params on generate/2" do
|
|
for version <- [1, 4], format <- [:default, :hex] do
|
|
assert %IRI{value: "http://example.com/ns/" <> uuid} =
|
|
IRI.UUID.Generator.generator_config()
|
|
|> Generator.generate(
|
|
prefix: "http://example.com/ns/",
|
|
version: version,
|
|
format: format
|
|
)
|
|
|
|
uuid_info = UUID.info!(uuid)
|
|
assert Keyword.get(uuid_info, :version) == version
|
|
assert Keyword.get(uuid_info, :type) == format
|
|
end
|
|
|
|
for version <- [3, 5],
|
|
format <- [:default, :hex],
|
|
namespace <- [:dns, :url, UUID.uuid4()] do
|
|
assert %IRI{value: "http://example.com/ns/" <> uuid} =
|
|
IRI.UUID.Generator.generator_config()
|
|
|> Generator.generate(
|
|
prefix: "http://example.com/ns/",
|
|
version: version,
|
|
format: format,
|
|
namespace: namespace,
|
|
name: "test"
|
|
)
|
|
|
|
uuid_info = UUID.info!(uuid)
|
|
assert Keyword.get(uuid_info, :version) == version
|
|
assert Keyword.get(uuid_info, :type) == format
|
|
end
|
|
end
|
|
|
|
test "overwriting default UUID params on generate/2" do
|
|
assert %IRI{value: "http://example.com/ns/" <> uuid} =
|
|
IRI.UUID.Generator.generator_config(
|
|
prefix: "http://example.com/ns/",
|
|
version: 4,
|
|
format: :default
|
|
)
|
|
|> Generator.generate(
|
|
version: 1,
|
|
format: :hex
|
|
)
|
|
|
|
uuid_info = UUID.info!(uuid)
|
|
assert Keyword.get(uuid_info, :version) == 1
|
|
assert Keyword.get(uuid_info, :type) == :hex
|
|
|
|
assert %IRI{value: "http://example.com/ns/" <> uuid} =
|
|
IRI.UUID.Generator.generator_config(
|
|
prefix: "http://example.com/ns/",
|
|
version: 3,
|
|
format: :hex,
|
|
namespace: :url
|
|
)
|
|
|> Generator.generate(
|
|
version: 5,
|
|
namespace: :dns,
|
|
name: "example.com"
|
|
)
|
|
|
|
uuid_info = UUID.info!(uuid)
|
|
assert Keyword.get(uuid_info, :version) == 5
|
|
assert Keyword.get(uuid_info, :type) == :hex
|
|
end
|
|
end
|