2022-03-06 17:29:30 +01:00
|
|
|
package prog8tests.ast
|
|
|
|
|
|
|
|
import io.kotest.core.spec.style.FunSpec
|
|
|
|
import io.kotest.matchers.shouldBe
|
2024-10-21 00:20:54 +02:00
|
|
|
import prog8.code.ast.PtBinaryExpression
|
|
|
|
import prog8.code.ast.PtNumber
|
2023-08-14 00:50:40 +02:00
|
|
|
import prog8.code.core.DataType
|
2024-01-01 14:55:29 +01:00
|
|
|
import prog8.code.core.Position
|
2022-03-06 17:29:30 +01:00
|
|
|
|
|
|
|
class TestIntermediateAst: FunSpec({
|
|
|
|
|
2024-01-01 14:55:29 +01:00
|
|
|
test("isSame on binaryExpressions") {
|
|
|
|
val expr1 = PtBinaryExpression("/", DataType.UBYTE, Position.DUMMY)
|
|
|
|
expr1.add(PtNumber(DataType.UBYTE, 1.0, Position.DUMMY))
|
|
|
|
expr1.add(PtNumber(DataType.UBYTE, 2.0, Position.DUMMY))
|
|
|
|
val expr2 = PtBinaryExpression("/", DataType.UBYTE, Position.DUMMY)
|
|
|
|
expr2.add(PtNumber(DataType.UBYTE, 1.0, Position.DUMMY))
|
|
|
|
expr2.add(PtNumber(DataType.UBYTE, 2.0, Position.DUMMY))
|
|
|
|
(expr1 isSameAs expr2) shouldBe true
|
|
|
|
val expr3 = PtBinaryExpression("/", DataType.UBYTE, Position.DUMMY)
|
|
|
|
expr3.add(PtNumber(DataType.UBYTE, 2.0, Position.DUMMY))
|
|
|
|
expr3.add(PtNumber(DataType.UBYTE, 1.0, Position.DUMMY))
|
|
|
|
(expr1 isSameAs expr3) shouldBe false
|
|
|
|
}
|
|
|
|
|
|
|
|
test("isSame on binaryExpressions with associative operators") {
|
|
|
|
val expr1 = PtBinaryExpression("+", DataType.UBYTE, Position.DUMMY)
|
|
|
|
expr1.add(PtNumber(DataType.UBYTE, 1.0, Position.DUMMY))
|
|
|
|
expr1.add(PtNumber(DataType.UBYTE, 2.0, Position.DUMMY))
|
|
|
|
val expr2 = PtBinaryExpression("+", DataType.UBYTE, Position.DUMMY)
|
|
|
|
expr2.add(PtNumber(DataType.UBYTE, 1.0, Position.DUMMY))
|
|
|
|
expr2.add(PtNumber(DataType.UBYTE, 2.0, Position.DUMMY))
|
|
|
|
(expr1 isSameAs expr2) shouldBe true
|
|
|
|
val expr3 = PtBinaryExpression("+", DataType.UBYTE, Position.DUMMY)
|
|
|
|
expr3.add(PtNumber(DataType.UBYTE, 2.0, Position.DUMMY))
|
|
|
|
expr3.add(PtNumber(DataType.UBYTE, 1.0, Position.DUMMY))
|
|
|
|
(expr1 isSameAs expr3) shouldBe true
|
|
|
|
}
|
2022-03-06 17:29:30 +01:00
|
|
|
})
|