Packages

A NIF binding to Spotify's Annoy C++ library for approximate nearest neighbors.

Current section

Files

Jump to
annoy_ex test seed_test.exs
Raw

test/seed_test.exs

defmodule AnnoyExSeedTest do
use ExUnit.Case, async: true
test "test seeding" do
f = 10
# make a 1000 and 50 element list of 10 element lists.
x = Enum.map(1..1000, fn _ -> Enum.map(1..10, fn _ -> :rand.uniform() end) end)
y = Enum.map(1..50, fn _ -> Enum.map(1..10, fn _ -> :rand.uniform() end) end)
i1 = AnnoyEx.new(f)
i2 = AnnoyEx.new(f)
res = AnnoyEx.set_seed(i1, 42)
assert res == :ok
res = AnnoyEx.set_seed(i2, 42)
assert res == :ok
for j <- 0..999 do
AnnoyEx.add_item(i1, j, Enum.at(x, j))
AnnoyEx.add_item(i2, j, Enum.at(x, j))
end
AnnoyEx.build(i1, 10)
AnnoyEx.build(i2, 10)
for k <- 0..49 do
v = Enum.at(y, k)
assert AnnoyEx.get_nns_by_vector(i1, v, 100) == AnnoyEx.get_nns_by_vector(i2, v, 100)
end
end
end