github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/metrics/counter_test.go (about) 1 2 //此源码被清华学神尹成大魔王专业翻译分析并修改 3 //尹成QQ77025077 4 //尹成微信18510341407 5 //尹成所在QQ群721929980 6 //尹成邮箱 yinc13@mails.tsinghua.edu.cn 7 //尹成毕业于清华大学,微软区块链领域全球最有价值专家 8 //https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 9 package metrics 10 11 import "testing" 12 13 func BenchmarkCounter(b *testing.B) { 14 c := NewCounter() 15 b.ResetTimer() 16 for i := 0; i < b.N; i++ { 17 c.Inc(1) 18 } 19 } 20 21 func TestCounterClear(t *testing.T) { 22 c := NewCounter() 23 c.Inc(1) 24 c.Clear() 25 if count := c.Count(); 0 != count { 26 t.Errorf("c.Count(): 0 != %v\n", count) 27 } 28 } 29 30 func TestCounterDec1(t *testing.T) { 31 c := NewCounter() 32 c.Dec(1) 33 if count := c.Count(); -1 != count { 34 t.Errorf("c.Count(): -1 != %v\n", count) 35 } 36 } 37 38 func TestCounterDec2(t *testing.T) { 39 c := NewCounter() 40 c.Dec(2) 41 if count := c.Count(); -2 != count { 42 t.Errorf("c.Count(): -2 != %v\n", count) 43 } 44 } 45 46 func TestCounterInc1(t *testing.T) { 47 c := NewCounter() 48 c.Inc(1) 49 if count := c.Count(); 1 != count { 50 t.Errorf("c.Count(): 1 != %v\n", count) 51 } 52 } 53 54 func TestCounterInc2(t *testing.T) { 55 c := NewCounter() 56 c.Inc(2) 57 if count := c.Count(); 2 != count { 58 t.Errorf("c.Count(): 2 != %v\n", count) 59 } 60 } 61 62 func TestCounterSnapshot(t *testing.T) { 63 c := NewCounter() 64 c.Inc(1) 65 snapshot := c.Snapshot() 66 c.Inc(1) 67 if count := snapshot.Count(); 1 != count { 68 t.Errorf("c.Count(): 1 != %v\n", count) 69 } 70 } 71 72 func TestCounterZero(t *testing.T) { 73 c := NewCounter() 74 if count := c.Count(); 0 != count { 75 t.Errorf("c.Count(): 0 != %v\n", count) 76 } 77 } 78 79 func TestGetOrRegisterCounter(t *testing.T) { 80 r := NewRegistry() 81 NewRegisteredCounter("foo", r).Inc(47) 82 if c := GetOrRegisterCounter("foo", r); 47 != c.Count() { 83 t.Fatal(c) 84 } 85 }