Reorganize tests and benchmark scripts.
Mainly to get rid of one top level directory. But this will also be useful when there are tests of the embedding API.
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
var fiber = new Fiber {
|
||||
Fiber.abort("Error message.")
|
||||
}
|
||||
|
||||
IO.print(fiber.try()) // expect: Error message.
|
||||
IO.print(fiber.isDone) // expect: true
|
||||
IO.print(fiber.error) // expect: Error message.
|
||||
@@ -0,0 +1 @@
|
||||
Fiber.abort("Abort!") // expect runtime error: Abort!
|
||||
@@ -0,0 +1 @@
|
||||
Fiber.abort(123) // expect runtime error: Error message must be a string.
|
||||
@@ -0,0 +1,7 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber")
|
||||
}
|
||||
|
||||
IO.print("before") // expect: before
|
||||
fiber.call() // expect: fiber
|
||||
IO.print("after") // expect: after
|
||||
@@ -0,0 +1,7 @@
|
||||
var fiber
|
||||
|
||||
fiber = new Fiber {
|
||||
fiber.call() // expect runtime error: Fiber has already been called.
|
||||
}
|
||||
|
||||
fiber.call()
|
||||
@@ -0,0 +1,12 @@
|
||||
var a
|
||||
var b
|
||||
|
||||
a = new Fiber {
|
||||
b.call() // expect runtime error: Fiber has already been called.
|
||||
}
|
||||
|
||||
b = new Fiber {
|
||||
a.call()
|
||||
}
|
||||
|
||||
b.call()
|
||||
@@ -0,0 +1,6 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber")
|
||||
}
|
||||
|
||||
var result = fiber.call() // expect: fiber
|
||||
IO.print(result) // expect: null
|
||||
@@ -0,0 +1,7 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber")
|
||||
return "result"
|
||||
}
|
||||
|
||||
var result = fiber.call() // expect: fiber
|
||||
IO.print(result) // expect: result
|
||||
@@ -0,0 +1,6 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("call")
|
||||
}
|
||||
|
||||
fiber.call() // expect: call
|
||||
fiber.call() // expect runtime error: Cannot call a finished fiber.
|
||||
@@ -0,0 +1,9 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber")
|
||||
}
|
||||
|
||||
// The first value passed to the fiber is ignored, since there's no yield call
|
||||
// to return it.
|
||||
IO.print("before") // expect: before
|
||||
fiber.call("ignored") // expect: fiber
|
||||
IO.print("after") // expect: after
|
||||
@@ -0,0 +1,7 @@
|
||||
var fiber
|
||||
|
||||
fiber = new Fiber {
|
||||
fiber.call(2) // expect runtime error: Fiber has already been called.
|
||||
}
|
||||
|
||||
fiber.call(1)
|
||||
@@ -0,0 +1,12 @@
|
||||
var a
|
||||
var b
|
||||
|
||||
a = new Fiber {
|
||||
b.call(3) // expect runtime error: Fiber has already been called.
|
||||
}
|
||||
|
||||
b = new Fiber {
|
||||
a.call(2)
|
||||
}
|
||||
|
||||
b.call(1)
|
||||
@@ -0,0 +1,6 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("call")
|
||||
}
|
||||
|
||||
fiber.call(1) // expect: call
|
||||
fiber.call(2) // expect runtime error: Cannot call a finished fiber.
|
||||
@@ -0,0 +1,7 @@
|
||||
var fiber = new Fiber {
|
||||
"s".unknown
|
||||
}
|
||||
|
||||
IO.print(fiber.error) // expect: null
|
||||
IO.print(fiber.try()) // expect: String does not implement 'unknown'.
|
||||
IO.print(fiber.error) // expect: String does not implement 'unknown'.
|
||||
@@ -0,0 +1,11 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("1")
|
||||
Fiber.yield()
|
||||
IO.print("2")
|
||||
}
|
||||
|
||||
IO.print(fiber.isDone) // expect: false
|
||||
fiber.call() // expect: 1
|
||||
IO.print(fiber.isDone) // expect: false
|
||||
fiber.call() // expect: 2
|
||||
IO.print(fiber.isDone) // expect: true
|
||||
@@ -0,0 +1,6 @@
|
||||
var fiber = new Fiber {
|
||||
"s".unknown
|
||||
}
|
||||
|
||||
fiber.try()
|
||||
IO.print(fiber.isDone) // expect: true
|
||||
@@ -0,0 +1 @@
|
||||
var fiber = new Fiber("not fn") // expect runtime error: Argument must be a function.
|
||||
@@ -0,0 +1,19 @@
|
||||
var b = new Fiber {
|
||||
IO.print("fiber b")
|
||||
}
|
||||
|
||||
var a = new Fiber {
|
||||
IO.print("begin fiber a")
|
||||
b.call()
|
||||
IO.print("end fiber a")
|
||||
}
|
||||
|
||||
IO.print("begin main")
|
||||
a.call()
|
||||
IO.print("end main")
|
||||
|
||||
// expect: begin main
|
||||
// expect: begin fiber a
|
||||
// expect: fiber b
|
||||
// expect: end fiber a
|
||||
// expect: end main
|
||||
@@ -0,0 +1,9 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber")
|
||||
}
|
||||
|
||||
IO.print("before") // expect: before
|
||||
fiber.run() // expect: fiber
|
||||
|
||||
// This does not get run since we exit when the run fiber completes.
|
||||
IO.print("nope")
|
||||
@@ -0,0 +1,10 @@
|
||||
var fiber
|
||||
|
||||
fiber = new Fiber {
|
||||
IO.print(1) // expect: 1
|
||||
fiber.run()
|
||||
IO.print(2) // expect: 2
|
||||
}
|
||||
|
||||
fiber.call()
|
||||
IO.print(3) // expect: 3
|
||||
@@ -0,0 +1,20 @@
|
||||
var a
|
||||
var b
|
||||
|
||||
a = new Fiber {
|
||||
IO.print(2)
|
||||
b.run()
|
||||
IO.print("nope")
|
||||
}
|
||||
|
||||
b = new Fiber {
|
||||
IO.print(1)
|
||||
a.run()
|
||||
IO.print(3)
|
||||
}
|
||||
|
||||
b.call()
|
||||
// expect: 1
|
||||
// expect: 2
|
||||
// expect: 3
|
||||
IO.print(4) // expect: 4
|
||||
@@ -0,0 +1,13 @@
|
||||
var a = new Fiber {
|
||||
IO.print("run")
|
||||
}
|
||||
|
||||
// Run a through an intermediate fiber since it will get discarded and we need
|
||||
// to return to the main one after a completes.
|
||||
var b = new Fiber {
|
||||
a.run()
|
||||
IO.print("nope")
|
||||
}
|
||||
|
||||
b.call() // expect: run
|
||||
a.run() // expect runtime error: Cannot run a finished fiber.
|
||||
@@ -0,0 +1,11 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber")
|
||||
}
|
||||
|
||||
// The first value passed to the fiber is ignored, since there's no yield call
|
||||
// to return it.
|
||||
IO.print("before") // expect: before
|
||||
fiber.run("ignored") // expect: fiber
|
||||
|
||||
// This does not get run since we exit when the run fiber completes.
|
||||
IO.print("nope")
|
||||
@@ -0,0 +1,10 @@
|
||||
var fiber
|
||||
|
||||
fiber = new Fiber {
|
||||
IO.print(1) // expect: 1
|
||||
fiber.run("ignored")
|
||||
IO.print(2) // expect: 2
|
||||
}
|
||||
|
||||
fiber.call()
|
||||
IO.print(3) // expect: 3
|
||||
@@ -0,0 +1,20 @@
|
||||
var a
|
||||
var b
|
||||
|
||||
a = new Fiber {
|
||||
IO.print(2)
|
||||
b.run("ignored")
|
||||
IO.print("nope")
|
||||
}
|
||||
|
||||
b = new Fiber {
|
||||
IO.print(1)
|
||||
a.run("ignored")
|
||||
IO.print(3)
|
||||
}
|
||||
|
||||
b.call()
|
||||
// expect: 1
|
||||
// expect: 2
|
||||
// expect: 3
|
||||
IO.print(4) // expect: 4
|
||||
@@ -0,0 +1,10 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("before")
|
||||
true.unknownMethod
|
||||
IO.print("after")
|
||||
}
|
||||
|
||||
IO.print(fiber.try())
|
||||
// expect: before
|
||||
// expect: Bool does not implement 'unknownMethod'.
|
||||
IO.print("after try") // expect: after try
|
||||
@@ -0,0 +1,7 @@
|
||||
var fiber
|
||||
|
||||
fiber = new Fiber {
|
||||
fiber.try() // expect runtime error: Fiber has already been called.
|
||||
}
|
||||
|
||||
fiber.call()
|
||||
@@ -0,0 +1,12 @@
|
||||
var a
|
||||
var b
|
||||
|
||||
a = new Fiber {
|
||||
b.try() // expect runtime error: Fiber has already been called.
|
||||
}
|
||||
|
||||
b = new Fiber {
|
||||
a.call()
|
||||
}
|
||||
|
||||
b.call()
|
||||
@@ -0,0 +1,6 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("try")
|
||||
}
|
||||
|
||||
fiber.try() // expect: try
|
||||
fiber.try() // expect runtime error: Cannot try a finished fiber.
|
||||
@@ -0,0 +1,8 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber")
|
||||
}
|
||||
|
||||
IO.print("before") // expect: before
|
||||
IO.print(fiber.try()) // expect: fiber
|
||||
// expect: null
|
||||
IO.print("after") // expect: after
|
||||
@@ -0,0 +1,5 @@
|
||||
var fiber = new Fiber {}
|
||||
IO.print(fiber is Fiber) // expect: true
|
||||
IO.print(fiber is Object) // expect: true
|
||||
IO.print(fiber is Bool) // expect: false
|
||||
IO.print(fiber.type == Fiber) // expect: true
|
||||
@@ -0,0 +1,14 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber 1")
|
||||
Fiber.yield()
|
||||
IO.print("fiber 2")
|
||||
Fiber.yield()
|
||||
IO.print("fiber 3")
|
||||
}
|
||||
|
||||
var result = fiber.call() // expect: fiber 1
|
||||
IO.print("main 1") // expect: main 1
|
||||
result = fiber.call() // expect: fiber 2
|
||||
IO.print("main 2") // expect: main 2
|
||||
result = fiber.call() // expect: fiber 3
|
||||
IO.print("main 3") // expect: main 3
|
||||
@@ -0,0 +1,3 @@
|
||||
IO.print("before") // expect: before
|
||||
Fiber.yield()
|
||||
IO.print("not reached")
|
||||
@@ -0,0 +1,14 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber 1")
|
||||
var result = Fiber.yield()
|
||||
IO.print(result)
|
||||
result = Fiber.yield()
|
||||
IO.print(result)
|
||||
}
|
||||
|
||||
fiber.call() // expect: fiber 1
|
||||
IO.print("main 1") // expect: main 1
|
||||
fiber.call("call 1") // expect: call 1
|
||||
IO.print("main 2") // expect: main 2
|
||||
fiber.call() // expect: null
|
||||
IO.print("main 3") // expect: main 3
|
||||
@@ -0,0 +1,12 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber")
|
||||
var result = Fiber.yield()
|
||||
IO.print(result)
|
||||
}
|
||||
|
||||
fiber.call() // expect: fiber
|
||||
IO.print("main") // expect: main
|
||||
fiber.run("run") // expect: run
|
||||
|
||||
// This does not get run since we exit when the run fiber completes.
|
||||
IO.print("nope")
|
||||
@@ -0,0 +1,11 @@
|
||||
var a = new Fiber {
|
||||
IO.print("before") // expect: before
|
||||
Fiber.yield()
|
||||
}
|
||||
|
||||
// Run a chain of fibers. Since none of them are called, they all get discarded
|
||||
// and there is no remaining caller.
|
||||
var b = new Fiber { a.run() }
|
||||
var c = new Fiber { b.run() }
|
||||
c.run()
|
||||
IO.print("not reached")
|
||||
@@ -0,0 +1,14 @@
|
||||
var fiber = new Fiber {
|
||||
IO.print("fiber 1")
|
||||
Fiber.yield("yield 1")
|
||||
IO.print("fiber 2")
|
||||
Fiber.yield("yield 2")
|
||||
IO.print("fiber 3")
|
||||
}
|
||||
|
||||
var result = fiber.call() // expect: fiber 1
|
||||
IO.print(result) // expect: yield 1
|
||||
result = fiber.call() // expect: fiber 2
|
||||
IO.print(result) // expect: yield 2
|
||||
result = fiber.call() // expect: fiber 3
|
||||
IO.print(result) // expect: null
|
||||
@@ -0,0 +1,3 @@
|
||||
IO.print("before") // expect: before
|
||||
Fiber.yield(1)
|
||||
IO.print("not reached")
|
||||
@@ -0,0 +1,11 @@
|
||||
var a = new Fiber {
|
||||
IO.print("before") // expect: before
|
||||
Fiber.yield(1)
|
||||
}
|
||||
|
||||
// Run a chain of fibers. Since none of them are called, they all get discarded
|
||||
// and there is no remaining caller.
|
||||
var b = new Fiber { a.run() }
|
||||
var c = new Fiber { b.run() }
|
||||
c.run()
|
||||
IO.print("not reached")
|
||||
Reference in New Issue
Block a user