Skip to content

Commit 5cc4e12

Browse files
committed
more tests
1 parent 751ab7b commit 5cc4e12

6 files changed

Lines changed: 79 additions & 52 deletions

File tree

src/Tests.ImageSharp/Tests.ImageSharp.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
<Project Sdk="Microsoft.NET.Sdk">
33
<PropertyGroup>
44
<TargetFramework>net10.0</TargetFramework>
5-
<RootNamespace>Tests</RootNamespace>
65
</PropertyGroup>
76
<ItemGroup>
87
<PackageReference Include="NUnit" />

src/Tests.Skia/Tests.Skia.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
<Project Sdk="Microsoft.NET.Sdk">
33
<PropertyGroup>
44
<TargetFramework>net10.0</TargetFramework>
5-
<RootNamespace>Tests</RootNamespace>
65
</PropertyGroup>
76
<ItemGroup>
87
<PackageReference Include="NUnit" />

src/Tests/PowerpointUnitTests.cs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using DocumentFormat.OpenXml;
21
using DocumentFormat.OpenXml.Presentation;
32
using A = DocumentFormat.OpenXml.Drawing;
43

@@ -70,7 +69,7 @@ public void GetPowerpointInfo_SlideWithNoText_TextIsNull()
7069
}
7170

7271
[Test]
73-
public void GetSlideText_EmptySlide_ReturnsEmpty()
72+
public void AppendSlideText_EmptySlide_ReturnsFalse()
7473
{
7574
using var doc = CreateEmptyDoc();
7675
var slidePart = doc.PresentationPart!.AddNewPart<SlidePart>();
@@ -82,31 +81,36 @@ public void GetSlideText_EmptySlide_ReturnsEmpty()
8281
new ApplicationNonVisualDrawingProperties()),
8382
new GroupShapeProperties(new A.TransformGroup()))));
8483

85-
Assert.That(VerifyOpenXml.GetSlideText(slidePart), Is.EqualTo(string.Empty));
84+
var builder = new System.Text.StringBuilder();
85+
Assert.That(VerifyOpenXml.AppendSlideText(builder, slidePart), Is.False);
86+
Assert.That(builder.Length, Is.Zero);
8687
}
8788

8889
[Test]
89-
public void GetSlideText_WithParagraphs()
90+
public void AppendSlideText_WithParagraphs()
9091
{
9192
using var doc = CreateEmptyDoc();
9293
var presPart = doc.PresentationPart!;
9394
var slidePart = AddSlide(presPart, "Line1", "Line2");
94-
var text = VerifyOpenXml.GetSlideText(slidePart);
95+
var builder = new System.Text.StringBuilder();
96+
Assert.That(VerifyOpenXml.AppendSlideText(builder, slidePart), Is.True);
97+
var text = builder.ToString();
9598
Assert.That(text, Does.Contain("Line1"));
9699
Assert.That(text, Does.Contain("Line2"));
97100
}
98101

99102
[Test]
100-
public void GetSlideText_ParagraphWithNoText_SkippedFromOutput()
103+
public void AppendSlideText_ParagraphWithNoText_SkippedFromOutput()
101104
{
102105
using var doc = CreateEmptyDoc();
103106
var presPart = doc.PresentationPart!;
104107
var slidePart = presPart.AddNewPart<SlidePart>();
105108
slidePart.Slide = BuildSlide(
106109
new A.Paragraph(),
107110
new A.Paragraph(new A.Run(new A.RunProperties(), new A.Text("Only"))));
108-
var text = VerifyOpenXml.GetSlideText(slidePart);
109-
Assert.That(text.TrimEnd(), Is.EqualTo("Only"));
111+
var builder = new System.Text.StringBuilder();
112+
VerifyOpenXml.AppendSlideText(builder, slidePart);
113+
Assert.That(builder.ToString(), Is.EqualTo("Only"));
110114
}
111115

112116
static PresentationDocument CreateEmptyDoc()

src/Tests/WordUnitTests.cs

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,29 +89,43 @@ public void GetWordDocumentText_WithTable()
8989
}
9090

9191
[Test]
92-
public void GetWordParagraphText_TextAndTab()
92+
public void AppendWordParagraphText_TextAndTab()
9393
{
9494
var run = new Run(new WordText("Hi"), new TabChar());
95-
Assert.That(VerifyOpenXml.GetWordParagraphText(new Paragraph(run)), Is.EqualTo("Hi\t"));
95+
Assert.That(Render(new Paragraph(run)), Is.EqualTo("Hi\t"));
9696
}
9797

9898
[Test]
99-
public void GetWordParagraphText_PageBreak()
99+
public void AppendWordParagraphText_PageBreak()
100100
{
101101
var run = new Run(new WordText("Before"), new Break { Type = BreakValues.Page });
102-
var result = VerifyOpenXml.GetWordParagraphText(new Paragraph(run));
103-
Assert.That(result, Does.Contain("--- Page Break ---"));
102+
Assert.That(Render(new Paragraph(run)), Does.Contain("--- Page Break ---"));
104103
}
105104

106105
[Test]
107-
public void GetWordParagraphText_LineBreak()
106+
public void AppendWordParagraphText_LineBreak()
108107
{
109108
var run = new Run(new WordText("A"), new Break());
110-
var result = VerifyOpenXml.GetWordParagraphText(new Paragraph(run));
109+
var result = Render(new Paragraph(run));
111110
Assert.That(result, Does.StartWith("A"));
112111
Assert.That(result, Does.Not.Contain("Page Break"));
113112
}
114113

114+
[Test]
115+
public void AppendWordParagraphText_Empty_ReturnsFalse()
116+
{
117+
var builder = new System.Text.StringBuilder();
118+
Assert.That(VerifyOpenXml.AppendWordParagraphText(builder, new Paragraph()), Is.False);
119+
Assert.That(builder.Length, Is.Zero);
120+
}
121+
122+
static string Render(Paragraph paragraph)
123+
{
124+
var builder = new System.Text.StringBuilder();
125+
VerifyOpenXml.AppendWordParagraphText(builder, paragraph);
126+
return builder.ToString();
127+
}
128+
115129
[Test]
116130
public void GetWordDocumentFonts_NoFontTablePart_ReturnsNulls()
117131
{

src/Verify.OpenXml/VerifyOpenXml_Powerpoint.cs

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -36,25 +36,32 @@ static ConversionResult ConvertPowerpoint(PresentationDocument document, IReadOn
3636
internal static PowerpointInfo GetPowerpointInfo(PresentationDocument document)
3737
{
3838
var presentationPart = document.PresentationPart;
39-
var slideTexts = new List<string>();
39+
var builder = new StringBuilder();
40+
var slideCount = 0;
4041

4142
if (presentationPart?.SlideParts != null)
4243
{
4344
foreach (var slidePart in presentationPart.SlideParts)
4445
{
45-
var text = GetSlideText(slidePart);
46-
if (!string.IsNullOrEmpty(text))
46+
slideCount++;
47+
var before = builder.Length;
48+
if (before > 0)
4749
{
48-
slideTexts.Add(text);
50+
builder.Append("\n---\n");
51+
}
52+
53+
if (!AppendSlideText(builder, slidePart))
54+
{
55+
builder.Length = before;
4956
}
5057
}
5158
}
5259

5360
return new()
5461
{
5562
Properties = GetPowerpointProperties(document),
56-
SlideCount = presentationPart?.SlideParts.Count() ?? 0,
57-
Text = slideTexts.Count > 0 ? string.Join("\n---\n", slideTexts) : null
63+
SlideCount = slideCount,
64+
Text = builder.Length > 0 ? builder.ToString() : null
5865
};
5966
}
6067

@@ -76,31 +83,37 @@ internal static PowerpointInfo GetPowerpointInfo(PresentationDocument document)
7683
return properties.Count > 0 ? properties : null;
7784
}
7885

79-
internal static string GetSlideText(SlidePart slidePart)
86+
internal static bool AppendSlideText(StringBuilder builder, SlidePart slidePart)
8087
{
81-
var builder = new StringBuilder();
82-
8388
var slide = slidePart.Slide;
8489
if (slide == null)
8590
{
86-
return string.Empty;
91+
return false;
8792
}
8893

94+
var startLength = builder.Length;
95+
8996
foreach (var paragraph in slide.Descendants<PParagraph>())
9097
{
91-
var paragraphText = new StringBuilder();
98+
var paragraphStart = builder.Length;
9299
foreach (var text in paragraph.Descendants<PText>())
93100
{
94-
paragraphText.Append(text.Text);
101+
builder.Append(text.Text);
95102
}
96103

97-
if (paragraphText.Length > 0)
104+
if (builder.Length > paragraphStart)
98105
{
99-
builder.AppendLine(paragraphText.ToString());
106+
builder.AppendLine();
100107
}
101108
}
102109

103-
return builder.ToString().TrimEnd();
110+
if (builder.Length == startLength)
111+
{
112+
return false;
113+
}
114+
115+
builder.TrimEnd();
116+
return builder.Length > startLength;
104117
}
105118
}
106119

src/Verify.OpenXml/VerifyOpenXml_Word.cs

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -206,37 +206,37 @@ static void AddPropertyIfNotEmpty(Dictionary<string, object?> properties, string
206206
var builder = new StringBuilder();
207207
foreach (var paragraph in body.Elements<Paragraph>())
208208
{
209-
var paragraphText = GetWordParagraphText(paragraph);
210-
if (!string.IsNullOrEmpty(paragraphText))
209+
if (AppendWordParagraphText(builder, paragraph))
211210
{
212-
builder.AppendLine(paragraphText);
211+
builder.AppendLine();
213212
}
214213
}
215214

216-
// Also get text from tables
217215
foreach (var table in body.Elements<WordTable>())
218216
{
219217
foreach (var row in table.Elements<TableRow>())
220218
{
221-
var rowTexts = new List<string>();
219+
var firstCell = true;
220+
var anyCell = false;
222221
foreach (var cell in row.Elements<TableCell>())
223222
{
224-
var cellText = new StringBuilder();
225-
foreach (var paragraph in cell.Elements<Paragraph>())
223+
if (!firstCell)
226224
{
227-
var paragraphText = GetWordParagraphText(paragraph);
228-
if (!string.IsNullOrEmpty(paragraphText))
229-
{
230-
cellText.Append(paragraphText);
231-
}
225+
builder.Append('\t');
232226
}
233227

234-
rowTexts.Add(cellText.ToString());
228+
firstCell = false;
229+
anyCell = true;
230+
231+
foreach (var paragraph in cell.Elements<Paragraph>())
232+
{
233+
AppendWordParagraphText(builder, paragraph);
234+
}
235235
}
236236

237-
if (rowTexts.Count > 0)
237+
if (anyCell)
238238
{
239-
builder.AppendLine(string.Join('\t', rowTexts));
239+
builder.AppendLine();
240240
}
241241
}
242242
}
@@ -250,9 +250,9 @@ static void AddPropertyIfNotEmpty(Dictionary<string, object?> properties, string
250250
return string.IsNullOrEmpty(result) ? null : result;
251251
}
252252

253-
internal static string GetWordParagraphText(Paragraph paragraph)
253+
internal static bool AppendWordParagraphText(StringBuilder builder, Paragraph paragraph)
254254
{
255-
var builder = new StringBuilder();
255+
var startLength = builder.Length;
256256

257257
foreach (var run in paragraph.Elements<WordRun>())
258258
{
@@ -261,13 +261,11 @@ internal static string GetWordParagraphText(Paragraph paragraph)
261261
builder.Append(text.Text);
262262
}
263263

264-
// Handle tabs
265264
foreach (var _ in run.Elements<TabChar>())
266265
{
267266
builder.Append('\t');
268267
}
269268

270-
// Handle breaks
271269
foreach (var wordBreak in run.Elements<WordBreak>())
272270
{
273271
if (wordBreak.Type?.Value == BreakValues.Page)
@@ -282,6 +280,6 @@ internal static string GetWordParagraphText(Paragraph paragraph)
282280
}
283281
}
284282

285-
return builder.ToString();
283+
return builder.Length > startLength;
286284
}
287285
}

0 commit comments

Comments
 (0)