70 lines
1.2 KiB
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]
|
|
`)
|
|
}
|