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  }