github.com/aavshr/aws-sdk-go@v1.41.3/internal/ini/ini_lexer_test.go (about)

     1  //go:build go1.7
     2  // +build go1.7
     3  
     4  package ini
     5  
     6  import (
     7  	"bytes"
     8  	"io"
     9  	"reflect"
    10  	"testing"
    11  )
    12  
    13  func TestTokenize(t *testing.T) {
    14  	numberToken := newToken(TokenLit, []rune("123"), IntegerType)
    15  	numberToken.base = 10
    16  	cases := []struct {
    17  		r              io.Reader
    18  		expectedTokens []Token
    19  		expectedError  bool
    20  	}{
    21  		{
    22  			r: bytes.NewBuffer([]byte(`x = 123`)),
    23  			expectedTokens: []Token{
    24  				newToken(TokenLit, []rune("x"), StringType),
    25  				newToken(TokenWS, []rune(" "), NoneType),
    26  				newToken(TokenOp, []rune("="), NoneType),
    27  				newToken(TokenWS, []rune(" "), NoneType),
    28  				numberToken,
    29  			},
    30  		},
    31  		{
    32  			r: bytes.NewBuffer([]byte(`[ foo ]`)),
    33  			expectedTokens: []Token{
    34  				newToken(TokenSep, []rune("["), NoneType),
    35  				newToken(TokenWS, []rune(" "), NoneType),
    36  				newToken(TokenLit, []rune("foo"), StringType),
    37  				newToken(TokenWS, []rune(" "), NoneType),
    38  				newToken(TokenSep, []rune("]"), NoneType),
    39  			},
    40  		},
    41  	}
    42  
    43  	for _, c := range cases {
    44  		lex := iniLexer{}
    45  		tokens, err := lex.Tokenize(c.r)
    46  
    47  		if e, a := c.expectedError, err != nil; e != a {
    48  			t.Errorf("expected %t, but received %t", e, a)
    49  		}
    50  
    51  		if e, a := c.expectedTokens, tokens; !reflect.DeepEqual(e, a) {
    52  			t.Errorf("expected %v, but received %v", e, a)
    53  		}
    54  	}
    55  }