github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/courier/swagger/gen/enum_scanner_test.go (about)

     1  package gen
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  
     8  	"github.com/johnnyeven/libtools/codegen/loaderx"
     9  )
    10  
    11  func TestEnumScanner_WithSkip(t *testing.T) {
    12  	tt := assert.New(t)
    13  
    14  	pkgImportPath, program := loaderx.NewTestProgram(`
    15  	package main
    16  
    17  	type State int
    18  
    19  	const (
    20  		STATE_UNKNOWN State = iota
    21  		STATE__ONE          // one
    22  		STATE__TWO          // two
    23  		STATE__THREE        // three
    24  		_
    25  		STATE__FOUR State = iota + 100 // four
    26  	)
    27  	`)
    28  
    29  	scanner := NewEnumScanner(program)
    30  	query := loaderx.NewQuery(program, pkgImportPath)
    31  	enums := scanner.Enum(query.TypeName("State"))
    32  
    33  	tt.Equal(Enum{
    34  		{
    35  			Label: "four",
    36  			Value: "FOUR",
    37  			Val:   int64(105),
    38  		},
    39  		{
    40  			Value: "ONE",
    41  			Label: "one",
    42  			Val:   int64(1),
    43  		},
    44  		{
    45  			Value: "THREE",
    46  			Label: "three",
    47  			Val:   int64(3),
    48  		},
    49  		{
    50  			Value: "TWO",
    51  			Label: "two",
    52  			Val:   int64(2),
    53  		},
    54  	}, enums)
    55  }
    56  
    57  func TestEnumScanner_MultipleBlock(t *testing.T) {
    58  	tt := assert.New(t)
    59  
    60  	pkgImportPath, program := loaderx.NewTestProgram(`
    61  	package main
    62  
    63  	type State int
    64  
    65  	const (
    66  		STATE_UNKNOWN State = iota
    67  		STATE__ONE          // one
    68  	)
    69  
    70  	const (
    71  		STATE__FOUR State = iota + 100 // four
    72  	)
    73  	`)
    74  
    75  	scanner := NewEnumScanner(program)
    76  	query := loaderx.NewQuery(program, pkgImportPath)
    77  	enums := scanner.Enum(query.TypeName("State"))
    78  
    79  	tt.Equal(Enum{
    80  		{
    81  			Label: "four",
    82  			Value: "FOUR",
    83  			Val:   int64(100),
    84  		},
    85  		{
    86  			Label: "one",
    87  			Value: "ONE",
    88  			Val:   int64(1),
    89  		},
    90  	}, enums)
    91  }
    92  
    93  func TestEnumScanner_TestEnumValDirectly(t *testing.T) {
    94  	tt := assert.New(t)
    95  
    96  	pkgImportPath, program := loaderx.NewTestProgram(`
    97  	package main
    98  
    99  	type State string
   100  
   101  	const (
   102  		One  State  = "ONE"			// one
   103  		Four State  = "FOUR" 		// four
   104  	)
   105  	`)
   106  
   107  	scanner := NewEnumScanner(program)
   108  	query := loaderx.NewQuery(program, pkgImportPath)
   109  	enums := scanner.Enum(query.TypeName("State"))
   110  
   111  	tt.Equal(Enum{
   112  		{
   113  			Label: "four",
   114  			Value: "FOUR",
   115  			Val:   "FOUR",
   116  		},
   117  		{
   118  			Label: "one",
   119  			Value: "ONE",
   120  			Val:   "ONE",
   121  		},
   122  	}, enums)
   123  }