package container import ( "testing" "time" ) func TestNewMemoryStore(t *testing.T) { s := NewMemoryStore() m, ok := s.(*memoryStore) if !ok { t.Fatalf("store is not a memory store %v", s) } if m.s == nil { t.Fatal("expected store map to not be nil") } } func TestAddContainers(t *testing.T) { s := NewMemoryStore() s.Add("id", NewBaseContainer("id", "root")) if s.Size() != 1 { t.Fatalf("expected store size 1, got %v", s.Size()) } } func TestGetContainer(t *testing.T) { s := NewMemoryStore() s.Add("id", NewBaseContainer("id", "root")) c := s.Get("id") if c == nil { t.Fatal("expected container to not be nil") } } func TestDeleteContainer(t *testing.T) { s := NewMemoryStore() s.Add("id", NewBaseContainer("id", "root")) s.Delete("id") if c := s.Get("id"); c != nil { t.Fatalf("expected container to be nil after removal, got %v", c) } if s.Size() != 0 { t.Fatalf("expected store size to be 0, got %v", s.Size()) } } func TestListContainers(t *testing.T) { s := NewMemoryStore() cont := NewBaseContainer("id", "root") cont.Created = time.Now() cont2 := NewBaseContainer("id2", "root") cont2.Created = time.Now().Add(24 * time.Hour) s.Add("id", cont) s.Add("id2", cont2) list := s.List() if len(list) != 2 { t.Fatalf("expected list size 2, got %v", len(list)) } if list[0].ID != "id2" { t.Fatalf("expected id2, got %v", list[0].ID) } } func TestFirstContainer(t *testing.T) { s := NewMemoryStore() s.Add("id", NewBaseContainer("id", "root")) s.Add("id2", NewBaseContainer("id2", "root")) first := s.First(func(cont *Container) bool { return cont.ID == "id2" }) if first == nil { t.Fatal("expected container to not be nil") } if first.ID != "id2" { t.Fatalf("expected id2, got %v", first) } } func TestApplyAllContainer(t *testing.T) { s := NewMemoryStore() s.Add("id", NewBaseContainer("id", "root")) s.Add("id2", NewBaseContainer("id2", "root")) s.ApplyAll(func(cont *Container) { if cont.ID == "id2" { cont.ID = "newID" } }) cont := s.Get("id2") if cont == nil { t.Fatal("expected container to not be nil") } if cont.ID != "newID" { t.Fatalf("expected newID, got %v", cont.ID) } }