From 6810cb99ee91fa6492971e4291ce5026b91f4eb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20Abdelkader=20Mart=C3=ADnez=20P=C3=A9rez?= Date: Wed, 9 Oct 2019 09:54:15 +0200 Subject: [PATCH] Add List method to Routes singletone returning the list of numbered routes --- internal/server/user/state/state.go | 8 ++++++++ internal/server/user/state/state_test.go | 25 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/internal/server/user/state/state.go b/internal/server/user/state/state.go index 0869e36..e647a55 100644 --- a/internal/server/user/state/state.go +++ b/internal/server/user/state/state.go @@ -35,3 +35,11 @@ func (srl *safeRouteList) Snapshot() []model.Route { copy(rs, srl.rs) return rs } + +func (srl *safeRouteList) List() []model.Route { + rs := srl.Snapshot() + for i := 0; i < len(rs); i++ { + rs[i].Index = i + } + return rs +} diff --git a/internal/server/user/state/state_test.go b/internal/server/user/state/state_test.go index a4bcf3c..53da5ba 100644 --- a/internal/server/user/state/state_test.go +++ b/internal/server/user/state/state_test.go @@ -165,3 +165,28 @@ func TestAppendReturnsTheInsertedRoutedWithTheActualIndexWhenPopulated(t *testin t.Errorf("Index of the returned route is not the last one, i.e., 41, but %d", r.Index) } } + +func TestListReturnsTheSameNumberOfRoutesThanSnapshot(t *testing.T) { + srl := New() + srl.Append(model.Route{ID: "FOO"}) + + if len(srl.List()) != len(srl.Snapshot()) { + t.Error("The number of routes returned is not correct") + } +} + +func TestListReturnsANumberedListOfRoutes(t *testing.T) { + srl := New() + + for i := 0; i < 42; i++ { + srl.Append(model.Route{}) + } + + l := srl.List() + + for i, r := range l { + if i != r.Index { + t.Fatalf("Route is correctly numbered. Got %v, expected %v", r.Index, i) + } + } +}