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 }