Shit ton of tests

This commit is contained in:
Melody Becker 2025-04-24 15:59:15 +02:00
parent 99b00887a8
commit ccf98c2f6e
Signed by: mstar
SSH key fingerprint: SHA256:9VAo09aaVNTWKzPW7Hq2LW+ox9OdwmTSHRoD4mlz1yI
13 changed files with 1157 additions and 1 deletions

108
containers/stacks_test.go Normal file
View 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")
}
}