Files
Johan Fylling 7bb6dbe36b Preparing for v1 API
Moving (most) source to v1 root package to prepare for v0/v1 API separation.

Signed-off-by: Johan Fylling <johan.dev@fylling.se>
2024-12-12 15:09:03 +01:00

106 lines
2.2 KiB
Go

package encoding
import (
"fmt"
"testing"
)
func TestConfigValidation(t *testing.T) {
tests := []struct {
input string
wantErr bool
}{
{
input: `{}`,
wantErr: false,
},
{
input: `{"gzip": {"min_length": "not-a-number"}}`,
wantErr: true,
},
{
input: `{"gzip": {min_length": 42}}`,
wantErr: false,
},
{
input: `{"gzip":{"min_length": "42"}}`,
wantErr: true,
},
{
input: `{"gzip":{"min_length": 0}}`,
wantErr: true,
},
{
input: `{"gzip":{"min_length": -10}}`,
wantErr: true,
},
{
input: `{"gzip":{"random_key": 0}}`,
wantErr: false,
},
{
input: `{"gzip": {"min_length": -10, "compression_level": 13}}`,
wantErr: true,
},
{
input: `{"gzip":{"compression_level": "not-an-number"}}`,
wantErr: true,
},
{
input: `{"gzip":{"compression_level": 1}}`,
wantErr: false,
},
{
input: `{"gzip":{"compression_level": 13}}`,
wantErr: true,
},
{
input: `{"gzip":{"min_length": 42, "compression_level": 9}}`,
wantErr: false,
},
}
for i, test := range tests {
t.Run(fmt.Sprintf("TestConfigValidation_case_%d", i), func(t *testing.T) {
_, err := NewConfigBuilder().WithBytes([]byte(test.input)).Parse()
if err != nil && !test.wantErr {
t.Fail()
}
if err == nil && test.wantErr {
t.Fail()
}
})
}
}
func TestConfigValue(t *testing.T) {
tests := []struct {
input string
minLengthExpectedValue int
compressionLevelExpectedValue int
}{
{
input: `{}`,
minLengthExpectedValue: 1024,
compressionLevelExpectedValue: 9,
},
{
input: `{"gzip":{"min_length": 42, "compression_level": 1}}`,
minLengthExpectedValue: 42,
compressionLevelExpectedValue: 1,
},
}
for i, test := range tests {
t.Run(fmt.Sprintf("TestConfigValue_case_%d", i), func(t *testing.T) {
config, err := NewConfigBuilder().WithBytes([]byte(test.input)).Parse()
if err != nil {
t.Fail()
}
if *config.Gzip.MinLength != test.minLengthExpectedValue || *config.Gzip.CompressionLevel != test.compressionLevelExpectedValue {
t.Fail()
}
})
}
}