binary_search_tree
This commit is contained in:
119
elixir/binary-search-tree/test/binary_search_tree_test.exs
Normal file
119
elixir/binary-search-tree/test/binary_search_tree_test.exs
Normal file
@@ -0,0 +1,119 @@
|
||||
defmodule BinarySearchTreeTest do
|
||||
use ExUnit.Case
|
||||
|
||||
test "data is retained" do
|
||||
root = BinarySearchTree.new(4)
|
||||
assert root.data == 4
|
||||
assert root.left == nil
|
||||
assert root.right == nil
|
||||
end
|
||||
|
||||
describe "insert data at proper node" do
|
||||
test "smaller number at left node" do
|
||||
root =
|
||||
BinarySearchTree.new(4)
|
||||
|> BinarySearchTree.insert(2)
|
||||
|
||||
assert root.data == 4
|
||||
assert root.left.data == 2
|
||||
assert root.left.left == nil
|
||||
assert root.left.right == nil
|
||||
assert root.right == nil
|
||||
end
|
||||
|
||||
test "same number at left node" do
|
||||
root =
|
||||
BinarySearchTree.new(4)
|
||||
|> BinarySearchTree.insert(4)
|
||||
|
||||
assert root.data == 4
|
||||
assert root.left.data == 4
|
||||
assert root.left.left == nil
|
||||
assert root.left.right == nil
|
||||
assert root.right == nil
|
||||
end
|
||||
|
||||
test "greater number at right node" do
|
||||
root =
|
||||
BinarySearchTree.new(4)
|
||||
|> BinarySearchTree.insert(5)
|
||||
|
||||
assert root.data == 4
|
||||
assert root.left == nil
|
||||
assert root.right.data == 5
|
||||
assert root.right.left == nil
|
||||
assert root.right.right == nil
|
||||
end
|
||||
end
|
||||
|
||||
test "can create complex tree" do
|
||||
root =
|
||||
BinarySearchTree.new(4)
|
||||
|> BinarySearchTree.insert(2)
|
||||
|> BinarySearchTree.insert(6)
|
||||
|> BinarySearchTree.insert(1)
|
||||
|> BinarySearchTree.insert(3)
|
||||
|> BinarySearchTree.insert(5)
|
||||
|> BinarySearchTree.insert(7)
|
||||
|
||||
assert root.data == 4
|
||||
assert root.left.data == 2
|
||||
assert root.left.left.data == 1
|
||||
assert root.left.left.left == nil
|
||||
assert root.left.left.right == nil
|
||||
assert root.left.right.data == 3
|
||||
assert root.left.right.left == nil
|
||||
assert root.left.right.right == nil
|
||||
assert root.right.data == 6
|
||||
assert root.right.left.data == 5
|
||||
assert root.right.left.left == nil
|
||||
assert root.right.left.right == nil
|
||||
assert root.right.right.data == 7
|
||||
assert root.right.right.left == nil
|
||||
assert root.right.right.right == nil
|
||||
end
|
||||
|
||||
describe "can sort data" do
|
||||
test "can sort single number" do
|
||||
root = BinarySearchTree.new(2)
|
||||
|
||||
assert [2] == BinarySearchTree.in_order(root)
|
||||
end
|
||||
|
||||
test "can sort if second number is smaller than first" do
|
||||
root =
|
||||
BinarySearchTree.new(2)
|
||||
|> BinarySearchTree.insert(1)
|
||||
|
||||
assert [1, 2] == BinarySearchTree.in_order(root)
|
||||
end
|
||||
|
||||
test "can sort if second number is the same as the first" do
|
||||
root =
|
||||
BinarySearchTree.new(2)
|
||||
|> BinarySearchTree.insert(2)
|
||||
|
||||
assert [2, 2] == BinarySearchTree.in_order(root)
|
||||
end
|
||||
|
||||
test "can sort if second number is greater than the first" do
|
||||
root =
|
||||
BinarySearchTree.new(2)
|
||||
|> BinarySearchTree.insert(3)
|
||||
|
||||
assert [2, 3] == BinarySearchTree.in_order(root)
|
||||
end
|
||||
|
||||
test "can sort complex tree" do
|
||||
root =
|
||||
BinarySearchTree.new(2)
|
||||
|> BinarySearchTree.insert(1)
|
||||
|> BinarySearchTree.insert(3)
|
||||
|> BinarySearchTree.insert(6)
|
||||
|> BinarySearchTree.insert(7)
|
||||
|> BinarySearchTree.insert(5)
|
||||
|
||||
assert [1, 2, 3, 5, 6, 7] == BinarySearchTree.in_order(root)
|
||||
end
|
||||
end
|
||||
end
|
||||
2
elixir/binary-search-tree/test/test_helper.exs
Normal file
2
elixir/binary-search-tree/test/test_helper.exs
Normal file
@@ -0,0 +1,2 @@
|
||||
ExUnit.start()
|
||||
ExUnit.configure(exclude: :pending, trace: true)
|
||||
Reference in New Issue
Block a user