| 129 | } |
| 130 | |
| 131 | func TestValidate(t *testing.T) { |
| 132 | type testCase struct { |
| 133 | name string |
| 134 | prefer []string |
| 135 | wantErr bool |
| 136 | } |
| 137 | |
| 138 | var err error |
| 139 | var testCases []testCase |
| 140 | enc := new(Encode) |
| 141 | |
| 142 | enc.writerPools = map[string]*sync.Pool{ |
| 143 | "zstd": nil, |
| 144 | "gzip": nil, |
| 145 | "br": nil, |
| 146 | } |
| 147 | testCases = []testCase{ |
| 148 | { |
| 149 | name: "ValidatePrefer (zstd, gzip & br enabled): valid order with all encoder", |
| 150 | prefer: []string{"zstd", "br", "gzip"}, |
| 151 | wantErr: false, |
| 152 | }, |
| 153 | { |
| 154 | name: "ValidatePrefer (zstd, gzip & br enabled): valid order with 2 out of 3 encoders", |
| 155 | prefer: []string{"br", "gzip"}, |
| 156 | wantErr: false, |
| 157 | }, |
| 158 | { |
| 159 | name: "ValidatePrefer (zstd, gzip & br enabled): valid order with 1 out of 3 encoders", |
| 160 | prefer: []string{"gzip"}, |
| 161 | wantErr: false, |
| 162 | }, |
| 163 | { |
| 164 | name: "ValidatePrefer (zstd, gzip & br enabled): 1 duplicated (once) encoder", |
| 165 | prefer: []string{"gzip", "zstd", "gzip"}, |
| 166 | wantErr: true, |
| 167 | }, |
| 168 | { |
| 169 | name: "ValidatePrefer (zstd, gzip & br enabled): 1 not enabled encoder in prefer list", |
| 170 | prefer: []string{"br", "zstd", "gzip", "deflate"}, |
| 171 | wantErr: true, |
| 172 | }, |
| 173 | { |
| 174 | name: "ValidatePrefer (zstd, gzip & br enabled): no prefer list", |
| 175 | prefer: []string{}, |
| 176 | wantErr: false, |
| 177 | }, |
| 178 | } |
| 179 | |
| 180 | for _, test := range testCases { |
| 181 | t.Run(test.name, func(t *testing.T) { |
| 182 | enc.Prefer = test.prefer |
| 183 | err = enc.Validate() |
| 184 | if (err != nil) != test.wantErr { |
| 185 | t.Errorf("Validate() error = %v, wantErr = %v", err, test.wantErr) |
| 186 | } |
| 187 | }) |
| 188 | } |