| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package queue
- import "testing"
- func TestQueueLength(t *testing.T) {
- q := New()
- if q.Length() != 0 {
- t.Error("empty queue length not 0")
- }
- for i := 0; i < 1000; i++ {
- q.Add(i)
- if q.Length() != i+1 {
- t.Error("adding: queue with", i , "elements has length", q.Length())
- }
- }
- for i := 0; i < 1000; i++ {
- q.Remove()
- if q.Length() != 1000-i-1 {
- t.Error("removing: queue with", 1000-i-i , "elements has length", q.Length())
- }
- }
- }
- // General warning: Go's benchmark utility (go test -bench .) increases the number of
- // iterations until the benchmarks take a reasonable amount of time to run; memory usage
- // is *NOT* considered. On my machine, these benchmarks hit around ~1GB before they've had
- // enough, but if you have less than that available and start swapping, then all bets are off.
- func BenchmarkQueueSerial(b *testing.B) {
- q := New()
- for i := 0; i < b.N; i++ {
- q.Add(nil)
- }
- for i := 0; i < b.N; i++ {
- q.Remove()
- }
- }
- func BenchmarkQueueTickTock(b *testing.B) {
- q := New()
- for i := 0; i < b.N; i++ {
- q.Add(nil)
- q.Remove()
- }
- }
|