Shit ton of tests
This commit is contained in:
parent
99b00887a8
commit
ccf98c2f6e
13 changed files with 1157 additions and 1 deletions
95
containers/queues_test.go
Normal file
95
containers/queues_test.go
Normal file
|
@ -0,0 +1,95 @@
|
|||
package containers_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"git.mstar.dev/mstar/goutils/containers"
|
||||
"git.mstar.dev/mstar/goutils/other"
|
||||
)
|
||||
|
||||
func TestQueue(t *testing.T) {
|
||||
queue := containers.BuildQueue[int]()
|
||||
elem, err := queue.Top()
|
||||
switch err {
|
||||
case containers.ErrEmptyQueue:
|
||||
// Expected, continue
|
||||
case containers.ErrInvalidQueue:
|
||||
t.Fatal("New queue is invalid")
|
||||
case nil:
|
||||
t.Fatalf("New queue shouldn't have any elements yet: %v", elem)
|
||||
}
|
||||
elem, err = queue.Pop()
|
||||
switch err {
|
||||
case containers.ErrEmptyQueue:
|
||||
// Expected, continue
|
||||
case containers.ErrInvalidQueue:
|
||||
t.Fatal("New queue is invalid")
|
||||
case nil:
|
||||
t.Fatalf("New queue shouldn't have any elements yet: %v", elem)
|
||||
}
|
||||
if !queue.IsEmpty() {
|
||||
t.Fatal("New queue isn't empty")
|
||||
}
|
||||
|
||||
if err = queue.Push(other.IntoPointer(10)); err != nil {
|
||||
t.Fatal("Failed to push value onto new queue")
|
||||
}
|
||||
if queue.IsEmpty() {
|
||||
t.Fatal("Queue is empty after pushing a value")
|
||||
}
|
||||
|
||||
if err = queue.Push(other.IntoPointer(20)); err != nil {
|
||||
t.Fatal("Failed to push value onto queue")
|
||||
}
|
||||
|
||||
elem, err = queue.Top()
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get top element from queue after inserting one: %v", err)
|
||||
}
|
||||
switch {
|
||||
case elem == nil:
|
||||
t.Fatal("Got nil elem; want &10")
|
||||
case *elem == 10:
|
||||
// Expected, continue
|
||||
default:
|
||||
t.Fatalf("Got %v; want &10", *elem)
|
||||
}
|
||||
|
||||
if queue.IsEmpty() {
|
||||
t.Fatal("Top shouldn't pop an element from the queue")
|
||||
}
|
||||
|
||||
elem, err = queue.Pop()
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error while popping a value: %v", err)
|
||||
}
|
||||
switch {
|
||||
case elem == nil:
|
||||
t.Fatal("Got nil elem; want &10")
|
||||
case *elem == 10:
|
||||
// Expected, continue
|
||||
default:
|
||||
t.Fatalf("Got %v; want &10", *elem)
|
||||
}
|
||||
|
||||
if queue.IsEmpty() {
|
||||
t.Fatal("Queue should still have one element left")
|
||||
}
|
||||
|
||||
elem, err = queue.Pop()
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error while popping a value: %v", err)
|
||||
}
|
||||
switch {
|
||||
case elem == nil:
|
||||
t.Fatal("Got nil elem; want &20")
|
||||
case *elem == 20:
|
||||
// Expected, continue
|
||||
default:
|
||||
t.Fatalf("Got %v; want &20", *elem)
|
||||
}
|
||||
|
||||
if !queue.IsEmpty() {
|
||||
t.Fatal("Queue should be empty now")
|
||||
}
|
||||
}
|
108
containers/stacks_test.go
Normal file
108
containers/stacks_test.go
Normal file
|
@ -0,0 +1,108 @@
|
|||
package containers_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"git.mstar.dev/mstar/goutils/containers"
|
||||
"git.mstar.dev/mstar/goutils/other"
|
||||
)
|
||||
|
||||
func TestStack(t *testing.T) {
|
||||
stack := containers.BuildStack[int]()
|
||||
elem, err := stack.Top()
|
||||
switch err {
|
||||
case containers.ErrEmptyQueue:
|
||||
// Expected, continue
|
||||
case containers.ErrInvalidQueue:
|
||||
t.Fatal("New queue is invalid")
|
||||
case nil:
|
||||
t.Fatalf("New queue shouldn't have any elements yet: %v", elem)
|
||||
}
|
||||
elem, err = stack.Pop()
|
||||
switch err {
|
||||
case containers.ErrEmptyQueue:
|
||||
// Expected, continue
|
||||
case containers.ErrInvalidQueue:
|
||||
t.Fatal("New queue is invalid")
|
||||
case nil:
|
||||
t.Fatalf("New queue shouldn't have any elements yet: %v", elem)
|
||||
}
|
||||
if !stack.IsEmpty() {
|
||||
t.Fatal("New queue isn't empty")
|
||||
}
|
||||
|
||||
if err = stack.Push(other.IntoPointer(10)); err != nil {
|
||||
t.Fatal("Failed to push value onto new queue")
|
||||
}
|
||||
if stack.IsEmpty() {
|
||||
t.Fatal("Queue is empty after pushing a value")
|
||||
}
|
||||
|
||||
elem, err = stack.Top()
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get top element from queue after inserting one: %v", err)
|
||||
}
|
||||
switch {
|
||||
case elem == nil:
|
||||
t.Fatal("Got nil elem; want &10")
|
||||
case *elem == 10:
|
||||
// Expected, continue
|
||||
default:
|
||||
t.Fatalf("Got %v; want &10", *elem)
|
||||
}
|
||||
|
||||
if err = stack.Push(other.IntoPointer(20)); err != nil {
|
||||
t.Fatal("Failed to push value onto queue")
|
||||
}
|
||||
|
||||
elem, err = stack.Top()
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get top element from queue after inserting one: %v", err)
|
||||
}
|
||||
switch {
|
||||
case elem == nil:
|
||||
t.Fatal("Got nil elem; want &20")
|
||||
case *elem == 20:
|
||||
// Expected, continue
|
||||
default:
|
||||
t.Fatalf("Got %v; want &20", *elem)
|
||||
}
|
||||
|
||||
if stack.IsEmpty() {
|
||||
t.Fatal("Top shouldn't pop an element from the queue")
|
||||
}
|
||||
|
||||
elem, err = stack.Pop()
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error while popping a value: %v", err)
|
||||
}
|
||||
switch {
|
||||
case elem == nil:
|
||||
t.Fatal("Got nil elem; want &20")
|
||||
case *elem == 20:
|
||||
// Expected, continue
|
||||
default:
|
||||
t.Fatalf("Got %v; want &20", *elem)
|
||||
}
|
||||
|
||||
if stack.IsEmpty() {
|
||||
t.Fatal("Queue should still have one element left")
|
||||
}
|
||||
|
||||
elem, err = stack.Pop()
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error while popping a value: %v", err)
|
||||
}
|
||||
switch {
|
||||
case elem == nil:
|
||||
t.Fatal("Got nil elem; want &10")
|
||||
case *elem == 10:
|
||||
// Expected, continue
|
||||
default:
|
||||
t.Fatalf("Got %v; want &10", *elem)
|
||||
}
|
||||
|
||||
if !stack.IsEmpty() {
|
||||
t.Fatal("Queue should be empty now")
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue