Files
2026-08-14 23:41:57 +08:00

61 lines
1.4 KiB
Go

package remotecontrol
import (
"strings"
"testing"
)
func TestRenderProducesBlockOutput(t *testing.T) {
out, err := Render("http://192.168.1.42:8080/pair?t=deadbeef")
if err != nil {
t.Fatalf("Render: %v", err)
}
if out == "" {
t.Fatal("Render returned empty output")
}
// Output must consist only of the half-block glyphs, spaces, and newlines.
for _, r := range out {
switch r {
case '█', '▀', '▄', ' ', '\n':
default:
t.Fatalf("unexpected rune %q in QR output", r)
}
}
// Must contain at least one dark-bearing glyph (not all blanks).
if !strings.ContainsAny(out, "▀▄ ") {
t.Fatal("QR output has no dark modules")
}
}
func TestRenderIsDeterministic(t *testing.T) {
const url = "http://10.0.0.9:5000/pair?t=abc123"
a, err := Render(url)
if err != nil {
t.Fatalf("Render: %v", err)
}
b, err := Render(url)
if err != nil {
t.Fatalf("Render: %v", err)
}
if a != b {
t.Fatal("Render is not deterministic for the same URL")
}
}
func TestRenderSquareRows(t *testing.T) {
out, err := Render("http://127.0.0.1:1/pair?t=x")
if err != nil {
t.Fatalf("Render: %v", err)
}
lines := strings.Split(strings.TrimRight(out, "\n"), "\n")
if len(lines) == 0 {
t.Fatal("no lines")
}
width := len([]rune(lines[0]))
for i, ln := range lines {
if got := len([]rune(ln)); got != width {
t.Fatalf("line %d width = %d, want uniform %d", i, got, width)
}
}
}