KokoroTtsSanitizerTests.cscsharp

Documentation

Version 3 design tests

Automated checks for chat, history, and Kokoro TTS (sanitizer + optional live speech).

Quick run

python src/Version3/DesignTests/run-design-tests.py
python src/Version3/DesignTests/run-design-tests.py --live
.\src\Version3\DesignTests\run-design-tests.ps1 -Live

What runs

| Suite | Needs network | Covers | |-------|----------------|--------| | ChatHistoryStoreTests | No | Same as V1 history XML | | OllamaClientHistoryTests | No | Client save/load | | KokoroTtsSanitizerTests | No | Markdown/emoji/URL stripping for speech | | OllamaLiveTests | Yes (--live) | Ollama chat | | KokoroTtsLiveTests | Yes (--live) | Kokoro model load + SpeakAsync |

First Kokoro live run may download ~320MB of model weights.

Console video (testers)

Record Version 3 console sessions (chat + TTS + history):

python src/TestManager/test_manager.py record v2 chat-tts --build

See src/TestManager/README.md.

All versions

python src/run-all-design-tests.py
python src/run-all-design-tests.py --live
using Agent.Core.TextToSpeech;using Xunit;namespace Agent.Core.DesignTests;public class KokoroTtsSanitizerTests{    [Fact]    public void Sanitize_strips_markdown_urls_and_emojis()    {        string input = "Hello **world**! See https://example.com and `#tag` 😀";        string spoken = KokoroTtsSanitizer.Sanitize(input);        Assert.DoesNotContain("**", spoken);        Assert.DoesNotContain("http", spoken, StringComparison.OrdinalIgnoreCase);        Assert.DoesNotContain("#tag", spoken);        Assert.Contains("Hello", spoken);        Assert.Contains("world", spoken);    }    [Fact]    public void Sanitize_keeps_natural_punctuation()    {        string input = "Wait — really? Yes, please.";        string spoken = KokoroTtsSanitizer.Sanitize(input);        Assert.Contains("Wait", spoken);        Assert.Contains("really", spoken);    }    [Fact]    public void Sanitize_verbatim_style_symbols_removed()    {        string input = "Use `code` and [link](https://x.test) {braces}";        string spoken = KokoroTtsSanitizer.Sanitize(input);        Assert.DoesNotContain("`", spoken);        Assert.DoesNotContain("{", spoken);        Assert.DoesNotContain("https", spoken, StringComparison.OrdinalIgnoreCase);        Assert.Contains("link", spoken);    }    [Fact]    public void Sanitize_empty_input_returns_empty()    {        Assert.Equal(string.Empty, KokoroTtsSanitizer.Sanitize(null));        Assert.Equal(string.Empty, KokoroTtsSanitizer.Sanitize("   "));    }}