package container import ( "reflect" "testing" ) func TestVectorPushBack(t *testing.T) { v := Vector[int]{1, 2, 3} e := 4 v.PushBack(e) expected := Vector[int]{1, 2, 3, 4} if !reflect.DeepEqual(v, expected) { t.Errorf("PushBack() failed, expected %v, got %v", expected, v) } if v.Len() != 4 { t.Errorf("expected a length of 4, got %v", v.Len()) } } func TestVectorPopBack(t *testing.T) { v := Vector[int]{1, 2, 3, 4} expectedValue := 4 value := v.PopBack() if value != expectedValue { t.Errorf("PopBack() failed, expected %v, got %v", expectedValue, value) } expectedVector := Vector[int]{1, 2, 3} if !reflect.DeepEqual(v, expectedVector) { t.Errorf("PopBack() failed, expected vector %v, got %v", expectedVector, v) } if v.Len() != 3 { t.Errorf("expected a length of 3, got %v", v.Len()) } // Test panic on empty vector emptyVector := Vector[int]{} defer func() { if r := recover(); r == nil { t.Errorf("PopBack() did not panic on empty vector") } }() emptyVector.PopBack() } func TestVectorLen(t *testing.T) { v := Vector[int]{1, 2, 3} expected := 3 result := v.Len() if result != expected { t.Errorf("Len() failed, expected %d, got %d", expected, result) } } func TestVectorHasElement(t *testing.T) { v := Vector[int]{1, 2, 3} hasElement := v.HasElement() expected := true if hasElement != expected { t.Errorf("HasElement() failed, expected %v, got %v", expected, hasElement) } v = Vector[int]{} hasElement = v.HasElement() expected = false if hasElement != expected { t.Errorf("HasElement() failed, expected %v, got %v", expected, hasElement) } } func TestVectorPushFront(t *testing.T) { v := Vector[int]{1, 2, 3} e := 4 v.PushFront(e) expected := Vector[int]{4, 1, 2, 3} if !reflect.DeepEqual(v, expected) { t.Errorf("PushFront() failed, expected %v, got %v", expected, v) } if v.Len() != 4 { t.Errorf("expected a length of 4, got %v", v.Len()) } } func TestVectorPopFront(t *testing.T) { v := Vector[int]{1, 2, 3, 4} expectedValue := 1 expectedVector := Vector[int]{2, 3, 4} value := v.PopFront() if value != expectedValue { t.Errorf("PopFront() failed, expected value %v, got %v", expectedValue, value) } if !reflect.DeepEqual(v, expectedVector) { t.Errorf("PopFront() failed, expected vector %v, got %v", expectedVector, v) } if v.Len() != 3 { t.Errorf("expected a length of 3, got %v", v.Len()) } }