package html
import (
"testing"
i18n "forge.lthn.ai/core/go-i18n"
)
func TestStripTags_Simple(t *testing.T) {
got := StripTags(`
hello
`)
want := "hello"
if got != want {
t.Errorf("StripTags(hello
) = %q, want %q", got, want)
}
}
func TestStripTags_Nested(t *testing.T) {
got := StripTags(``)
want := "Title"
if got != want {
t.Errorf("StripTags(nested) = %q, want %q", got, want)
}
}
func TestStripTags_MultipleRegions(t *testing.T) {
got := StripTags(`Body`)
want := "Head Body Foot"
if got != want {
t.Errorf("StripTags(multi) = %q, want %q", got, want)
}
}
func TestStripTags_Empty(t *testing.T) {
got := StripTags("")
if got != "" {
t.Errorf("StripTags(\"\") = %q, want empty", got)
}
}
func TestStripTags_NoTags(t *testing.T) {
got := StripTags("plain text")
if got != "plain text" {
t.Errorf("StripTags(plain) = %q, want %q", got, "plain text")
}
}
func TestStripTags_Entities(t *testing.T) {
got := StripTags(`<script>`)
want := "<script>"
if got != want {
t.Errorf("StripTags should preserve entities, got %q, want %q", got, want)
}
}
func TestImprint_FromNode(t *testing.T) {
svc, _ := i18n.New()
i18n.SetDefault(svc)
ctx := NewContext()
page := NewLayout("HCF").
H(El("h1", Text("Building project"))).
C(El("p", Text("Files deleted successfully"))).
F(El("small", Text("Completed")))
imp := Imprint(page, ctx)
if imp.TokenCount == 0 {
t.Error("Imprint should produce non-zero token count")
}
if imp.UniqueVerbs == 0 {
t.Error("Imprint should find verbs in rendered content")
}
}
func TestImprint_SimilarPages(t *testing.T) {
svc, _ := i18n.New()
i18n.SetDefault(svc)
ctx := NewContext()
page1 := NewLayout("HCF").
H(El("h1", Text("Building project"))).
C(El("p", Text("Files deleted successfully")))
page2 := NewLayout("HCF").
H(El("h1", Text("Building system"))).
C(El("p", Text("Files removed successfully")))
different := NewLayout("HCF").
C(El("p", Raw("no grammar content here xyz abc")))
imp1 := Imprint(page1, ctx)
imp2 := Imprint(page2, ctx)
impDiff := Imprint(different, ctx)
sim := imp1.Similar(imp2)
diffSim := imp1.Similar(impDiff)
if sim <= diffSim {
t.Errorf("similar pages should score higher (%f) than different (%f)", sim, diffSim)
}
}
func TestCompareVariants(t *testing.T) {
svc, _ := i18n.New()
i18n.SetDefault(svc)
ctx := NewContext()
r := NewResponsive().
Variant("desktop", NewLayout("HLCRF").
H(El("h1", Text("Building project"))).
C(El("p", Text("Files deleted successfully"))).
F(El("small", Text("Completed")))).
Variant("mobile", NewLayout("HCF").
H(El("h1", Text("Building project"))).
C(El("p", Text("Files deleted successfully"))).
F(El("small", Text("Completed"))))
scores := CompareVariants(r, ctx)
key := "desktop:mobile"
sim, ok := scores[key]
if !ok {
t.Fatalf("CompareVariants missing key %q, got keys: %v", key, scores)
}
if sim < 0.8 {
t.Errorf("same content in different variants should score >= 0.8, got %f", sim)
}
}