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]) } } }) } }