fspl/analyzer/method_test.go

70 lines
1.2 KiB
Go

package analyzer
import "testing"
func TestMethodUniqueErr (test *testing.T) {
testStringErr (test,
"Bird.fly already declared at stream0.fspl:3:1", 4, 1,
`
Bird: Int
Bird.[fly] = { }
Bird.[fly distance:Int] = { }
`)
}
func TestMethodUnique (test *testing.T) {
testString (test,
`
Bird: Int
Bird.[fly] = { }
Bird.[land] = { }
Bird.[walk distance:Int] = { }
Bat: Int
Bat.[fly] = { }
[fly] = { }
`)
}
func TestMethodArgumentUniqueErr (test *testing.T) {
testStringErr (test,
"x already listed as argument at stream0.fspl:3:12", 3, 18,
`
Bird: Int
Bird.[main x:Int x:U8 y:Int] = { }
`)
}
func TestMethodArgumentUnique (test *testing.T) {
testString (test,
`
Bird: Int
Bird.[main x:Int y:U8 z:Int] = { }
`)
}
func TestMethodThis (test *testing.T) {
testString (test,
`
Number: Int
Number.[add x:Number]:Number = [++[.this] x]
StringHolder: (. string:String)
StringHolder.[setString string:String] = {
this.string = string
}
`)
}
func TestMethodChained (test *testing.T) {
testString (test,
`
Number: Int
Number.[add x:Number]:Number = [+ [.this] x]
Number.[sub x:Number]:Number = [- [.this] x]
Number.[mul x:Number]:Number = [* [.this] x]
Number.[div x:Number]:Number = [/ [.this] x]
[main]: Number = [~Number 5].[add 8].[mul 3]
`)
}