Skip to content

Commit

Permalink
Added simple file parsing test
Browse files Browse the repository at this point in the history
  • Loading branch information
RealA10N committed Aug 3, 2024
1 parent 46c763f commit 8485195
Showing 1 changed file with 74 additions and 0 deletions.
74 changes: 74 additions & 0 deletions parse/file_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package parse_test

import (
"testing"
"usm/lex"
"usm/parse"
"usm/source"

"github.com/stretchr/testify/assert"
)

func TestSingleFunction(t *testing.T) {
src := `def $i32 @add $i32 %x $i32 %y {
%res = add %x %y
ret %res
}`
v := source.NewSourceView(src)
srcView, _ := v.Detach()

expected := parse.FileNode{
Functions: []parse.FunctionNode{
parse.FunctionNode{
UnmanagedSourceView: srcView,
Signature: parse.SignatureNode{
UnmanagedSourceView: srcView.Subview(4, 29),
Identifier: srcView.Subview(9, 13),
Parameters: []parse.ParameterNode{
parse.ParameterNode{
Type: parse.TypeNode{srcView.Subview(14, 18)},
Register: parse.RegisterNode{srcView.Subview(19, 21)},
},
parse.ParameterNode{
Type: parse.TypeNode{srcView.Subview(22, 26)},
Register: parse.RegisterNode{srcView.Subview(27, 29)},
},
},
Returns: []parse.TypeNode{
parse.TypeNode{srcView.Subview(4, 8)},
},
},
Block: parse.BlockNode{
UnmanagedSourceView: srcView.Subview(30, 61),
Instructions: []parse.InstructionNode{
parse.InstructionNode{
Operator: srcView.Subview(40, 43),
Arguments: []parse.ArgumentNode{
parse.ArgumentNode{srcView.Subview(44, 46)},
parse.ArgumentNode{srcView.Subview(47, 49)},
},
Targets: []parse.RegisterNode{
parse.RegisterNode{srcView.Subview(33, 37)},
},
},
parse.InstructionNode{
Operator: srcView.Subview(51, 54),
Arguments: []parse.ArgumentNode{
parse.ArgumentNode{srcView.Subview(55, 59)},
},
},
},
},
},
},
}

tkns, err := lex.NewTokenizer().Tokenize(v)
assert.NoError(t, err)

tknsView := parse.NewTokenView(tkns)
file, perr := parse.FileParser{}.Parse(&tknsView)

assert.Nil(t, perr)
assert.Equal(t, expected, file)
}

0 comments on commit 8485195

Please sign in to comment.