From 507bbd8d0a8f3fdd710dbcdc107fb86f0e798c6d Mon Sep 17 00:00:00 2001 From: Alex Willmer Date: Wed, 1 Apr 2020 19:00:20 +0100 Subject: [PATCH] ids: Add tests for QueueSet.{init, SetHead, Append, GetTail} --- ids/queue_test.go | 70 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 ids/queue_test.go diff --git a/ids/queue_test.go b/ids/queue_test.go new file mode 100644 index 0000000..ab0dd4e --- /dev/null +++ b/ids/queue_test.go @@ -0,0 +1,70 @@ +package ids + +import ( + "reflect" + "testing" +) + +func TestQueueSetinit(t *testing.T) { + qs := QueueSet{} + qs.init() + if qs.idList == nil { + t.Fatal("Failed to initialize") + } + list := qs.idList + qs.init() + if list != qs.idList { + t.Fatal("Mutated an already intialized queue") + } +} + +func TestQueueSetSetHead(t *testing.T) { + qs := QueueSet{} + id := NewID([32]byte{'a', 'v', 'a', ' ', 'l', 'a', 'b', 's'}) + qs.SetHead(id) + if qs.idList == nil || id != qs.idList.Front().Value.(ID) { + t.Fatal("Failed to set head of unintilised queue") + } + + qs.SetHead(id) + if qs.idList.Len() != 1 || id != qs.idList.Front().Value.(ID) { + t.Fatal("Mutated a queue which already had the desired head") + } + + id2 := NewID([32]byte{'e', 'v', 'a', ' ', 'l', 'a', 'b', 's'}) + qs.SetHead(id2) + if qs.idList.Len() != 1 || id2 != qs.idList.Front().Value.(ID) { + t.Fatal("Didn't replace the existing head") + } +} + +func TestQueueSetAppend(t *testing.T) { + qs := QueueSet{} + id := NewID([32]byte{'a', 'v', 'a', ' ', 'l', 'a', 'b', 's'}) + qs.Append(id) + if qs.idList == nil || id != qs.idList.Front().Value.(ID) { + t.Fatal("Failed to append to an uninitialised queue") + } + + id2 := NewID([32]byte{'e', 'v', 'a', ' ', 'l', 'a', 'b', 's'}) + qs.Append(id2) + if qs.idList.Len() != 2 || id2 != qs.idList.Back().Value.(ID) { + t.Fatal("Failed to append to the back of the queue") + } +} + +func TestQueueGetTail(t *testing.T) { + qs := QueueSet{} + tail := qs.GetTail() + if !reflect.DeepEqual(tail, ID{}) { + t.Fatalf("Empty queue returned %v, expected empty ID %v", tail, Empty) + } + + qs.Append(NewID([32]byte{'a', 'v', 'a', ' ', 'l', 'a', 'b', 's'})) + id2 := NewID([32]byte{'e', 'v', 'a', ' ', 'l', 'a', 'b', 's'}) + qs.Append(id2) + tail = qs.GetTail() + if tail != id2 { + t.Fatalf("Populated queue returned %v, expected %v", tail, id2) + } +}