package zstd import ( "strconv" "testing" ) func TestEncoderLevelFromString(t *testing.T) { type args struct { s string } tests := []struct { name string args args want bool want1 EncoderLevel }{ { name: "fastest", args: args{s: "fastest"}, want: true, want1: SpeedFastest, }, { name: "fastest-upper", args: args{s: "FASTEST"}, want: true, want1: SpeedFastest, }, { name: "default", args: args{s: "default"}, want: true, want1: SpeedDefault, }, { name: "default-UPPER", args: args{s: "Default"}, want: true, want1: SpeedDefault, }, { name: "invalid", args: args{s: "invalid"}, want: false, want1: SpeedDefault, }, { name: "unknown", args: args{s: "unknown"}, want: false, want1: SpeedDefault, }, { name: "empty", args: args{s: ""}, want: false, want1: SpeedDefault, }, { name: "fastest-string", args: args{s: SpeedFastest.String()}, want: true, want1: SpeedFastest, }, { name: "default-string", args: args{s: SpeedDefault.String()}, want: true, want1: SpeedDefault, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got, got1 := EncoderLevelFromString(tt.args.s) if got != tt.want { t.Errorf("EncoderLevelFromString() got = %v, want %v", got, tt.want) } if got1 != tt.want1 { t.Errorf("EncoderLevelFromString() got1 = %v, want %v", got1, tt.want1) } }) } } func TestEncoderLevelFromZstd(t *testing.T) { type args struct { level int } tests := []struct { name string args args want EncoderLevel }{ { name: "level-1", args: args{level: 1}, want: SpeedFastest, }, { name: "level-minus1", args: args{level: -1}, want: SpeedFastest, }, { name: "level-3", args: args{level: 3}, want: SpeedDefault, }, { name: "level-4", args: args{level: 4}, want: SpeedDefault, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := EncoderLevelFromZstd(tt.args.level); got != tt.want { t.Errorf("EncoderLevelFromZstd() = %v, want %v", got, tt.want) } }) } } func TestWindowSize(t *testing.T) { tests := []struct { windowSize int err bool }{ {1 << 9, true}, {1 << 10, false}, {(1 << 10) + 1, true}, {(1 << 10) * 3, true}, {MaxWindowSize, false}, } for _, tt := range tests { t.Run(strconv.Itoa(tt.windowSize), func(t *testing.T) { var options encoderOptions err := WithWindowSize(tt.windowSize)(&options) if tt.err { if err == nil { t.Error("did not get error for invalid window size") } } else { if err != nil { t.Error("got error for valid window size") } if options.windowSize != tt.windowSize { t.Error("failed to set window size") } } }) } }