Add source code printout for tests

This commit is contained in:
Sasha Koshka 2024-01-28 14:46:47 -05:00
parent 31cf892a63
commit 01526aa914
2 changed files with 20 additions and 37 deletions

View File

@ -255,33 +255,21 @@ testString (test,
%C = type ptr
define void @main() {
0:
%1 = alloca [1 x i8]
%1 = alloca %A
%2 = getelementptr [1 x i8], ptr %1, i32 0, i32 0
store i8 104, ptr %2
%3 = load %A, ptr %1
%4 = alloca %A
store %A %3, ptr %4
%5 = alloca [1 x i8]
%6 = getelementptr [1 x i8], ptr %5, i32 0, i32 0
store i8 104, ptr %6
%7 = alloca %B
%8 = getelementptr %B, ptr %7, i32 0, i32 0
store ptr %5, ptr %8
%9 = getelementptr %B, ptr %7, i32 0, i32 1
store %Index 1, ptr %9
%10 = load %B, ptr %7
%11 = alloca %B
store %B %10, ptr %11
%12 = alloca [2 x i8]
%13 = getelementptr [2 x i8], ptr %12, i32 0, i32 0
store i8 104, ptr %13
%14 = getelementptr [2 x i8], ptr %12, i32 0, i32 1
store i8 0, ptr %14
%15 = alloca ptr
store ptr %12, ptr %15
%16 = load %C, ptr %15
%17 = alloca %C
store %C %16, ptr %17
%3 = alloca %B
%4 = getelementptr %B, ptr %3, i32 0, i32 0
%5 = getelementptr %B, ptr %3, i32 0, i32 1
%6 = alloca [2 x i8]
%7 = getelementptr [1 x i8], ptr %6, i32 0, i32 0
store i8 104, ptr %7
store ptr %6, ptr %4
store i32 2, ptr %5
%8 = alloca %C
%9 = alloca [2 x i8]
%10 = getelementptr [1 x i8], ptr %9, i32 0, i32 0
store i8 104, ptr %10
ret void
}
`,

View File

@ -1,28 +1,21 @@
package generator
import "io"
import "fmt"
import "testing"
import "strings"
import "git.tebibyte.media/sashakoshka/fspl/parser"
import "git.tebibyte.media/sashakoshka/fspl/analyzer"
func testString (test *testing.T, correct string, input string) {
testReader(test, correct, strings.NewReader(input))
}
func testReader (test *testing.T, correct string, inputs ...io.Reader) {
ast := parser.Tree { }
for index, stream := range inputs {
err := ast.Parse(fmt.Sprintf("stream%d.fspl", index), stream)
if err != nil && err != io.EOF{
test.Error("parser returned error:", err)
return
}
err := ast.Parse("input.fspl", strings.NewReader(input))
if err != nil && err != io.EOF{
test.Error("parser returned error:", err)
return
}
tree := analyzer.Tree { }
err := tree.Analyze(ast)
err = tree.Analyze(ast)
if err != nil {
test.Error("analyzer returned error:", err)
return
@ -78,6 +71,8 @@ func testReader (test *testing.T, correct string, inputs ...io.Reader) {
}
}
test.Log("SOURCE FSPL CODE:")
test.Log("\033[32m" + input + "\033[0m")
test.Fail()
}
}