1 package zstd
2
3 import (
4 "strconv"
5 "testing"
6 )
7
8 func 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
86 func 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
125 func 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
View as plain text