diff options
author | Jordan Bracco <href@random.sh> | 2021-11-12 00:15:31 +0100 |
---|---|---|
committer | Jordan Bracco <href@random.sh> | 2021-11-12 00:15:31 +0100 |
commit | 3c6471ed8174b870f8d463e8f39a781f8c731471 (patch) | |
tree | f304ec29b980883387cba56033fabaffaf6cd2fd /test |
initial commit
Diffstat (limited to 'test')
-rw-r--r-- | test/test_helper.exs | 1 | ||||
-rw-r--r-- | test/tree_bitmap_test.exs | 67 |
2 files changed, 68 insertions, 0 deletions
diff --git a/test/test_helper.exs b/test/test_helper.exs new file mode 100644 index 0000000..869559e --- /dev/null +++ b/test/test_helper.exs @@ -0,0 +1 @@ +ExUnit.start() diff --git a/test/tree_bitmap_test.exs b/test/tree_bitmap_test.exs new file mode 100644 index 0000000..ff1359f --- /dev/null +++ b/test/tree_bitmap_test.exs @@ -0,0 +1,67 @@ +defmodule TreeBitmapTest do + use ExUnit.Case + doctest TreeBitmap + alias TreeBitmap.NIF + + test "new/0" do + table = NIF.new() + assert is_reference(table) + end + + test "length/1" do + table = NIF.new() + assert 0 == NIF.length(table) + end + + test "add/4 and lookup/2" do + table = NIF.new() + assert :ok == NIF.add(table, {:inet4, 192, 168, 1, 0}, 24, 0) + assert {:ok, _, 24, 0} = NIF.lookup(table, {:inet4, 192, 168, 1, 1}) + assert {:ok, nil} = NIF.lookup(table, {:inet4, 1, 1, 1, 1}) + end + + test "remove/2" do + table = NIF.new() + assert :ok == NIF.add(table, {:inet4, 192, 168, 1, 0}, 24, 0) + assert {:ok, _, 24, 0} = NIF.lookup(table, {:inet4, 192, 168, 1, 1}) + assert :ok == NIF.remove(table, {:inet4, 192, 168, 1, 0}, 24) + assert {:ok, nil} = NIF.lookup(table, {:inet4, 192, 168, 1, 1}) + end + + test "default route" do + table = NIF.new() + assert :ok == NIF.add(table, {:inet4, 0, 0, 0, 0}, 0, 0) + assert {:ok, _, 0, 0} = NIF.lookup(table, {:inet4, 192, 168, 1, 1}) + end + + test "more to less specific" do + table = NIF.new() + :ok = NIF.add(table, {:inet4, 10, 69, 1, 0}, 24, 2) + :ok = NIF.add(table, {:inet4, 10, 69, 0, 0}, 16, 1) + :ok = NIF.add(table, {:inet4, 0, 0, 0, 0}, 0, 0) + assert {:ok, _, _, 0} = NIF.lookup(table, {:inet4, 8, 8, 8, 8}) + assert {:ok, _, _, 2} = NIF.lookup(table, {:inet4, 10, 69, 1, 2}) + assert {:ok, _, _, 1} = NIF.lookup(table, {:inet4, 10, 69, 2, 2}) + end + + test "less to more specific" do + table = NIF.new() + :ok = NIF.add(table, {:inet4, 0, 0, 0, 0}, 0, 0) + :ok = NIF.add(table, {:inet4, 10, 69, 0, 0}, 16, 1) + :ok = NIF.add(table, {:inet4, 10, 69, 1, 0}, 24, 2) + assert {:ok, _, _, 0} = NIF.lookup(table, {:inet4, 8, 8, 8, 8}) + assert {:ok, _, _, 2} = NIF.lookup(table, {:inet4, 10, 69, 1, 2}) + assert {:ok, _, _, 1} = NIF.lookup(table, {:inet4, 10, 69, 2, 2}) + end + + test "multiple routes" do + table = NIF.new() + :ok = NIF.add(table, {:inet4, 8, 8, 8, 0}, 24, 8) + :ok = NIF.add(table, {:inet4, 1, 1, 0, 0}, 16, 1) + :ok = NIF.add(table, {:inet4, 192, 168, 1, 1}, 32, 200) + assert {:ok, _, _, 8} = NIF.lookup(table, {:inet4, 8, 8, 8, 8}) + assert {:ok, _, _, 1} = NIF.lookup(table, {:inet4, 1, 1, 0, 0}) + assert {:ok, _, _, 200} = NIF.lookup(table, {:inet4, 192, 168, 1, 1}) + end + +end |