feat: add validateNum/validateInt helpers and runtime type checks for list methods
Replace the old validateIndex function with validateNum and validateInt helpers that produce descriptive runtime error messages. Add new test files covering invalid index types, out-of-bounds indices, and iterator validation for list insert, iterate, and iteratorValue methods. Rename existing number operator error tests to use consistent "must be a number" phrasing.
This commit is contained in:
@@ -1,6 +1,3 @@
|
||||
// TODO: What happens if the index isn't an integer?
|
||||
// TODO: Out of bounds.
|
||||
|
||||
// Add to empty list.
|
||||
var a = []
|
||||
a.insert(1, 0)
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1, 2, 3]
|
||||
a.insert("value", 1.5) // expect runtime error: Index must be an integer.
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1, 2, 3]
|
||||
a.insert("value", "2") // expect runtime error: Index must be a number.
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1, 2, 3]
|
||||
a.insert("value", 4) // expect runtime error: Index out of bounds.
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1, 2, 3]
|
||||
a.insert("value", -5) // expect runtime error: Index out of bounds.
|
||||
@@ -0,0 +1,7 @@
|
||||
var a = ["one", "two", "three", "four"]
|
||||
IO.write(a.iterate(null)) // expect: 0
|
||||
IO.write(a.iterate(0)) // expect: 1
|
||||
IO.write(a.iterate(1)) // expect: 2
|
||||
IO.write(a.iterate(2)) // expect: 3
|
||||
IO.write(a.iterate(3)) // expect: false
|
||||
IO.write(a.iterate(-1)) // expect: false
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1, 2, 3]
|
||||
a.iterate(1.5) // expect runtime error: Iterator must be an integer.
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1, 2, 3]
|
||||
a.iterate("2") // expect runtime error: Iterator must be a number.
|
||||
@@ -0,0 +1,5 @@
|
||||
var a = ["one", "two", "three", "four"]
|
||||
IO.write(a.iteratorValue(0)) // expect: one
|
||||
IO.write(a.iteratorValue(1)) // expect: two
|
||||
IO.write(a.iteratorValue(2)) // expect: three
|
||||
IO.write(a.iteratorValue(3)) // expect: four
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1, 2, 3]
|
||||
a.iteratorValue(1.5) // expect runtime error: Iterator must be an integer.
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1, 2, 3]
|
||||
a.iteratorValue("2") // expect runtime error: Iterator must be a number.
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1, 2, 3]
|
||||
a.iteratorValue(4) // expect runtime error: Iterator out of bounds.
|
||||
@@ -0,0 +1,2 @@
|
||||
var a = [1, 2, 3]
|
||||
a.iteratorValue(-5) // expect runtime error: Iterator out of bounds.
|
||||
Reference in New Issue
Block a user