Forge
csharpdeeb25a2
1#nullable enable
2using CascadeIDE.Views.Chat.Skia;
3using Xunit;
4
5namespace CascadeIDE.Tests;
6
7public sealed class SkiaMarkdownLayoutTests
8{
9 [Fact]
10 public void ParseInline_parses_bold_italic_and_code()
11 {
12 var runs = SkiaMarkdownLayout.ParseInline("a **b** `c` *d*");
13 Assert.Contains(runs, r => r.Style == SkiaMarkdownStyle.Bold && r.Text == "b");
14 Assert.Contains(runs, r => r.Style == SkiaMarkdownStyle.Code && r.Text == "c");
15 Assert.Contains(runs, r => r.Style == SkiaMarkdownStyle.Italic && r.Text == "d");
16 Assert.Contains(runs, r => r.Style == SkiaMarkdownStyle.Plain && r.Text.Contains('a'));
17 }
18
19 [Fact]
20 public void WrapLines_preserves_styles_across_words()
21 {
22 var runs = SkiaMarkdownLayout.ParseInline("**hello world**");
23 var lines = SkiaMarkdownLayout.WrapLines(runs, maxChars: 8);
24 Assert.NotEmpty(lines);
25 Assert.Contains(lines[0].Runs, r => r.Style == SkiaMarkdownStyle.Bold);
26 }
27
28 [Fact]
29 public void ToPlainText_strips_markers()
30 {
31 var runs = SkiaMarkdownLayout.ParseInline("**x**");
32 var lines = SkiaMarkdownLayout.WrapLines(runs, 40);
33 Assert.Equal("x", SkiaMarkdownLayout.ToPlainText(lines));
34 }
35}
36
View only · write via MCP/CIDE