public async Task Test_RichSuggestBox_Load() { const string rtf = @"{\rtf1\fbidis\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Segoe UI;}{\f1\fnil Segoe UI;}} {\colortbl ;\red255\green255\blue255;\red0\green0\blue255;\red41\green150\blue204;} {\*\generator Riched20 10.0.19041}\viewkind4\uc1 \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 } "; var token1 = new RichSuggestToken(Guid.Parse("c3b58ee9-df54-4686-b295-f203a5d8809a"), "@Michael Hawker"); var token2 = new RichSuggestToken(Guid.Parse("1c6a71c3-f81f-4a27-8f17-50d64acd5b61"), "@Tung Huynh"); await App.DispatcherQueue.EnqueueAsync(async() => { var rsb = new RichSuggestBox(); await SetTestContentAsync(rsb); var document = rsb.TextDocument; var selection = document.Selection; selection.TypeText("before "); await AddTokenAsync(rsb, "@Token"); selection.TypeText("after"); rsb.Load(rtf, new[] { token1, token2 }); await Task.Delay(10); document.GetText(TextGetOptions.NoHidden, out var text); Assert.AreEqual(2, rsb.Tokens.Count, "Unexpected tokens count after load."); Assert.AreEqual("Hello \u200b@Michael Hawker\u200b from \u200b@Tung Huynh\u200b\r", text, "Unexpected document text."); AssertToken(rsb, token1); AssertToken(rsb, token2); }); }
private static void AssertToken(RichSuggestBox rsb, RichSuggestToken token) { var document = rsb.TextDocument; var tokenRange = document.GetRange(token.RangeStart, token.RangeEnd); Assert.AreEqual(token.ToString(), tokenRange.Text); Assert.AreEqual($"\"{token.Id}\"", tokenRange.Link, "Unexpected link value."); Assert.AreEqual(LinkType.FriendlyLinkAddress, tokenRange.CharacterFormat.LinkType, "Unexpected link type."); }