1b4c/1brc_test.go
2024-07-31 18:44:22 -04:00

67 lines
1.1 KiB
Go

package main
import (
"testing"
)
func TestCreatePartitions(t *testing.T) {
tests := []struct {
name string
data []byte
seekChar byte
nPart int
expected []partitionRange
}{
{
"NormalCase",
[]byte("xxxx1xxxx1xxxx1xxxx1xxxx1xxxx1xxxx1xxxx1xxxx1"),
'1',
3,
[]partitionRange{{0, 15}, {15, 30}, {30, 45}},
},
{
"NoCharFound",
[]byte("xxx1xxx1xxx1xxx1xxx1xxx1xxx1xxx1xxx1"),
'z',
3,
[]partitionRange{{0, 12}, {12, 24}, {24, 36}},
},
{
"SingleCharData",
[]byte{'g'},
'g',
1,
[]partitionRange{{0, 1}},
},
{
"EmptyData",
[]byte{},
'g',
3,
[]partitionRange{{0, 0}, {0, 0}, {0, 0}},
},
{
"NoPartitions",
[]byte("abcdefghijk"),
'g',
0,
[]partitionRange{},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := createPartitions(tt.data, tt.seekChar, tt.nPart)
if len(result) != len(tt.expected) {
t.Errorf("Got %v, expected %v", result, tt.expected)
}
for i, val := range result {
if val != tt.expected[i] {
t.Errorf("At %v: got %v, expected %v", i, val, tt.expected[i])
}
}
})
}
}