1package zstd 2 3import ( 4 "strconv" 5 "testing" 6) 7 8func TestEncoderLevelFromString(t *testing.T) { 9 type args struct { 10 s string 11 } 12 tests := []struct { 13 name string 14 args args 15 want bool 16 want1 EncoderLevel 17 }{ 18 { 19 name: "fastest", 20 args: args{s: "fastest"}, 21 want: true, 22 want1: SpeedFastest, 23 }, 24 { 25 name: "fastest-upper", 26 args: args{s: "FASTEST"}, 27 want: true, 28 want1: SpeedFastest, 29 }, 30 { 31 name: "default", 32 args: args{s: "default"}, 33 want: true, 34 want1: SpeedDefault, 35 }, 36 { 37 name: "default-UPPER", 38 args: args{s: "Default"}, 39 want: true, 40 want1: SpeedDefault, 41 }, 42 { 43 name: "invalid", 44 args: args{s: "invalid"}, 45 want: false, 46 want1: SpeedDefault, 47 }, 48 { 49 name: "unknown", 50 args: args{s: "unknown"}, 51 want: false, 52 want1: SpeedDefault, 53 }, 54 { 55 name: "empty", 56 args: args{s: ""}, 57 want: false, 58 want1: SpeedDefault, 59 }, 60 { 61 name: "fastest-string", 62 args: args{s: SpeedFastest.String()}, 63 want: true, 64 want1: SpeedFastest, 65 }, 66 { 67 name: "default-string", 68 args: args{s: SpeedDefault.String()}, 69 want: true, 70 want1: SpeedDefault, 71 }, 72 } 73 for _, tt := range tests { 74 t.Run(tt.name, func(t *testing.T) { 75 got, got1 := EncoderLevelFromString(tt.args.s) 76 if got != tt.want { 77 t.Errorf("EncoderLevelFromString() got = %v, want %v", got, tt.want) 78 } 79 if got1 != tt.want1 { 80 t.Errorf("EncoderLevelFromString() got1 = %v, want %v", got1, tt.want1) 81 } 82 }) 83 } 84} 85 86func TestEncoderLevelFromZstd(t *testing.T) { 87 type args struct { 88 level int 89 } 90 tests := []struct { 91 name string 92 args args 93 want EncoderLevel 94 }{ 95 { 96 name: "level-1", 97 args: args{level: 1}, 98 want: SpeedFastest, 99 }, 100 { 101 name: "level-minus1", 102 args: args{level: -1}, 103 want: SpeedFastest, 104 }, 105 { 106 name: "level-3", 107 args: args{level: 3}, 108 want: SpeedDefault, 109 }, 110 { 111 name: "level-4", 112 args: args{level: 4}, 113 want: SpeedDefault, 114 }, 115 } 116 for _, tt := range tests { 117 t.Run(tt.name, func(t *testing.T) { 118 if got := EncoderLevelFromZstd(tt.args.level); got != tt.want { 119 t.Errorf("EncoderLevelFromZstd() = %v, want %v", got, tt.want) 120 } 121 }) 122 } 123} 124 125func TestWindowSize(t *testing.T) { 126 tests := []struct { 127 windowSize int 128 err bool 129 }{ 130 {1 << 9, true}, 131 {1 << 10, false}, 132 {(1 << 10) + 1, true}, 133 {(1 << 10) * 3, true}, 134 {MaxWindowSize, false}, 135 } 136 for _, tt := range tests { 137 t.Run(strconv.Itoa(tt.windowSize), func(t *testing.T) { 138 var options encoderOptions 139 err := WithWindowSize(tt.windowSize)(&options) 140 if tt.err { 141 if err == nil { 142 t.Error("did not get error for invalid window size") 143 } 144 } else { 145 if err != nil { 146 t.Error("got error for valid window size") 147 } 148 if options.windowSize != tt.windowSize { 149 t.Error("failed to set window size") 150 } 151 } 152 }) 153 } 154} 155