gitstack

grindlemire/go-tui code browser

1.3 KB Go 52 lines 2026-02-18 · 005f0eb raw
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)
	}
}