github.com/klaytn/klaytn@v1.12.1/cmd/utils/flaggroup_test.go (about)

     1  // Copyright 2020 The klaytn Authors
     2  // This file is part of the klaytn library.
     3  //
     4  // The klaytn library is free software: you can redistribute it and/or modify
     5  // it under the terms of the GNU Lesser General Public License as published by
     6  // the Free Software Foundation, either version 3 of the License, or
     7  // (at your option) any later version.
     8  //
     9  // The klaytn library is distributed in the hope that it will be useful,
    10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    12  // GNU Lesser General Public License for more details.
    13  //
    14  // You should have received a copy of the GNU Lesser General Public License
    15  // along with the klaytn library. If not, see <http://www.gnu.org/licenses/>.
    16  
    17  package utils
    18  
    19  import (
    20  	"testing"
    21  
    22  	"github.com/stretchr/testify/assert"
    23  
    24  	"github.com/urfave/cli/v2"
    25  )
    26  
    27  func TestFlagGroups_Duplication(t *testing.T) {
    28  	testGroups := FlagGroups
    29  	exist := make(map[string]bool)
    30  
    31  	for _, group := range testGroups {
    32  		for _, flag := range group.Flags {
    33  			if exist[flag.Names()[0]] == true {
    34  				t.Error("a flag belong to more than one group", "flag", flag.Names()[0])
    35  			}
    36  			exist[flag.Names()[0]] = true
    37  		}
    38  	}
    39  }
    40  
    41  func TestCategorizeFlags(t *testing.T) {
    42  	var testFlags []cli.Flag
    43  
    44  	// Sort flagGroups to compare with actualGroups which is a sorted slice.
    45  	expectedGroups := sortFlagGroup(FlagGroups, uncategorized)
    46  
    47  	// Prepare flags to be categorized
    48  	for _, group := range expectedGroups {
    49  		testFlags = append(testFlags, group.Flags...)
    50  	}
    51  
    52  	actualGroups := CategorizeFlags(testFlags)
    53  
    54  	assert.Equal(t, expectedGroups, actualGroups)
    55  }
    56  
    57  func TestCategorizeFlags_Duplication(t *testing.T) {
    58  	var testFlags []cli.Flag
    59  	var testFlagsDup []cli.Flag
    60  
    61  	// Prepare a slice of test flags and a slice of duplicated test flags.
    62  	for _, group := range FlagGroups {
    63  		testFlags = append(testFlags, group.Flags...)
    64  		testFlagsDup = append(testFlagsDup, group.Flags...)
    65  		testFlagsDup = append(testFlagsDup, group.Flags...)
    66  	}
    67  
    68  	expected := CategorizeFlags(testFlags)
    69  	actual := CategorizeFlags(testFlagsDup)
    70  
    71  	assert.Equal(t, expected, actual)
    72  }