Implemented operators and better indexing

This commit is contained in:
Martino Ferrari
2026-01-30 00:49:42 +01:00
parent ecc7039306
commit 0cbbf5939a
13 changed files with 836 additions and 83 deletions

View File

@@ -0,0 +1,90 @@
package integration
import (
"bytes"
"strings"
"testing"
"github.com/marte-community/marte-dev-tools/internal/index"
"github.com/marte-community/marte-dev-tools/internal/lsp"
"github.com/marte-community/marte-dev-tools/internal/schema"
)
func TestLSPAppTestRepro(t *testing.T) {
lsp.Tree = index.NewProjectTree()
lsp.Documents = make(map[string]string)
lsp.GlobalSchema = schema.LoadFullSchema(".")
var buf bytes.Buffer
lsp.Output = &buf
content := `+App = {
Class = RealTimeApplication
+Data = {
Class = ReferenceContainer
DefaultDataSource = DDB
+DDB = {
Class = GAMDataSource
}
+TimingDataSource = {
Class = TimingDataSource
}
}
+Functions = {
Class = ReferenceContainer
+FnA = {
Class = IOGAM
InputSignals = {
A = {
DataSource = DDB
Type = uint32
Value = $Value
}
}
OutputSignals = {
B = {
DataSource = DDB
Type = uint32
}
}
}
}
+States = {
Class = ReferenceContainer
+State = {
Class = RealTimeState
Threads = {
+Th1 = {
Class = RealTimeThread
Functions = { FnA }
}
}
}
}
+Scheduler = {
Class = GAMScheduler
TimingDataSource = TimingDataSource
}
}
`
uri := "file://examples/app_test.marte"
lsp.HandleDidOpen(lsp.DidOpenTextDocumentParams{
TextDocument: lsp.TextDocumentItem{URI: uri, Text: content},
})
output := buf.String()
// Check Unresolved Variable
if !strings.Contains(output, "Unresolved variable reference: '$Value'") {
t.Error("LSP missing unresolved variable error")
}
// Check INOUT consumed but not produced
if !strings.Contains(output, "consumed by GAM '+FnA'") {
t.Error("LSP missing consumed but not produced error")
}
if t.Failed() {
t.Log(output)
}
}