go-chart/value_buffer_test.go

193 lines
4 KiB
Go
Raw Normal View History

2019-02-13 19:09:26 -05:00
package chart
2016-07-14 12:27:23 -04:00
import (
"testing"
2018-04-05 03:42:38 -04:00
"github.com/blend/go-sdk/assert"
2016-07-14 12:27:23 -04:00
)
2019-02-13 21:55:13 -05:00
func TestBuffer(t *testing.T) {
2016-07-14 12:27:23 -04:00
assert := assert.New(t)
2019-02-13 21:55:13 -05:00
buffer := NewValueBuffer()
2016-07-14 12:27:23 -04:00
buffer.Enqueue(1)
assert.Equal(1, buffer.Len())
assert.Equal(1, buffer.Peek())
assert.Equal(1, buffer.PeekBack())
buffer.Enqueue(2)
assert.Equal(2, buffer.Len())
assert.Equal(1, buffer.Peek())
assert.Equal(2, buffer.PeekBack())
buffer.Enqueue(3)
assert.Equal(3, buffer.Len())
assert.Equal(1, buffer.Peek())
assert.Equal(3, buffer.PeekBack())
buffer.Enqueue(4)
assert.Equal(4, buffer.Len())
assert.Equal(1, buffer.Peek())
assert.Equal(4, buffer.PeekBack())
buffer.Enqueue(5)
assert.Equal(5, buffer.Len())
assert.Equal(1, buffer.Peek())
assert.Equal(5, buffer.PeekBack())
buffer.Enqueue(6)
assert.Equal(6, buffer.Len())
assert.Equal(1, buffer.Peek())
assert.Equal(6, buffer.PeekBack())
buffer.Enqueue(7)
assert.Equal(7, buffer.Len())
assert.Equal(1, buffer.Peek())
assert.Equal(7, buffer.PeekBack())
buffer.Enqueue(8)
assert.Equal(8, buffer.Len())
assert.Equal(1, buffer.Peek())
assert.Equal(8, buffer.PeekBack())
value := buffer.Dequeue()
assert.Equal(1, value)
assert.Equal(7, buffer.Len())
assert.Equal(2, buffer.Peek())
assert.Equal(8, buffer.PeekBack())
value = buffer.Dequeue()
assert.Equal(2, value)
assert.Equal(6, buffer.Len())
assert.Equal(3, buffer.Peek())
assert.Equal(8, buffer.PeekBack())
value = buffer.Dequeue()
assert.Equal(3, value)
assert.Equal(5, buffer.Len())
assert.Equal(4, buffer.Peek())
assert.Equal(8, buffer.PeekBack())
value = buffer.Dequeue()
assert.Equal(4, value)
assert.Equal(4, buffer.Len())
assert.Equal(5, buffer.Peek())
assert.Equal(8, buffer.PeekBack())
value = buffer.Dequeue()
assert.Equal(5, value)
assert.Equal(3, buffer.Len())
assert.Equal(6, buffer.Peek())
assert.Equal(8, buffer.PeekBack())
value = buffer.Dequeue()
assert.Equal(6, value)
assert.Equal(2, buffer.Len())
assert.Equal(7, buffer.Peek())
assert.Equal(8, buffer.PeekBack())
value = buffer.Dequeue()
assert.Equal(7, value)
assert.Equal(1, buffer.Len())
assert.Equal(8, buffer.Peek())
assert.Equal(8, buffer.PeekBack())
value = buffer.Dequeue()
assert.Equal(8, value)
assert.Equal(0, buffer.Len())
2019-02-13 21:55:13 -05:00
assert.Zero(buffer.Peek())
assert.Zero(buffer.PeekBack())
2016-07-14 12:27:23 -04:00
}
2019-02-13 21:55:13 -05:00
func TestBufferClear(t *testing.T) {
2016-07-14 12:27:23 -04:00
assert := assert.New(t)
2019-02-13 21:55:13 -05:00
buffer := NewValueBuffer()
2016-07-14 12:27:23 -04:00
buffer.Enqueue(1)
buffer.Enqueue(1)
buffer.Enqueue(1)
buffer.Enqueue(1)
buffer.Enqueue(1)
buffer.Enqueue(1)
buffer.Enqueue(1)
buffer.Enqueue(1)
assert.Equal(8, buffer.Len())
buffer.Clear()
assert.Equal(0, buffer.Len())
2019-02-13 21:55:13 -05:00
assert.Zero(buffer.Peek())
assert.Zero(buffer.PeekBack())
2016-07-14 12:27:23 -04:00
}
2019-02-13 21:55:13 -05:00
func TestBufferArray(t *testing.T) {
2016-07-14 12:27:23 -04:00
assert := assert.New(t)
2019-02-13 21:55:13 -05:00
buffer := NewValueBuffer()
2016-07-14 12:27:23 -04:00
buffer.Enqueue(1)
buffer.Enqueue(2)
buffer.Enqueue(3)
buffer.Enqueue(4)
buffer.Enqueue(5)
2019-02-13 21:55:13 -05:00
contents := buffer.Array()
assert.Len(contents, 5)
2016-07-14 12:27:23 -04:00
assert.Equal(1, contents[0])
assert.Equal(2, contents[1])
assert.Equal(3, contents[2])
assert.Equal(4, contents[3])
assert.Equal(5, contents[4])
}
2019-02-13 21:55:13 -05:00
func TestBufferEach(t *testing.T) {
2016-07-14 12:27:23 -04:00
assert := assert.New(t)
2019-02-13 21:55:13 -05:00
buffer := NewValueBuffer()
2016-07-14 12:27:23 -04:00
for x := 1; x < 17; x++ {
2019-02-13 21:55:13 -05:00
buffer.Enqueue(float64(x))
2016-07-14 12:27:23 -04:00
}
called := 0
2019-02-13 21:55:13 -05:00
buffer.Each(func(_ int, v float64) {
if v == float64(called+1) {
called++
2016-07-14 12:27:23 -04:00
}
})
assert.Equal(16, called)
}
2019-02-13 21:55:13 -05:00
func TestNewBuffer(t *testing.T) {
assert := assert.New(t)
2019-02-13 21:55:13 -05:00
empty := NewValueBuffer()
assert.NotNil(empty)
assert.Zero(empty.Len())
assert.Equal(bufferDefaultCapacity, empty.Capacity())
assert.Zero(empty.Peek())
assert.Zero(empty.PeekBack())
}
2019-02-13 21:55:13 -05:00
func TestNewBufferWithValues(t *testing.T) {
assert := assert.New(t)
2019-02-13 21:55:13 -05:00
values := NewValueBuffer(1, 2, 3, 4, 5)
assert.NotNil(values)
assert.Equal(5, values.Len())
assert.Equal(1, values.Peek())
assert.Equal(5, values.PeekBack())
}
2019-02-13 21:55:13 -05:00
func TestBufferGrowth(t *testing.T) {
assert := assert.New(t)
2019-02-13 21:55:13 -05:00
values := NewValueBuffer(1, 2, 3, 4, 5)
for i := 0; i < 1<<10; i++ {
values.Enqueue(float64(i))
}
2019-02-13 21:55:13 -05:00
assert.Equal(1<<10-1, values.PeekBack())
}