NLdoc.Test.UUIDGenerator (NLdoc.Spec v3.1.1)

View Source

This module provides a UUID generator for testing purposes. All UUIDs are valid v4 UUIDs, but are created sequentially so they are not random.

Example:

iex> generator = NLdoc.Test.UUIDGenerator.new()
iex> NLdoc.Test.UUIDGenerator.generate(generator)
"facade00-0000-4000-a000-000000000000"
iex> NLdoc.Test.UUIDGenerator.generate(generator)
"facade00-0000-4000-a000-000000000001"
iex> NLdoc.Test.UUIDGenerator.generate(generator)
"facade00-0000-4000-a000-000000000002"
iex> NLdoc.Test.UUIDGenerator.generate(generator)
"facade00-0000-4000-a000-000000000003"

Calling the generate/1 function without a generator will return the same UUID each time.

iex> NLdoc.Test.UUIDGenerator.generate(nil)
"facade00-0000-4000-a000-000000000000"
iex> NLdoc.Test.UUIDGenerator.generate(nil)
"facade00-0000-4000-a000-000000000000"

Inspiration for this module's implementation taken from: https://elixirforum.com/t/implementing-a-counter-aka-how-to-keep-state-in-a-closure/17056/2

Summary

Types

t()

@type t() :: %NLdoc.Test.UUIDGenerator{get_and_increment: (-> integer()), pid: pid()}

Functions

close(uuid_generator)

@spec close(t()) :: :ok

generate(generator)

@spec generate(t() | nil) :: String.t()

new()

@spec new() :: t()