1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
package tuigen
import "testing"
func TestAnalyzer_DetectEventsVars_GoCodeDeclaration(t *testing.T) {
input := `package x
templ Example() {
bus := tui.NewEvents[string]("app.notifications")
<span>ok</span>
}`
l := NewLexer("test.gsx", input)
p := NewParser(l)
file, err := p.ParseFile()
if err != nil {
t.Fatalf("parse error: %v", err)
}
analyzer := NewAnalyzer()
eventsVars := analyzer.DetectEventsVars(file.Components[0])
if len(eventsVars) != 1 {
t.Fatalf("expected 1 events var, got %d", len(eventsVars))
}
if eventsVars[0].Name != "bus" {
t.Fatalf("expected var name bus, got %s", eventsVars[0].Name)
}
}
func TestAnalyzer_DetectEventsVars_MultipleDeclarations(t *testing.T) {
input := `package x
templ Example() {
eventsA := tui.NewEvents[string]("topic.a")
eventsB := tui.NewEvents[int]("topic.b")
<span>ok</span>
}`
l := NewLexer("test.gsx", input)
p := NewParser(l)
file, err := p.ParseFile()
if err != nil {
t.Fatalf("parse error: %v", err)
}
analyzer := NewAnalyzer()
eventsVars := analyzer.DetectEventsVars(file.Components[0])
if len(eventsVars) != 2 {
t.Fatalf("expected 2 events vars, got %d", len(eventsVars))
}
if eventsVars[0].Name != "eventsA" || eventsVars[1].Name != "eventsB" {
t.Fatalf("unexpected events vars: %#v", eventsVars)
}
}
|