diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/gleam/queue_test.gleam | 160 |
1 files changed, 109 insertions, 51 deletions
diff --git a/test/gleam/queue_test.gleam b/test/gleam/queue_test.gleam index ea38ed3..ae5dfeb 100644 --- a/test/gleam/queue_test.gleam +++ b/test/gleam/queue_test.gleam @@ -2,37 +2,16 @@ import gleam/queue import gleam/int import gleam/list import gleam/should +import gleam/pair pub fn from_and_to_list_test() { queue.from_list([]) |> should.equal(queue.new()) - [0, 0] + [1, 2, 3] |> queue.from_list - |> queue.push_back(1) - |> queue.to_list - |> should.equal([0, 0, 1]) - - let test = fn(input) { - queue.from_list(input) - |> queue.to_list - |> list.reverse - |> should.equal(input) - } - - test([]) - test([1]) - test([1, 2]) - test([1, 2, 1]) - test([1, 2, 1, 5, 2, 7, 2, 7, 8, 4, 545]) -} - -pub fn push_back_test() { - [0, 0] - |> queue.from_list - |> queue.push_back(1) |> queue.to_list - |> should.equal([0, 0, 1]) + |> should.equal([1, 2, 3]) } pub fn is_empty_test() { @@ -59,53 +38,132 @@ pub fn length_test() { test([1, 2, 1, 5, 2, 7, 2, 7, 8, 4, 545]) } -pub fn push_test() { - queue.new() - |> queue.push_back(7) - |> queue.push_back(8) - |> queue.push_back(2) +pub fn push_back_test() { + [1, 2] + |> queue.from_list + |> queue.push_back(3) |> queue.to_list - |> should.equal([7, 8, 2]) -} + |> should.equal([1, 2, 3]) -pub fn push_front_test() { queue.new() - |> queue.push_back(7) - |> queue.push_back(8) + |> queue.push_back(1) |> queue.push_back(2) - |> queue.push_front(4) - |> queue.push_front(3) + |> queue.push_back(3) |> queue.to_list - |> should.equal([3, 4, 7, 8, 2]) + |> should.equal([1, 2, 3]) +} - [0, 0] +pub fn push_front_test() { + [2, 3] |> queue.from_list |> queue.push_front(1) + |> queue.push_front(0) + |> queue.to_list + |> should.equal([0, 1, 2, 3]) +} + +pub fn push_test() { + queue.new() + |> queue.push_front("b") + |> queue.push_back("x") + |> queue.push_front("a") + |> queue.push_back("y") |> queue.to_list - |> should.equal([1, 0, 0]) + |> should.equal(["a", "b", "x", "y"]) } pub fn pop_back_test() { - // We cannot construct the expected remainaing queue with from_list because - // it has different internal representation. - let expected_rest = + assert Ok(tup) = + [1, 2, 3] + |> queue.from_list + |> queue.pop_back + + tup + |> pair.first + |> should.equal(3) + + tup + |> pair.second + |> queue.is_equal(queue.from_list([1, 2])) + |> should.be_true +} + +pub fn pop_back_after_push_back_test() { + assert Ok(tup) = queue.new() - |> queue.push_front(1) - |> queue.push_front(2) - queue.from_list([1, 2, 3]) - |> queue.pop_back - |> should.equal(Ok(tuple(3, expected_rest))) + |> queue.push_back(1) + |> queue.push_back(2) + |> queue.push_back(3) + |> queue.pop_back + + tup + |> pair.first + |> should.equal(3) +} + +pub fn pop_back_after_push_test() { + assert Ok(tup) = + queue.new() + |> queue.push_front("b") + |> queue.push_back("x") + |> queue.push_front("a") + |> queue.push_back("y") + |> queue.pop_back + + tup + |> pair.first + |> should.equal("y") +} +pub fn pop_back_empty_test() { queue.from_list([]) |> queue.pop_back |> should.equal(Error(Nil)) } pub fn pop_front_test() { - queue.from_list([1, 2, 3]) - |> queue.pop_front - |> should.equal(Ok(tuple(1, queue.from_list([2, 3])))) + assert Ok(tup) = + [1, 2, 3] + |> queue.from_list + |> queue.pop_front + + tup + |> pair.first + |> should.equal(1) + + tup + |> pair.second + |> queue.is_equal(queue.from_list([2, 3])) + |> should.be_true +} + +pub fn pop_front_after_push_front_test() { + assert Ok(tup) = + queue.new() + |> queue.push_front(3) + |> queue.push_front(2) + |> queue.push_front(1) + |> queue.pop_front + + tup + |> pair.first + |> should.equal(1) +} + +pub fn pop_front_after_push_test() { + assert Ok(tup) = + queue.new() + |> queue.push_front("b") + |> queue.push_back("x") + |> queue.push_front("a") + |> queue.pop_front + + tup + |> pair.first + |> should.equal("a") +} +pub fn pop_front_empty_test() { queue.from_list([]) |> queue.pop_front |> should.equal(Error(Nil)) @@ -115,7 +173,7 @@ pub fn reverse_test() { queue.from_list([1, 2, 3]) |> queue.reverse |> queue.to_list - |> should.equal([1, 2, 3]) + |> should.equal([3, 2, 1]) queue.new() |> queue.push_back(1) |