From d736d0ca87a0e86d05324f4d3f642cec275f140e Mon Sep 17 00:00:00 2001 From: Faissal Elamraoui Date: Wed, 28 Dec 2016 12:36:39 +0100 Subject: [PATCH 1/3] Adds Count method to BeeMap struct This adds a Count() method to BeeMap struct that returns the number of items within the safe map. --- utils/safemap.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/utils/safemap.go b/utils/safemap.go index 2e438f2c..a834a55a 100644 --- a/utils/safemap.go +++ b/utils/safemap.go @@ -84,3 +84,10 @@ func (m *BeeMap) Items() map[interface{}]interface{} { } return r } + +// Count returns the number of items within the map. +func (m *BeeMap) Count() int { + m.lock.RLock() + defer m.lock.RUnlock() + return len(m.bm) +} From 75ec8d33a289a99f248e2104742dc97f7fc78cde Mon Sep 17 00:00:00 2001 From: Faissal Elamraoui Date: Wed, 28 Dec 2016 12:39:21 +0100 Subject: [PATCH 2/3] Rewrite safemap_test suite --- utils/safemap_test.go | 55 +++++++++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 18 deletions(-) diff --git a/utils/safemap_test.go b/utils/safemap_test.go index fb271d18..1bfe8699 100644 --- a/utils/safemap_test.go +++ b/utils/safemap_test.go @@ -14,25 +14,44 @@ package utils -import ( - "testing" -) +import "testing" -func Test_beemap(t *testing.T) { - bm := NewBeeMap() - if !bm.Set("astaxie", 1) { - t.Error("set Error") - } - if !bm.Check("astaxie") { - t.Error("check err") - } +var safeMap *BeeMap - if v := bm.Get("astaxie"); v.(int) != 1 { - t.Error("get err") - } - - bm.Delete("astaxie") - if bm.Check("astaxie") { - t.Error("delete err") +func TestNewBeeMap(t *testing.T) { + safeMap = NewBeeMap() + if safeMap == nil { + t.Fatal("expected to return non-nil BeeMap", "got", safeMap) + } +} + +func TestSet(t *testing.T) { + if ok := safeMap.Set("astaxie", 1); !ok { + t.Error("expected", true, "got", false) + } +} + +func TestCheck(t *testing.T) { + if exists := safeMap.Check("astaxie"); !exists { + t.Error("expected", true, "got", false) + } +} + +func TestGet(t *testing.T) { + if val := safeMap.Get("astaxie"); val.(int) != 1 { + t.Error("expected value", 1, "got", val) + } +} + +func TestDelete(t *testing.T) { + safeMap.Delete("astaxie") + if exists := safeMap.Check("astaxie"); exists { + t.Error("expected element to be deleted") + } +} + +func TestCount(t *testing.T) { + if count := safeMap.Count(); count != 0 { + t.Error("expected count to be", 0, "got", count) } } From fe21305bb3eae3ec585a7ae8d7955112d3fe94e8 Mon Sep 17 00:00:00 2001 From: Faissal Elamraoui Date: Thu, 29 Dec 2016 11:05:35 +0100 Subject: [PATCH 3/3] Removes redundant check if key exists in BeeMap --- utils/safemap.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/utils/safemap.go b/utils/safemap.go index a834a55a..1793030a 100644 --- a/utils/safemap.go +++ b/utils/safemap.go @@ -61,10 +61,8 @@ func (m *BeeMap) Set(k interface{}, v interface{}) bool { func (m *BeeMap) Check(k interface{}) bool { m.lock.RLock() defer m.lock.RUnlock() - if _, ok := m.bm[k]; !ok { - return false - } - return true + _, ok := m.bm[k] + return ok } // Delete the given key and value.