github.com/NeowayLabs/nash@v0.2.2-0.20200127205349-a227041ffd50/tests/listindex_test.go (about)

     1  package tests
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/madlambda/nash/tests/internal/tester"
     7  )
     8  
     9  func TestListIndexing(t *testing.T) {
    10  	tester.Run(t, Nashcmd,
    11  		tester.TestCase{
    12  			Name: "PositionalAccess",
    13  			ScriptCode: `
    14  				var a = ("1" "2")
    15  				echo $a[0]
    16  				echo $a[1]
    17  			`,
    18  			ExpectStdout: "1\n2\n",
    19  		},
    20  		tester.TestCase{
    21  			Name: "PositionalAssigment",
    22  			ScriptCode: `
    23  				var a = ("1" "2")
    24  				a[0] = "9"
    25  				a[1] = "p"
    26  				echo $a[0] + $a[1]
    27  			`,
    28  			ExpectStdout: "9p\n",
    29  		},
    30  		tester.TestCase{
    31  			Name: "PositionalAccessWithVar",
    32  			ScriptCode: `
    33  				var a = ("1" "2")
    34  				var i = "0"
    35  				echo $a[$i]
    36  				i = "1"
    37  				echo $a[$i]
    38  			`,
    39  			ExpectStdout: "1\n2\n",
    40  		},
    41  		tester.TestCase{
    42  			Name: "Iteration",
    43  			ScriptCode: `
    44  				var a = ("1" "2" "3")
    45  				for x in $a {
    46  					echo $x
    47  				}
    48  			`,
    49  			ExpectStdout: "1\n2\n3\n",
    50  		},
    51  		tester.TestCase{
    52  			Name: "IterateEmpty",
    53  			ScriptCode: `
    54  				var a = ()
    55  				for x in $a {
    56  					exit("1")
    57  				}
    58  				echo "ok"
    59  			`,
    60  			ExpectStdout: "ok\n",
    61  		},
    62  		tester.TestCase{
    63  			Name: "IndexOutOfRangeFails",
    64  			ScriptCode: `
    65  				var a = ("1" "2" "3")
    66  				echo $a[3]
    67  			`,
    68  			Fails: true,
    69  			ExpectStderrToContain: "IndexError",
    70  		},
    71  		tester.TestCase{
    72  			Name: "IndexEmptyFails",
    73  			ScriptCode: `
    74  				var a = ()
    75  				echo $a[0]
    76  			`,
    77  			Fails: true,
    78  			ExpectStderrToContain: "IndexError",
    79  		},
    80  	)
    81  }