deque_test.go
deque_test.go - Overview
This file contains unit tests and benchmarks for the deque implementations in deque.go
. It tests the encoding/decoding of deque entries, and the LRange
and LInsert
operations for both Deque
and DequeBasic
implementations.
Detailed Documentation
Variables
deqRandGenerator *rand.Rand
: A random number generator used for generating test data.deqRunes []rune
: A slice of runes used for generating random strings.
Functions
deqTestInit()
: Initializes the random number generator with a seed based on the current time.deqRandStr(n int) string
: Generates a random string of lengthn
using the runes indeqRunes
.- Parameters:
n int
: The length of the random string to generate.
- Returns: A random string of length
n
.
- Parameters:
TestDeqEncodeEntryString(t *testing.T)
: Tests the encoding and decoding of various string and integer values usingEncodeDeqEntry
andDecodeDeqEntry
.- Parameters:
t *testing.T
: The testing object.
- Parameters:
dequeRPushIntStrMany(howmany int, deq eval.DequeI)
: Pusheshowmany
integer strings onto the right side of the deque.- Parameters:
howmany int
: The number of integers to push.deq eval.DequeI
: The deque to push the integers onto.
- Parameters:
dequeLPushIntStrMany(howmany int, deq eval.DequeI)
: Pusheshowmany
integer strings onto the left side of the deque.- Parameters:
howmany int
: The number of integers to push.deq eval.DequeI
: The deque to push the integers onto.
- Parameters:
dequeLInsertIntStrMany(howMany int, beforeAfter string, deq eval.DequeI)
: Performs multiple LInsert operations on the deque.- Parameters:
howMany int
: The number of LInsert operations to perform.beforeAfter string
: Specifies whether to insert before or after the pivot.deq eval.DequeI
: The deque to perform the LInsert operations on.
- Parameters:
BenchmarkBasicDequeLInsertBefore2000(b *testing.B)
: Benchmarks theLInsert
operation with "before" option forBasicDeque
.- Parameters:
b *testing.B
: The benchmark object.
- Parameters:
BenchmarkBasicDequeLInsertAfter2000(b *testing.B)
: Benchmarks theLInsert
operation with "after" option forBasicDeque
.- Parameters:
b *testing.B
: The benchmark object.
- Parameters:
BenchmarkDequeLInsertBefore2000(b *testing.B)
: Benchmarks theLInsert
operation with "before" option forDeque
.- Parameters:
b *testing.B
: The benchmark object.
- Parameters:
BenchmarkDequeLInsertAfter2000(b *testing.B)
: Benchmarks theLInsert
operation with "after" option forDeque
.- Parameters:
b *testing.B
: The benchmark object.
- Parameters:
BenchmarkBasicDequeRPush20(b *testing.B)
: Benchmarks theRPush
operation forBasicDeque
with 20 elements.- Parameters:
b *testing.B
: The benchmark object.
- Parameters:
BenchmarkBasicDequeRPush200(b *testing.B)
: Benchmarks theRPush
operation forBasicDeque
with 200 elements.- Parameters:
b *testing.B
: The benchmark object.
- Parameters:
BenchmarkBasicDequeRPush2000(b *testing.B)
: Benchmarks theRPush
operation forBasicDeque
with 2000 elements.- Parameters:
b *testing.B
: The benchmark object.
- Parameters:
BenchmarkDequeRPush20(b *testing.B)
: Benchmarks theRPush
operation forDeque
with 20 elements.- Parameters:
b *testing.B
: The benchmark object.
- Parameters:
BenchmarkDequeRPush200(b *testing.B)
: Benchmarks theRPush
operation forDeque
with 200 elements.- Parameters:
b *testing.B
: The benchmark object.
- Parameters:
BenchmarkDequeRPush2000(b *testing.B)
: Benchmarks theRPush
operation forDeque
with 2000 elements.- Parameters:
b *testing.B
: The benchmark object.
- Parameters:
BenchmarkDequeLPush20(b *testing.B)
: Benchmarks theLPush
operation forDeque
with 20 elements.- Parameters:
b *testing.B
: The benchmark object.
- Parameters:
BenchmarkDequeLPush200(b *testing.B)
: Benchmarks theLPush
operation forDeque
with 200 elements.- Parameters:
b *testing.B
: The benchmark object.
- Parameters:
BenchmarkDequeLPush2000(b *testing.B)
: Benchmarks theLPush
operation forDeque
with 2000 elements.- Parameters:
b *testing.B
: The benchmark object.
- Parameters:
TestLRange(t *testing.T)
: Tests theLRange
operation with various start and stop indices for bothDeque
andDequeBasic
implementations.- Parameters:
t *testing.T
: The testing object.
- Parameters:
TestLInsertOnInvalidOperationTypeReturnsError(t *testing.T)
: Tests thatLInsert
returns an error when an invalidbeforeAfter
value is passed.- Parameters:
t *testing.T
: The testing object.
- Parameters:
TestLInsertBasicDeque(t *testing.T)
: Tests theLInsert
operation for theBasicDeque
implementation.- Parameters:
t *testing.T
: The testing object.
- Parameters:
DequeLInsertFixture
: Struct used for setting up test fixtures forLInsert
tests.- Fields:
dq *eval.Deque
: The deque instance.initialElements []string
: Initial elements in the deque.elementsToBeInserted []string
: Elements to be inserted.
- Fields:
newDequeLInsertFixture() *DequeLInsertFixture
: Creates a newDequeLInsertFixture
with a pre-populated deque.- Returns: A pointer to the new fixture.
TestDequeLInsertBefore(t *testing.T)
: Tests theLInsert
operation with the "before" option for theDeque
implementation.- Parameters:
t *testing.T
: The testing object.
- Parameters:
TestLInsertAfter(t *testing.T)
: Tests theLInsert
operation with the "after" option for theDeque
implementation.- Parameters:
t *testing.T
: The testing object.
- Parameters: