Skip to content

Commit cddc5a6

Browse files
committed
add tests for Load and Clear
1 parent f772542 commit cddc5a6

File tree

1 file changed

+99
-7
lines changed

1 file changed

+99
-7
lines changed

UnitTests/UnitTests.UWP/UI/Controls/Test_RichSuggestBox.cs

Lines changed: 99 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33
// See the LICENSE file in the project root for more information.
44

5+
using System;
56
using System.Linq;
67
using System.Threading.Tasks;
78
using Windows.UI.Text;
@@ -34,7 +35,7 @@ await App.DispatcherQueue.EnqueueAsync(async () =>
3435

3536
var token1 = rsb.Tokens.Last();
3637

37-
AssertToken(rsb, token1, tokenText1);
38+
AssertToken(rsb, token1);
3839
var expectedStory = $"{token1} \r";
3940
document.GetText(TextGetOptions.None, out var actualStory);
4041
Assert.AreEqual(expectedStory, actualStory);
@@ -46,7 +47,7 @@ await App.DispatcherQueue.EnqueueAsync(async () =>
4647

4748
var token2 = rsb.Tokens.Last();
4849

49-
AssertToken(rsb, token2, tokenText2);
50+
AssertToken(rsb, token2);
5051
expectedStory = $"{token1} {token2} \r";
5152
document.GetText(TextGetOptions.None, out actualStory);
5253
Assert.AreEqual(expectedStory, actualStory);
@@ -59,7 +60,7 @@ await App.DispatcherQueue.EnqueueAsync(async () =>
5960

6061
var token3 = rsb.Tokens.Last();
6162

62-
AssertToken(rsb, token3, tokenText3);
63+
AssertToken(rsb, token3);
6364
expectedStory = $"{token1} {token2}{token3} \r";
6465
document.GetText(TextGetOptions.None, out actualStory);
6566
Assert.AreEqual(expectedStory, actualStory);
@@ -168,14 +169,14 @@ await App.DispatcherQueue.EnqueueAsync(async () =>
168169

169170
await AddTokenAsync(rsb, "@Before");
170171
var tokenBefore = rsb.Tokens[0];
171-
AssertToken(rsb, tokenBefore, "@Before");
172+
AssertToken(rsb, tokenBefore);
172173

173174
selection.Delete(TextRangeUnit.Character, -2);
174175
await Task.Delay(10);
175176

176177
await AddTokenAsync(rsb, "@After");
177178
var tokenAfter = rsb.Tokens[0];
178-
AssertToken(rsb, tokenAfter, "@After");
179+
AssertToken(rsb, tokenAfter);
179180

180181
Assert.AreNotSame(tokenBefore, tokenAfter, "Token before and token after are the same.");
181182
Assert.AreNotEqual(tokenBefore.Id, tokenAfter.Id, "Token ID before and token ID after are the same.");
@@ -217,11 +218,102 @@ await App.DispatcherQueue.EnqueueAsync(async () =>
217218
});
218219
}
219220

220-
private static void AssertToken(RichSuggestBox rsb, RichSuggestToken token, string displayText)
221+
[TestCategory(nameof(RichSuggestBox))]
222+
[TestMethod]
223+
public async Task Test_RichSuggestBox_Clear()
224+
{
225+
await App.DispatcherQueue.EnqueueAsync(async () =>
226+
{
227+
var rsb = new RichSuggestBox();
228+
await SetTestContentAsync(rsb);
229+
230+
var document = rsb.TextDocument;
231+
var selection = document.Selection;
232+
selection.TypeText("before ");
233+
await AddTokenAsync(rsb, "@Token");
234+
selection.TypeText("after");
235+
document.GetText(TextGetOptions.NoHidden, out var text);
236+
237+
Assert.AreEqual(1, rsb.Tokens.Count, "Unexpected tokens count before clear.");
238+
Assert.IsTrue(document.CanUndo(), "Document cannot undo before clear.");
239+
Assert.AreEqual("before \u200B@Token\u200B after", text);
240+
241+
rsb.Clear();
242+
document.GetText(TextGetOptions.NoHidden, out text);
243+
244+
Assert.AreEqual(0, rsb.Tokens.Count, "Unexpected tokens count after clear.");
245+
Assert.IsFalse(document.CanUndo(), "Document can undo after clear.");
246+
Assert.AreEqual(string.Empty, text);
247+
});
248+
}
249+
250+
[TestCategory(nameof(RichSuggestBox))]
251+
[TestMethod]
252+
public async Task Test_RichSuggestBox_ClearUndoRedoHistory()
253+
{
254+
await App.DispatcherQueue.EnqueueAsync(async () =>
255+
{
256+
var rsb = new RichSuggestBox();
257+
await SetTestContentAsync(rsb);
258+
259+
var document = rsb.TextDocument;
260+
var selection = document.Selection;
261+
selection.TypeText("before ");
262+
await AddTokenAsync(rsb, "@Token");
263+
selection.TypeText("after");
264+
document.GetText(TextGetOptions.NoHidden, out var text);
265+
266+
Assert.AreEqual(1, rsb.Tokens.Count, "Unexpected tokens count before clear.");
267+
Assert.IsTrue(document.CanUndo(), "Document cannot undo before clear.");
268+
Assert.AreEqual("before \u200B@Token\u200B after", text);
269+
270+
rsb.ClearUndoRedoSuggestionHistory();
271+
document.GetText(TextGetOptions.NoHidden, out text);
272+
273+
Assert.AreEqual(1, rsb.Tokens.Count, "Unexpected tokens count after clear.");
274+
Assert.IsFalse(document.CanUndo(), "Document can undo after clear.");
275+
Assert.AreEqual("before \u200B@Token\u200B after", text);
276+
});
277+
}
278+
279+
[TestCategory(nameof(RichSuggestBox))]
280+
[TestMethod]
281+
public async Task Test_RichSuggestBox_Load()
282+
{
283+
const string rtf = @"{\rtf1\fbidis\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Segoe UI;}{\f1\fnil Segoe UI;}}
284+
{\colortbl ;\red255\green255\blue255;\red0\green0\blue255;\red41\green150\blue204;}
285+
{\*\generator Riched20 10.0.19041}\viewkind4\uc1
286+
\pard\tx720\cf1\f0\fs21\lang4105 Hello {{\field{\*\fldinst{HYPERLINK ""c3b58ee9-df54-4686-b295-f203a5d8809a""}}{\fldrslt{\ul\cf2\u8203?\cf3\highlight1 @Michael Hawker\cf1\highlight0\u8203?}}}}\f1\fs21 \f0 from {{\field{\*\fldinst{HYPERLINK ""1c6a71c3-f81f-4a27-8f17-50d64acd5b61""}}{\fldrslt{\ul\cf2\u8203?\cf3\highlight1 @Tung Huynh\cf1\highlight0\u8203?}}}}\f1\fs21\par
287+
}
288+
";
289+
var token1 = new RichSuggestToken(Guid.Parse("c3b58ee9-df54-4686-b295-f203a5d8809a"), "@Michael Hawker");
290+
var token2 = new RichSuggestToken(Guid.Parse("1c6a71c3-f81f-4a27-8f17-50d64acd5b61"), "@Tung Huynh");
291+
292+
await App.DispatcherQueue.EnqueueAsync(async () =>
293+
{
294+
var rsb = new RichSuggestBox();
295+
await SetTestContentAsync(rsb);
296+
297+
var document = rsb.TextDocument;
298+
var selection = document.Selection;
299+
selection.TypeText("before ");
300+
await AddTokenAsync(rsb, "@Token");
301+
selection.TypeText("after");
302+
303+
rsb.Load(rtf, new[] { token1, token2 });
304+
await Task.Delay(10);
305+
document.GetText(TextGetOptions.NoHidden, out var text);
306+
307+
Assert.AreEqual("Hello \u200b@Michael Hawker\u200b from \u200b@Tung Huynh\u200b\r", text, "Unexpected document text.");
308+
AssertToken(rsb, token1);
309+
AssertToken(rsb, token2);
310+
});
311+
}
312+
313+
private static void AssertToken(RichSuggestBox rsb, RichSuggestToken token)
221314
{
222315
var document = rsb.TextDocument;
223316
var tokenRange = document.GetRange(token.RangeStart, token.RangeEnd);
224-
Assert.AreSame(displayText, token.Item, $"Token item has unknown object {token.Item}.");
225317
Assert.AreEqual(token.ToString(), tokenRange.Text);
226318
Assert.AreEqual($"\"{token.Id}\"", tokenRange.Link, "Unexpected link value.");
227319
Assert.AreEqual(LinkType.FriendlyLinkAddress, tokenRange.CharacterFormat.LinkType, "Unexpected link type.");

0 commit comments

Comments
 (0)