github.com/mvdan/u-root-coreutils@v0.0.0-20230122170626-c2eef2898555/pkg/gzip/options_test.go (about) 1 // Copyright 2017-2018 the u-root Authors. All rights reserved 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package gzip 6 7 import ( 8 "flag" 9 "runtime" 10 "testing" 11 12 "github.com/klauspost/pgzip" 13 ) 14 15 func TestOptions_ParseArgs(t *testing.T) { 16 type fields struct { 17 Blocksize int 18 Level int 19 Processes int 20 Decompress bool 21 Force bool 22 Help bool 23 Keep bool 24 Quiet bool 25 Stdin bool 26 Stdout bool 27 Test bool 28 Verbose bool 29 Suffix string 30 } 31 type args struct { 32 args []string 33 cmdLine *flag.FlagSet 34 } 35 tests := []struct { 36 name string 37 fields fields 38 args args 39 wantErr bool 40 }{ // TODO: Add test cases. 41 } 42 for _, tt := range tests { 43 t.Run(tt.name, func(t *testing.T) { 44 o := &Options{ 45 Blocksize: tt.fields.Blocksize, 46 Level: tt.fields.Level, 47 Processes: tt.fields.Processes, 48 Decompress: tt.fields.Decompress, 49 Force: tt.fields.Force, 50 Help: tt.fields.Help, 51 Keep: tt.fields.Keep, 52 Quiet: tt.fields.Quiet, 53 Stdin: tt.fields.Stdin, 54 Stdout: tt.fields.Stdout, 55 Test: tt.fields.Test, 56 Verbose: tt.fields.Verbose, 57 Suffix: tt.fields.Suffix, 58 } 59 if err := o.ParseArgs(tt.args.args, tt.args.cmdLine); (err != nil) != tt.wantErr { 60 t.Errorf("Options.ParseArgs() error = %v, wantErr %v", err, tt.wantErr) 61 } 62 }) 63 } 64 } 65 66 func TestOptions_validate(t *testing.T) { 67 type fields struct { 68 Blocksize int 69 Level int 70 Processes int 71 Decompress bool 72 Force bool 73 Help bool 74 Keep bool 75 Quiet bool 76 Stdin bool 77 Stdout bool 78 Test bool 79 Verbose bool 80 Suffix string 81 } 82 type args struct { 83 moreArgs bool 84 } 85 tests := []struct { 86 name string 87 args args 88 fields fields 89 wantErr bool 90 }{ 91 { 92 name: "Default values no args", 93 fields: fields{Blocksize: 128, Level: -1, Processes: runtime.NumCPU(), Decompress: false, Force: false, Help: false}, 94 args: args{moreArgs: false}, 95 wantErr: true, 96 }, 97 } 98 for _, tt := range tests { 99 t.Run(tt.name, func(t *testing.T) { 100 o := &Options{ 101 Blocksize: tt.fields.Blocksize, 102 Level: tt.fields.Level, 103 Processes: tt.fields.Processes, 104 Decompress: tt.fields.Decompress, 105 Force: tt.fields.Force, 106 Help: tt.fields.Help, 107 Keep: tt.fields.Keep, 108 Quiet: tt.fields.Quiet, 109 Stdin: tt.fields.Stdin, 110 Stdout: tt.fields.Stdout, 111 Test: tt.fields.Test, 112 Verbose: tt.fields.Verbose, 113 Suffix: tt.fields.Suffix, 114 } 115 116 if err := o.validate(tt.args.moreArgs); (err != nil) != tt.wantErr { 117 t.Errorf("Options.validate() error = %v, wantErr %v", err, tt.wantErr) 118 } 119 }) 120 } 121 } 122 123 func Test_parseLevels(t *testing.T) { 124 type args struct { 125 levels [10]bool 126 } 127 tests := []struct { 128 name string 129 args args 130 want int 131 wantErr bool 132 }{ 133 { 134 name: "No level specified", 135 args: args{levels: [10]bool{}}, 136 want: pgzip.DefaultCompression, 137 wantErr: false, 138 }, 139 { 140 name: "Level 1", 141 args: args{levels: [10]bool{false, true, false, false, false, false, false, false, false, false}}, 142 want: 1, 143 wantErr: false, 144 }, 145 { 146 name: "Level 9", 147 args: args{levels: [10]bool{false, false, false, false, false, false, false, false, false, true}}, 148 want: 9, 149 wantErr: false, 150 }, 151 { 152 name: "Multuple levels specified", 153 args: args{levels: [10]bool{false, true, false, false, false, false, false, false, false, true}}, 154 want: 0, 155 wantErr: true, 156 }, 157 } 158 for _, tt := range tests { 159 t.Run(tt.name, func(t *testing.T) { 160 got, err := parseLevels(tt.args.levels) 161 if (err != nil) != tt.wantErr { 162 t.Errorf("parseLevels() error = %v, wantErr %v", err, tt.wantErr) 163 return 164 } 165 if got != tt.want { 166 t.Errorf("parseLevels() = %v, want %v", got, tt.want) 167 } 168 }) 169 } 170 }