From 037347dbe311f944561c4f82980965febe6232c7 Mon Sep 17 00:00:00 2001 From: pancho horrillo Date: Tue, 8 Oct 2019 17:53:15 +0200 Subject: [PATCH] Augment safeRouteList.Append() to return a model.Route with index MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Roberto Abdelkader Martínez Pérez --- internal/server/user/state/state.go | 5 ++++- internal/server/user/state/state_test.go | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/internal/server/user/state/state.go b/internal/server/user/state/state.go index 4a8837b..0869e36 100644 --- a/internal/server/user/state/state.go +++ b/internal/server/user/state/state.go @@ -18,10 +18,13 @@ func New() safeRouteList { } } -func (srl *safeRouteList) Append(r model.Route) { +func (srl *safeRouteList) Append(r model.Route) model.Route { srl.m.Lock() srl.rs = append(srl.rs, r) + l := len(srl.rs) srl.m.Unlock() + + return model.Route{Index: l - 1} } func (srl *safeRouteList) Snapshot() []model.Route { diff --git a/internal/server/user/state/state_test.go b/internal/server/user/state/state_test.go index 8a728e3..a4bcf3c 100644 --- a/internal/server/user/state/state_test.go +++ b/internal/server/user/state/state_test.go @@ -142,3 +142,26 @@ func TestSnapshotNonBlockingReadWithOtherReaders(t *testing.T) { t.Error("Route list couldn't be readed while mutex was acquired for read") } } + +func TestAppendReturnsTheInsertedRoutedWithTheActualIndexWhenEmpty(t *testing.T) { + srl := New() + + r := srl.Append(model.Route{}) + + if r.Index != 0 { + t.Errorf("Index of the returned route is not 0, but %d", r.Index) + } +} + +func TestAppendReturnsTheInsertedRoutedWithTheActualIndexWhenPopulated(t *testing.T) { + srl := New() + + var r model.Route + + for i := 0; i < 42; i++ { + r = srl.Append(model.Route{}) + } + if r.Index != 42-1 { + t.Errorf("Index of the returned route is not the last one, i.e., 41, but %d", r.Index) + } +}