aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/gleam/queue_test.gleam160
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)