package web import ( "regexp" "strings" "testing" "unicode/utf8" ) func TestEmbedURL(t *testing.T) { tests := []struct { name string id string wantURL string wantOK bool }{ {"valid 11-char id", "dQw4w9WgXcQ", "https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ", true}, {"valid with dash and underscore", "a_b-cD12345", "https://www.youtube-nocookie.com/embed/a_b-cD12345", true}, {"empty", "", "", false}, {"too short", "abc", "", false}, {"too long", "dQw4w9WgXcQX", "", false}, {"invalid char", "dQw4w9WgXc!", "", false}, {"space", "dQw4w9WgX Q", "", false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { gotURL, gotOK := embedURL(tt.id) if gotURL != tt.wantURL || gotOK != tt.wantOK { t.Errorf("embedURL(%q) = (%q, %v), want (%q, %v)", tt.id, gotURL, gotOK, tt.wantURL, tt.wantOK) } }) } } // TestTapirFrameRowsAligned asserts every box row has the same cell width once // the inline-colour spans are stripped, so the rounded border lines up on every // line (the panel only looks right if the right │ is flush across all rows). func TestTapirFrameRowsAligned(t *testing.T) { stripSpan := regexp.MustCompile(`]*>`) for name, frame := range map[string]string{"f1": tapirFrameHTML1, "f2": tapirFrameHTML2, "f3": tapirFrameHTML3} { plain := stripSpan.ReplaceAllString(frame, "") want := tapirInteriorW + 2 // both purple side borders for i, line := range strings.Split(plain, "\n") { if got := utf8.RuneCountInString(line); got != want { t.Errorf("%s line %d width = %d, want %d: %q", name, i, got, want, line) } } } }