elipl/test/tilly/bdd/node_test.exs
2025-07-11 21:45:31 +02:00

124 lines
3.8 KiB
Elixir

# defmodule Tilly.BDD.NodeTest do
# use ExUnit.Case, async: true
#
# alias Tilly.BDD.Node
#
# describe "Smart Constructors" do
# test "mk_true/0 returns true" do
# assert Node.mk_true() == true
# end
#
# test "mk_false/0 returns false" do
# assert Node.mk_false() == false
# end
#
# test "mk_leaf/1 creates a leaf node" do
# assert Node.mk_leaf(:some_value) == {:leaf, :some_value}
# assert Node.mk_leaf(123) == {:leaf, 123}
# end
#
# test "mk_split/4 creates a split node" do
# assert Node.mk_split(:el, :p_id, :i_id, :n_id) == {:split, :el, :p_id, :i_id, :n_id}
# end
# end
#
# describe "Predicates" do
# setup do
# %{
# true_node: Node.mk_true(),
# false_node: Node.mk_false(),
# leaf_node: Node.mk_leaf("data"),
# split_node: Node.mk_split(1, 2, 3, 4)
# }
# end
#
# test "is_true?/1", %{true_node: t, false_node: f, leaf_node: l, split_node: s} do
# assert Node.is_true?(t) == true
# assert Node.is_true?(f) == false
# assert Node.is_true?(l) == false
# assert Node.is_true?(s) == false
# end
#
# test "is_false?/1", %{true_node: t, false_node: f, leaf_node: l, split_node: s} do
# assert Node.is_false?(f) == true
# assert Node.is_false?(t) == false
# assert Node.is_false?(l) == false
# assert Node.is_false?(s) == false
# end
#
# test "is_leaf?/1", %{true_node: t, false_node: f, leaf_node: l, split_node: s} do
# assert Node.is_leaf?(l) == true
# assert Node.is_leaf?(t) == false
# assert Node.is_leaf?(f) == false
# assert Node.is_leaf?(s) == false
# end
#
# test "is_split?/1", %{true_node: t, false_node: f, leaf_node: l, split_node: s} do
# assert Node.is_split?(s) == true
# assert Node.is_split?(t) == false
# assert Node.is_split?(f) == false
# assert Node.is_split?(l) == false
# end
# end
#
# describe "Accessors" do
# setup do
# %{
# leaf_node: Node.mk_leaf("leaf_data"),
# split_node: Node.mk_split(:elem_id, :pos_child, :ign_child, :neg_child)
# }
# end
#
# test "value/1 for leaf node", %{leaf_node: l} do
# assert Node.value(l) == "leaf_data"
# end
#
# test "value/1 raises for non-leaf node" do
# assert_raise ArgumentError, ~r/Not a leaf node/, fn -> Node.value(Node.mk_true()) end
#
# assert_raise ArgumentError, ~r/Not a leaf node/, fn ->
# Node.value(Node.mk_split(1, 2, 3, 4))
# end
# end
#
# test "element/1 for split node", %{split_node: s} do
# assert Node.element(s) == :elem_id
# end
#
# test "element/1 raises for non-split node" do
# assert_raise ArgumentError, ~r/Not a split node/, fn -> Node.element(Node.mk_true()) end
# assert_raise ArgumentError, ~r/Not a split node/, fn -> Node.element(Node.mk_leaf(1)) end
# end
#
# test "positive_child/1 for split node", %{split_node: s} do
# assert Node.positive_child(s) == :pos_child
# end
#
# test "positive_child/1 raises for non-split node" do
# assert_raise ArgumentError, ~r/Not a split node/, fn ->
# Node.positive_child(Node.mk_leaf(1))
# end
# end
#
# test "ignore_child/1 for split node", %{split_node: s} do
# assert Node.ignore_child(s) == :ign_child
# end
#
# test "ignore_child/1 raises for non-split node" do
# assert_raise ArgumentError, ~r/Not a split node/, fn ->
# Node.ignore_child(Node.mk_leaf(1))
# end
# end
#
# test "negative_child/1 for split node", %{split_node: s} do
# assert Node.negative_child(s) == :neg_child
# end
#
# test "negative_child/1 raises for non-split node" do
# assert_raise ArgumentError, ~r/Not a split node/, fn ->
# Node.negative_child(Node.mk_leaf(1))
# end
# end
# end
# end