...

Source file src/github.com/udacity/graphb/argument_test.go

Documentation: github.com/udacity/graphb

     1  package graphb
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func TestArgumentAny(t *testing.T) {
    10  	arg, err := ArgumentAny("arg", 1)
    11  	assert.Nil(t, err)
    12  	assert.Equal(t, Argument{"arg", argInt(1)}, arg)
    13  
    14  	arg, err = ArgumentAny("arg", true)
    15  	assert.Nil(t, err)
    16  	assert.Equal(t, Argument{"arg", argBool(true)}, arg)
    17  
    18  	arg, err = ArgumentAny("arg", "str")
    19  	assert.Nil(t, err)
    20  	assert.Equal(t, Argument{"arg", argString("str")}, arg)
    21  
    22  	arg, err = ArgumentAny("arg", []string{"str", "slice"})
    23  	assert.Nil(t, err)
    24  	assert.Equal(t, Argument{"arg", argStringSlice([]string{"str", "slice"})}, arg)
    25  
    26  	arg, err = ArgumentAny("arg", []bool{true, false})
    27  	assert.Nil(t, err)
    28  	assert.Equal(t, Argument{"arg", argBoolSlice([]bool{true, false})}, arg)
    29  
    30  	arg, err = ArgumentAny("arg", []int{1, 2})
    31  	assert.Nil(t, err)
    32  	assert.Equal(t, Argument{"arg", argIntSlice([]int{1, 2})}, arg)
    33  
    34  	// Type Not Supported
    35  	arg, err = ArgumentAny("arg", 1.1)
    36  	assert.IsType(t, ArgumentTypeNotSupportedErr{}, err)
    37  	assert.Equal(t, "Argument 1.1 of Type float64 is not supported", err.Error())
    38  	assert.Equal(t, Argument{}, arg)
    39  }
    40  
    41  func TestArgumentBool(t *testing.T) {
    42  	a := ArgumentBool("blocked", true)
    43  	assert.Equal(t, Argument{"blocked", argBool(true)}, a)
    44  
    45  	a = ArgumentBool("blocked", false)
    46  	assert.Equal(t, Argument{"blocked", argBool(false)}, a)
    47  }
    48  
    49  func TestArgumentInt(t *testing.T) {
    50  	a := ArgumentInt("blocked", 1)
    51  	assert.Equal(t, Argument{"blocked", argInt(1)}, a)
    52  }
    53  
    54  func TestArgumentString(t *testing.T) {
    55  	a := ArgumentString("blocked", "a")
    56  	assert.Equal(t, Argument{"blocked", argString("a")}, a)
    57  	a = ArgumentString("blocked", "")
    58  	assert.Equal(t, Argument{"blocked", argString("")}, a)
    59  }
    60  
    61  func TestArgumentStringSlice(t *testing.T) {
    62  	a := ArgumentStringSlice("blocked", "a", "b", "", " ", "d")
    63  	assert.Equal(t, Argument{"blocked", argStringSlice([]string{"a", "b", "", " ", "d"})}, a)
    64  
    65  	a = ArgumentStringSlice("blocked")
    66  	assert.Equal(t, Argument{"blocked", argStringSlice(nil)}, a)
    67  }
    68  
    69  func Test_argBool(t *testing.T) {
    70  	b := argBool(true)
    71  	i := 0
    72  	for str := range b.stringChan() {
    73  		assert.Equal(t, "true", str)
    74  		i++
    75  	}
    76  	assert.Equal(t, 1, i)
    77  }
    78  
    79  func Test_argBoolSlice(t *testing.T) {
    80  	bs := argBoolSlice([]bool{true, false})
    81  	c := bs.stringChan()
    82  	i := 0
    83  	tokens := []string{"[", "true", ",", "false", "]"}
    84  	for str, ok := <-c; ok; str, ok = <-c {
    85  		assert.Equal(t, tokens[i], str)
    86  		i++
    87  	}
    88  	assert.Equal(t, len(tokens), i)
    89  }
    90  
    91  func Test_argIntSlice(t *testing.T) {
    92  	is := argIntSlice([]int{1, -1, 0})
    93  	tokens := []string{"[", "1", ",", "-1", ",", "0", "]"}
    94  	i := 0
    95  	for str := range is.stringChan() {
    96  		assert.Equal(t, tokens[i], str)
    97  		i++
    98  	}
    99  	assert.Equal(t, len(tokens), i)
   100  }
   101  

View as plain text