lang: Port TestAstFunc2 to txtar format
This ports TestAstFunc2 from our home-grown content storage system to the txtar package. Since a single file can be used to represent the entire folder hierarchy, this makes it much easier to see and edit tests.
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
-- main.mcl --
|
||||
import "fmt"
|
||||
# this can return changing functions, and could be optimized, too
|
||||
$funcgen = func($a) {
|
||||
if $a {
|
||||
func($b) {
|
||||
if $b == "hello" {
|
||||
func($c1) {
|
||||
fmt.printf("true-true-%d", $c1)
|
||||
}
|
||||
} else {
|
||||
func($c2) {
|
||||
if $c2 >= 0 {
|
||||
fmt.printf("true-false-%d", $c2)
|
||||
} else {
|
||||
"true-false-negative"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
func($b) {
|
||||
if $b == "hello" {
|
||||
func($c3) {
|
||||
if $c3 > 20 {
|
||||
"false-true-big"
|
||||
} else {
|
||||
"false-true-small"
|
||||
}
|
||||
}
|
||||
} else {
|
||||
func($c4) { # $c4 is ignored, $b is from parent
|
||||
"false-false-some-" + $b
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$fn1 = $funcgen(true)
|
||||
$fn2 = $funcgen(false)
|
||||
|
||||
$out1 = $fn1("hello")
|
||||
$out2 = $fn1("world")
|
||||
$out3 = $fn2("hello")
|
||||
$out4 = $fn2("world")
|
||||
|
||||
|
||||
test $out1(10) {}
|
||||
test if true { $out2(20) } else { $out2(-20) } {}
|
||||
test if false { $out2(20) } else { $out2(-20) } {}
|
||||
test $out3(30) {}
|
||||
test $out4(40) {}
|
||||
-- OUTPUT --
|
||||
Vertex: test[true-true-10]
|
||||
Vertex: test[true-false-20]
|
||||
Vertex: test[true-false-negative]
|
||||
Vertex: test[false-true-big]
|
||||
Vertex: test[false-false-some-world]
|
||||
Reference in New Issue
Block a user