chore: remove entire VM test suite and update test README for CLI-only focus

Delete all VM-related test files including benchmark, call, error, foreign_class, and other API tests, along with their C source, headers, and Wren scripts. Rewrite test/README.md to describe only CLI unit tests and module resolution tests, removing references to VM, compiler, core library, and language semantics tests.
This commit is contained in:
underscorediscovery
2020-02-12 04:16:03 +00:00
parent 8c2d35cfea
commit ce0106ad7e
913 changed files with 3 additions and 281169 deletions
-23
View File
@@ -1,23 +0,0 @@
System.print(true == true) // expect: true
System.print(true == false) // expect: false
System.print(false == true) // expect: false
System.print(false == false) // expect: true
// Not equal to other types.
System.print(true == 1) // expect: false
System.print(false == 0) // expect: false
System.print(true == "true") // expect: false
System.print(false == "false") // expect: false
System.print(false == "") // expect: false
System.print(true != true) // expect: false
System.print(true != false) // expect: true
System.print(false != true) // expect: true
System.print(false != false) // expect: false
// Not equal to other types.
System.print(true != 1) // expect: true
System.print(false != 0) // expect: true
System.print(true != "true") // expect: true
System.print(false != "false") // expect: true
System.print(false != "") // expect: true
-1
View File
@@ -1 +0,0 @@
Bool.new() // expect runtime error: Bool metaclass does not implement 'new()'.
-3
View File
@@ -1,3 +0,0 @@
System.print(!true) // expect: false
System.print(!false) // expect: true
System.print(!!true) // expect: true
-2
View File
@@ -1,2 +0,0 @@
System.print(true.toString) // expect: true
System.print(false.toString) // expect: false
-4
View File
@@ -1,4 +0,0 @@
System.print(true is Bool) // expect: true
System.print(true is Object) // expect: true
System.print(true is Num) // expect: false
System.print(true.type == Bool) // expect: true
-13
View File
@@ -1,13 +0,0 @@
System.print(Num == Num) // expect: true
System.print(Num == Bool) // expect: false
// Not equal to other types.
System.print(Num == 123) // expect: false
System.print(Num == true) // expect: false
System.print(Num != Num) // expect: false
System.print(Num != Bool) // expect: true
// Not equal to other types.
System.print(Num != 123) // expect: true
System.print(Num != true) // expect: true
-13
View File
@@ -1,13 +0,0 @@
class Foo {}
System.print(Foo.name) // expect: Foo
System.print(Foo.type.name) // expect: Foo metaclass
// Make sure the built-in classes have proper names too.
System.print(Object.name) // expect: Object
System.print(Bool.name) // expect: Bool
System.print(Class.name) // expect: Class
// And metaclass names.
System.print(Object.type.name) // expect: Object metaclass
System.print(Bool.type.name) // expect: Bool metaclass
-1
View File
@@ -1 +0,0 @@
Class.new() // expect runtime error: Class does not implement 'new()'.
-15
View File
@@ -1,15 +0,0 @@
class Foo {}
class Bar is Foo {}
class Baz is Bar {}
// A class with no explicit superclass inherits Object.
System.print(Foo.supertype == Object) // expect: true
// Otherwise, it's the superclass.
System.print(Bar.supertype == Foo) // expect: true
System.print(Baz.supertype == Bar) // expect: true
// Object has no supertype.
System.print(Object.supertype) // expect: null
-15
View File
@@ -1,15 +0,0 @@
class Foo {}
// A class is a class.
System.print(Foo is Class) // expect: true
// Its metatype is also a class.
System.print(Foo.type is Class) // expect: true
// The metatype's metatype is Class.
System.print(Foo.type.type == Class) // expect: true
// And Class's metatype circles back onto itself.
System.print(Foo.type.type.type == Class) // expect: true
System.print(Foo.type.type.type.type == Class) // expect: true
System.print(Foo.type.type.type.type.type == Class) // expect: true
-7
View File
@@ -1,7 +0,0 @@
var fiber = Fiber.new {
Fiber.abort("Error message.")
}
System.print(fiber.try()) // expect: Error message.
System.print(fiber.isDone) // expect: true
System.print(fiber.error) // expect: Error message.
-1
View File
@@ -1 +0,0 @@
Fiber.abort("Abort!") // expect runtime error: Abort!
-7
View File
@@ -1,7 +0,0 @@
var fiber = Fiber.new {
Fiber.abort(123)
}
System.print(fiber.try()) // expect: 123
System.print(fiber.isDone) // expect: true
System.print(fiber.error) // expect: 123
-9
View File
@@ -1,9 +0,0 @@
var fiber = Fiber.new {
Fiber.abort(null)
System.print("get here") // expect: get here
Fiber.yield("value")
}
System.print(fiber.try()) // expect: value
System.print(fiber.isDone) // expect: false
System.print(fiber.error) // expect: null
-7
View File
@@ -1,7 +0,0 @@
var fiber = Fiber.new {
System.print("fiber")
}
System.print("before") // expect: before
fiber.call() // expect: fiber
System.print("after") // expect: after
-7
View File
@@ -1,7 +0,0 @@
var fiber
fiber = Fiber.new {
fiber.call() // expect runtime error: Fiber has already been called.
}
fiber.call()
-6
View File
@@ -1,6 +0,0 @@
var fiber = Fiber.new {
System.print("call")
}
fiber.call() // expect: call
fiber.call() // expect runtime error: Cannot call a finished fiber.
-7
View File
@@ -1,7 +0,0 @@
var fiber = Fiber.new {
Fiber.abort("Error!")
System.print("should not get here")
}
fiber.try()
fiber.call() // expect runtime error: Cannot call an aborted fiber.
@@ -1,12 +0,0 @@
var a
var b
a = Fiber.new {
b.call() // expect runtime error: Fiber has already been called.
}
b = Fiber.new {
a.call()
}
b.call()
@@ -1,5 +0,0 @@
var fiber = Fiber.new {
System.print("fiber") // expect: fiber
}
System.print(fiber.call()) // expect: null
-6
View File
@@ -1,6 +0,0 @@
var fiber = Fiber.new {
System.print("fiber")
return "result" // expect: fiber
}
System.print(fiber.call()) // expect: result
-8
View File
@@ -1,8 +0,0 @@
var root = Fiber.current
System.print("begin root") // expect: begin root
Fiber.new {
System.print("in new fiber") // expect: in new fiber
root.call() // expect runtime error: Cannot call root fiber.
System.print("called root")
}.transfer()
-7
View File
@@ -1,7 +0,0 @@
var fiber = Fiber.new {|value|
System.print(value)
}
System.print("before") // expect: before
fiber.call() // expect: null
System.print("after") // expect: after
-12
View File
@@ -1,12 +0,0 @@
var main = Fiber.current
var fiber = Fiber.new {
System.print("transferred")
System.print(main.transfer())
System.print("called")
}
fiber.transfer() // expect: transferred
System.print("main") // expect: main
fiber.call() // expect: null
// expect: called
-7
View File
@@ -1,7 +0,0 @@
var fiber = Fiber.new {
System.print("fiber")
}
System.print("before") // expect: before
fiber.call("value") // expect: fiber
System.print("after") // expect: after
@@ -1,7 +0,0 @@
var fiber
fiber = Fiber.new {
fiber.call(2) // expect runtime error: Fiber has already been called.
}
fiber.call(1)
@@ -1,6 +0,0 @@
var fiber = Fiber.new {
System.print("call")
}
fiber.call(1) // expect: call
fiber.call(2) // expect runtime error: Cannot call a finished fiber.
@@ -1,7 +0,0 @@
var fiber = Fiber.new {
Fiber.abort("Error!")
System.print("should not get here")
}
fiber.try()
fiber.call("value") // expect runtime error: Cannot call an aborted fiber.
@@ -1,9 +0,0 @@
var A = Fiber.new {
B.call(3) // expect runtime error: Fiber has already been called.
}
var B = Fiber.new {
A.call(2)
}
B.call(1)
@@ -1,7 +0,0 @@
var fiber = Fiber.new {|value|
System.print(value)
}
System.print("before") // expect: before
fiber.call("value") // expect: value
System.print("after") // expect: after
@@ -1,12 +0,0 @@
var main = Fiber.current
var fiber = Fiber.new {
System.print("transferred")
System.print(main.transfer())
System.print("called")
}
fiber.transfer() // expect: transferred
System.print("main") // expect: main
fiber.call("value") // expect: value
// expect: called
-7
View File
@@ -1,7 +0,0 @@
var fiber = Fiber.new {
"s".unknown
}
System.print(fiber.error) // expect: null
System.print(fiber.try()) // expect: String does not implement 'unknown'.
System.print(fiber.error) // expect: String does not implement 'unknown'.
-11
View File
@@ -1,11 +0,0 @@
var fiber = Fiber.new {
System.print("1")
Fiber.yield()
System.print("2")
}
System.print(fiber.isDone) // expect: false
fiber.call() // expect: 1
System.print(fiber.isDone) // expect: false
fiber.call() // expect: 2
System.print(fiber.isDone) // expect: true
-6
View File
@@ -1,6 +0,0 @@
var fiber = Fiber.new {
"s".unknown
}
fiber.try()
System.print(fiber.isDone) // expect: true
-1
View File
@@ -1 +0,0 @@
var fiber = Fiber.new("not fn") // expect runtime error: Argument must be a function.
-1
View File
@@ -1 +0,0 @@
var fiber = Fiber.new {|a, b| null } // expect runtime error: Function cannot take more than one parameter.
-19
View File
@@ -1,19 +0,0 @@
var b = Fiber.new {
System.print("fiber b")
}
var a = Fiber.new {
System.print("begin fiber a")
b.call()
System.print("end fiber a")
}
System.print("begin main")
a.call()
System.print("end main")
// expect: begin main
// expect: begin fiber a
// expect: fiber b
// expect: end fiber a
// expect: end main
-24
View File
@@ -1,24 +0,0 @@
var a = Fiber.new {
System.print("a")
}
var b = Fiber.new {
System.print("b before")
a.transfer()
System.print("b after")
}
var c = Fiber.new {
System.print("c before")
b.transfer()
System.print("c after")
}
System.print("start") // expect: start
c.transfer()
// expect: c before
// expect: b before
// expect: a
// Nothing else gets run since the interpreter stops after a completes.
@@ -1,9 +0,0 @@
var F = Fiber.new {
System.print(1) // expect: 1
System.print(F.transfer()) // expect: null
System.print(2) // expect: 2
}
F.call()
// F remembers its original caller so transfers back to main.
System.print(3) // expect: 3
-15
View File
@@ -1,15 +0,0 @@
var A = Fiber.new {
System.print("transferred to A")
B.transferError("error!")
}
var B = Fiber.new {
System.print("started B")
A.transfer()
System.print("should not get here")
}
B.try()
// expect: started B
// expect: transferred to A
System.print(B.error) // expect: error!
@@ -1,10 +0,0 @@
var A = Fiber.new {
B.transferError(123)
}
var B = Fiber.new {
A.transfer()
}
B.try()
System.print(B.error) // expect: 123
@@ -1,18 +0,0 @@
var A = Fiber.new {
System.print(2)
B.transfer()
System.print("nope")
}
var B = Fiber.new {
System.print(1)
A.transfer()
System.print(3)
}
B.call()
// expect: 1
// expect: 2
// expect: 3
// B remembers its original caller so returns to main.
System.print(4) // expect: 4
@@ -1,23 +0,0 @@
var main = Fiber.current
var fiber = Fiber.new {
System.print("fiber 1")
System.print(main.transfer())
// Yield to bounce back to main and clear the caller so we don't get a
// double call() error below.
Fiber.yield()
System.print(main.transfer())
}
fiber.transfer() // expect: fiber 1
System.print("main 1") // expect: main 1
fiber.call("call 1") // expect: call 1
System.print("main 2") // expect: main 2
// Transfer back into the fiber so it has a NULL caller.
fiber.transfer()
fiber.call() // expect: null
System.print("main 3") // expect: main 3
@@ -1,13 +0,0 @@
var main = Fiber.current
var fiber = Fiber.new {
System.print("fiber")
System.print(main.transfer())
}
fiber.transfer() // expect: fiber
System.print("main") // expect: main
fiber.transfer("transfer") // expect: transfer
// This does not get run since we exit when the transferred fiber completes.
System.print("nope")
-6
View File
@@ -1,6 +0,0 @@
var a = Fiber.new {
System.print("run")
}
a.call() // expect: run
a.transfer() // expect runtime error: Cannot transfer to a finished fiber.
-7
View File
@@ -1,7 +0,0 @@
var a = Fiber.new {
Fiber.abort("Error!")
System.print("should not get here")
}
a.try()
a.transfer() // expect runtime error: Cannot transfer to an aborted fiber.
@@ -1,24 +0,0 @@
var a = Fiber.new {|param|
System.print("a %(param)")
}
var b = Fiber.new {|param|
System.print("b before %(param)")
a.transfer()
System.print("b after")
}
var c = Fiber.new {|param|
System.print("c before %(param)")
b.transfer()
System.print("c after")
}
System.print("start") // expect: start
c.transfer()
// expect: c before null
// expect: b before null
// expect: a null
// Nothing else gets run since the interpreter stops after a completes.
-9
View File
@@ -1,9 +0,0 @@
var fiber = Fiber.new {
System.print("called")
System.print(Fiber.yield())
System.print("transferred")
}
fiber.call() // expect: called
fiber.transfer() // expect: null
// expect: transferred
-24
View File
@@ -1,24 +0,0 @@
var a = Fiber.new {
System.print("a")
}
var b = Fiber.new {
System.print("b before")
a.transfer("ignored")
System.print("b after")
}
var c = Fiber.new {
System.print("c before")
b.transfer("ignored")
System.print("c after")
}
System.print("start") // expect: start
c.transfer("ignored")
// expect: c before
// expect: b before
// expect: a
// Nothing else gets run since the interpreter stops after a completes.
@@ -1,8 +0,0 @@
var F = Fiber.new {
System.print(1) // expect: 1
System.print(F.transfer("value")) // expect: value
System.print(2) // expect: 2
}
F.call()
System.print(3) // expect: 3
@@ -1,17 +0,0 @@
var A = Fiber.new {
System.print(2)
B.transfer("ignored")
System.print("nope")
}
var B = Fiber.new {
System.print(1)
A.transfer("ignored")
System.print(3)
}
B.call()
// expect: 1
// expect: 2
// expect: 3
System.print(4) // expect: 4
@@ -1,6 +0,0 @@
var a = Fiber.new {
System.print("run")
}
a.call() // expect: run
a.transfer("blah") // expect runtime error: Cannot transfer to a finished fiber.
@@ -1,7 +0,0 @@
var a = Fiber.new {
Fiber.abort("Error!")
System.print("should not get here")
}
a.try()
a.transfer("blah") // expect runtime error: Cannot transfer to an aborted fiber.
@@ -1,24 +0,0 @@
var a = Fiber.new {|param|
System.print("a %(param)")
}
var b = Fiber.new {|param|
System.print("b before %(param)")
a.transfer("from b")
System.print("b after")
}
var c = Fiber.new {|param|
System.print("c before %(param)")
b.transfer("from c")
System.print("c after")
}
System.print("start") // expect: start
c.transfer("from main")
// expect: c before from main
// expect: b before from c
// expect: a from b
// Nothing else gets run since the interpreter stops after a completes.
@@ -1,9 +0,0 @@
var fiber = Fiber.new {
System.print("called")
System.print(Fiber.yield())
System.print("transferred")
}
fiber.call() // expect: called
fiber.transfer("value") // expect: value
// expect: transferred
-10
View File
@@ -1,10 +0,0 @@
var fiber = Fiber.new {
System.print("before")
true.unknownMethod
System.print("after")
}
System.print(fiber.try())
// expect: before
// expect: Bool does not implement 'unknownMethod'.
System.print("after try") // expect: after try
-7
View File
@@ -1,7 +0,0 @@
var fiber
fiber = Fiber.new {
fiber.try() // expect runtime error: Fiber has already been called.
}
fiber.call()
-6
View File
@@ -1,6 +0,0 @@
var fiber = Fiber.new {
System.print("try")
}
fiber.try() // expect: try
fiber.try() // expect runtime error: Cannot try a finished fiber.
-7
View File
@@ -1,7 +0,0 @@
var fiber = Fiber.new {
System.print("try")
Fiber.abort("err")
}
fiber.try() // expect: try
fiber.try() // expect runtime error: Cannot try an aborted fiber.
-12
View File
@@ -1,12 +0,0 @@
var a
var b
a = Fiber.new {
b.try() // expect runtime error: Fiber has already been called.
}
b = Fiber.new {
a.call()
}
b.call()
-49
View File
@@ -1,49 +0,0 @@
// A runtime error percolates through the fiber call chain until it hits a
// try(). Every intermediate fiber is aborted too.
var fiber1 = Fiber.new {
System.print("1 before")
Fiber.abort("Abort!")
System.print("1 after")
}
var fiber2 = Fiber.new {
System.print("2 before")
fiber1.call()
System.print("2 after")
}
var fiber3 = Fiber.new {
System.print("3 before")
fiber2.call()
System.print("3 after")
}
var fiber4 = Fiber.new {
System.print("4 before")
fiber3.try()
System.print("4 after")
}
var fiber5 = Fiber.new {
System.print("5 before")
fiber4.call()
System.print("5 after")
}
fiber5.call()
// expect: 5 before
// expect: 4 before
// expect: 3 before
// expect: 2 before
// expect: 1 before
// expect: 4 after
// expect: 5 after
System.print("after") // expect: after
// The fibers between the aborted one and the tried one are all errored.
System.print(fiber1.error) // expect: Abort!
System.print(fiber2.error) // expect: Abort!
System.print(fiber3.error) // expect: Abort!
System.print(fiber4.error) // expect: null
System.print(fiber5.error) // expect: null
-8
View File
@@ -1,8 +0,0 @@
var fiber = Fiber.new {
System.print("fiber")
}
System.print("before") // expect: before
System.print(fiber.try()) // expect: fiber
// expect: null
System.print("after") // expect: after
-5
View File
@@ -1,5 +0,0 @@
var fiber = Fiber.new {}
System.print(fiber is Fiber) // expect: true
System.print(fiber is Object) // expect: true
System.print(fiber is Bool) // expect: false
System.print(fiber.type == Fiber) // expect: true
-14
View File
@@ -1,14 +0,0 @@
var fiber = Fiber.new {
System.print("fiber 1")
Fiber.yield()
System.print("fiber 2")
Fiber.yield()
System.print("fiber 3")
}
fiber.call() // expect: fiber 1
System.print("main 1") // expect: main 1
fiber.call() // expect: fiber 2
System.print("main 2") // expect: main 2
fiber.call() // expect: fiber 3
System.print("main 3") // expect: main 3
-14
View File
@@ -1,14 +0,0 @@
var fiber = Fiber.new {
System.print("fiber 1")
import "./yield_from_import_module"
System.print("fiber 2")
}
fiber.call() // expect: fiber 1
// expect: module 1
System.print("main 1") // expect: main 1
fiber.call() // expect: module 2
// expect: fiber 2
System.print("main 2") // expect: main 2
@@ -1,4 +0,0 @@
// nontest
System.print("module 1")
Fiber.yield()
System.print("module 2")
-3
View File
@@ -1,3 +0,0 @@
System.print("before") // expect: before
Fiber.yield()
System.print("not reached")
@@ -1,12 +0,0 @@
var fiber = Fiber.new {
System.print("fiber 1")
System.print(Fiber.yield())
System.print(Fiber.yield())
}
fiber.call() // expect: fiber 1
System.print("main 1") // expect: main 1
fiber.call("call 1") // expect: call 1
System.print("main 2") // expect: main 2
fiber.call() // expect: null
System.print("main 3") // expect: main 3
@@ -1,20 +0,0 @@
var main = Fiber.current
var a = Fiber.new {
System.print("a")
System.print(Fiber.yield())
}
var b = Fiber.new {
System.print("b")
System.print(Fiber.yield())
a.call()
a.transfer("value")
}
b.call() // expect: b
b.transfer()
// expect: null
// expect: a
// expect: value
-12
View File
@@ -1,12 +0,0 @@
var a = Fiber.new {
System.print("before") // expect: before
Fiber.yield()
System.print("not reached")
}
// Transfer through a chain of fibers. Since none of them are called, they all
// get discarded and there is no remaining caller.
var b = Fiber.new { a.transfer() }
var c = Fiber.new { b.transfer() }
c.transfer()
System.print("not reached")
-14
View File
@@ -1,14 +0,0 @@
var fiber = Fiber.new {
System.print("fiber 1")
Fiber.yield("yield 1")
System.print("fiber 2")
Fiber.yield("yield 2")
System.print("fiber 3")
}
System.print(fiber.call()) // expect: fiber 1
// expect: yield 1
System.print(fiber.call()) // expect: fiber 2
// expect: yield 2
System.print(fiber.call()) // expect: fiber 3
// expect: null
@@ -1,3 +0,0 @@
System.print("before") // expect: before
Fiber.yield(1)
System.print("not reached")
@@ -1,12 +0,0 @@
var a = Fiber.new {
System.print("before") // expect: before
Fiber.yield(1)
System.print("not reached")
}
// Transfer through a chain of fibers. Since none of them are called, they all
// get discarded and there is no remaining caller.
var b = Fiber.new { a.transfer() }
var c = Fiber.new { b.transfer() }
c.transfer()
System.print("not reached")
-5
View File
@@ -1,5 +0,0 @@
System.print(Fn.new {}.arity) // expect: 0
System.print(Fn.new {|a| a}.arity) // expect: 1
System.print(Fn.new {|a, b| a}.arity) // expect: 2
System.print(Fn.new {|a, b, c| a}.arity) // expect: 3
System.print(Fn.new {|a, b, c, d| a}.arity) // expect: 4
@@ -1,16 +0,0 @@
var f0 = Fn.new { System.print("zero") }
var f1 = Fn.new {|a| System.print("one %(a)") }
var f2 = Fn.new {|a, b| System.print("two %(a) %(b)") }
var f3 = Fn.new {|a, b, c| System.print("three %(a) %(b) %(c)") }
f0.call("a") // expect: zero
f0.call("a", "b") // expect: zero
f1.call("a", "b") // expect: one a
f1.call("a", "b", "c") // expect: one a
f2.call("a", "b", "c") // expect: two a b
f2.call("a", "b", "c", "d") // expect: two a b
f3.call("a", "b", "c", "d") // expect: three a b c
f3.call("a", "b", "c", "d", "e") // expect: three a b c
@@ -1,2 +0,0 @@
var f2 = Fn.new {|a, b| System.print(a + b) }
f2.call("a") // expect runtime error: Function expects more arguments.
-23
View File
@@ -1,23 +0,0 @@
// Not structurally equal.
System.print(Fn.new { 123 } == Fn.new { 123 }) // expect: false
System.print(Fn.new { 123 } != Fn.new { 123 }) // expect: true
// Not equal to other types.
System.print(Fn.new { 123 } == 1) // expect: false
System.print(Fn.new { 123 } == false) // expect: false
System.print(Fn.new { 123 } == "fn 123") // expect: false
System.print(Fn.new { 123 } != 1) // expect: true
System.print(Fn.new { 123 } != false) // expect: true
System.print(Fn.new { 123 } != "fn 123") // expect: true
// Equal by identity.
var f = Fn.new { 123 }
System.print(f == f) // expect: true
System.print(f != f) // expect: false
// Closures for the same function are not equal.
var fns = []
for (i in 1..2) {
fns.add(Fn.new { 123 })
}
System.print(fns[0] == fns[1]) // expect: false
@@ -1 +0,0 @@
Fn.new(3) // expect runtime error: Argument must be a function.
-1
View File
@@ -1 +0,0 @@
System.print(Fn.new {}) // expect: <fn>
-4
View File
@@ -1,4 +0,0 @@
System.print(Fn.new { 0 } is Fn) // expect: true
System.print(Fn.new { 0 } is Object) // expect: true
System.print(Fn.new { 0 } is String) // expect: false
System.print(Fn.new { 0 }.type == Fn) // expect: true
-8
View File
@@ -1,8 +0,0 @@
var a = [1]
a.add(2)
System.print(a) // expect: [1, 2]
a.add(3)
System.print(a) // expect: [1, 2, 3]
// Returns added element.
System.print(a.add(4)) // expect: 4
-11
View File
@@ -1,11 +0,0 @@
var a = [1]
a.addAll([2, 3])
System.print(a) // expect: [1, 2, 3]
a.addAll([])
System.print(a) // expect: [1, 2, 3]
a.addAll(4..6)
System.print(a) // expect: [1, 2, 3, 4, 5, 6]
// Returns argument.
var range = 7..9
System.print(a.addAll(range) == range) // expect: true
-7
View File
@@ -1,7 +0,0 @@
var a = [1, 2, 3]
a.clear()
System.print(a) // expect: []
System.print(a.count) // expect: 0
// Returns null.
System.print([1, 2].clear()) // expect: null
-6
View File
@@ -1,6 +0,0 @@
var list = [1, 2, 3, 4, "foo"]
System.print(list.contains(2)) // expect: true
System.print(list.contains(5)) // expect: false
System.print(list.contains("foo")) // expect: true
System.print(list.contains("bar")) // expect: false
-3
View File
@@ -1,3 +0,0 @@
System.print([].count) // expect: 0
System.print([1].count) // expect: 1
System.print([1, 2, 3, 4].count) // expect: 4
-6
View File
@@ -1,6 +0,0 @@
var a = [1, 2, 3]
System.print(a.count {|x| x > 3 }) // expect: 0
System.print(a.count {|x| x > 1 }) // expect: 2
System.print([].count {|x| true }) // expect: 0
@@ -1,3 +0,0 @@
var a = [1, 2, 3]
System.print(a.count {|x| "truthy" }) // expect: 3
@@ -1,3 +0,0 @@
var a = [1, 2, 3]
a.count("string") // expect runtime error: String does not implement 'call(_)'.
-3
View File
@@ -1,3 +0,0 @@
var words = ""
["One", "Two", "Three"].each {|word| words = words + word }
System.print(words) // expect: OneTwoThree
-3
View File
@@ -1,3 +0,0 @@
var i = 0
[].each {|item| i = i + 1 }
System.print(i) // expect: 0
@@ -1 +0,0 @@
[1, 2, 3].each("string") // expect runtime error: String does not implement 'call(_)'.
-8
View File
@@ -1,8 +0,0 @@
var list = List.filled(3, "value")
System.print(list.count) // expect: 3
System.print(list) // expect: [value, value, value]
// Can create an empty list.
list = List.filled(0, "value")
System.print(list.count) // expect: 0
System.print(list) // expect: []
-1
View File
@@ -1 +0,0 @@
List.filled(-1, null) // expect runtime error: Size cannot be negative.
-1
View File
@@ -1 +0,0 @@
List.filled(1.2, null) // expect runtime error: Size must be an integer.
-1
View File
@@ -1 +0,0 @@
List.filled("not num", null) // expect runtime error: Size must be a number.
-41
View File
@@ -1,41 +0,0 @@
// Add to empty list.
var a = []
a.insert(0, 1)
System.print(a) // expect: [1]
// Normal indices.
var b = [1, 2, 3]
b.insert(0, 4)
System.print(b) // expect: [4, 1, 2, 3]
var c = [1, 2, 3]
c.insert(1, 4)
System.print(c) // expect: [1, 4, 2, 3]
var d = [1, 2, 3]
d.insert(2, 4)
System.print(d) // expect: [1, 2, 4, 3]
var e = [1, 2, 3]
e.insert(3, 4)
System.print(e) // expect: [1, 2, 3, 4]
// Negative indices.
var f = [1, 2, 3]
f.insert(-4, 4)
System.print(f) // expect: [4, 1, 2, 3]
var g = [1, 2, 3]
g.insert(-3, 4)
System.print(g) // expect: [1, 4, 2, 3]
var h = [1, 2, 3]
h.insert(-2, 4)
System.print(h) // expect: [1, 2, 4, 3]
var i = [1, 2, 3]
i.insert(-1, 4)
System.print(i) // expect: [1, 2, 3, 4]
// Returns.inserted value.
System.print([1, 2].insert(0, 3)) // expect: 3
-2
View File
@@ -1,2 +0,0 @@
var a = [1, 2, 3]
a.insert(1.5, "value") // expect runtime error: Index must be an integer.
-2
View File
@@ -1,2 +0,0 @@
var a = [1, 2, 3]
a.insert("2", "value") // expect runtime error: Index must be a number.
@@ -1,2 +0,0 @@
var a = [1, 2, 3]
a.insert(4, "value") // expect runtime error: Index out of bounds.
@@ -1,2 +0,0 @@
var a = [1, 2, 3]
a.insert(-5, "value") // expect runtime error: Index out of bounds.

Some files were not shown because too many files have changed in this diff Show More