From 605a6b2b280c0b2d555f0e2fad56b289361ce29c Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Sun, 07 Jun 2026 11:28:52 +0800
Subject: [PATCH] Add X-ASR live captions

---
 privatevoice.src/internal/engine/engine_darwin_test.go |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/privatevoice.src/internal/engine/engine_darwin_test.go b/privatevoice.src/internal/engine/engine_darwin_test.go
index 50e2a44..fdfbf8e 100644
--- a/privatevoice.src/internal/engine/engine_darwin_test.go
+++ b/privatevoice.src/internal/engine/engine_darwin_test.go
@@ -142,6 +142,27 @@
 	}
 }
 
+func TestRememberNonEmptyTextKeepsLastPartial(t *testing.T) {
+	got := rememberNonEmptyText("最后一句", "   ")
+	if got != "最后一句" {
+		t.Fatalf("rememberNonEmptyText() = %q, want last non-empty text", got)
+	}
+
+	got = rememberNonEmptyText("旧内容", "新内容")
+	if got != "新内容" {
+		t.Fatalf("rememberNonEmptyText() = %q, want new non-empty text", got)
+	}
+}
+
+func TestXASRTailPaddingMatchesFlushWindow(t *testing.T) {
+	if xasrTailPaddingSamples != 24000 {
+		t.Fatalf("tail padding samples = %d, want 24000", xasrTailPaddingSamples)
+	}
+	if len(xasrTailPadding) != xasrTailPaddingSamples {
+		t.Fatalf("tail padding len = %d, want %d", len(xasrTailPadding), xasrTailPaddingSamples)
+	}
+}
+
 func TestXASRRealModelSmoke(t *testing.T) {
 	if os.Getenv("PRIVATEVOICE_XASR_SMOKE") != "1" {
 		t.Skip("set PRIVATEVOICE_XASR_SMOKE=1 to run the real X-ASR model smoke test")

--
Gitblit v1.9.3