...

Source file src/github.com/klauspost/compress/zstd/encoder_options_test.go

Documentation: github.com/klauspost/compress/zstd

     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