LineBreakerTests.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System;
  2. using Avalonia.Media.TextFormatting.Unicode;
  3. using Avalonia.Utility;
  4. using Xunit;
  5. namespace Avalonia.Visuals.UnitTests.Media.TextFormatting
  6. {
  7. public class LineBreakerTests
  8. {
  9. [Fact]
  10. public void Should_Split_Text_By_Explicit_Breaks()
  11. {
  12. //ABC [0 3]
  13. //DEF\r[4 7]
  14. //\r[8]
  15. //Hello\r\n[9 15]
  16. const string text = "ABC DEF\r\rHELLO\r\n";
  17. var buffer = new ReadOnlySlice<char>(text.AsMemory());
  18. var lineBreaker = new LineBreakEnumerator(buffer);
  19. var current = 0;
  20. Assert.True(lineBreaker.MoveNext());
  21. var a = text.Substring(current, lineBreaker.Current.PositionMeasure - current + 1);
  22. Assert.Equal("ABC ", a);
  23. current += a.Length;
  24. Assert.True(lineBreaker.MoveNext());
  25. var b = text.Substring(current, lineBreaker.Current.PositionMeasure - current + 1);
  26. Assert.Equal("DEF\r", b);
  27. current += b.Length;
  28. Assert.True(lineBreaker.MoveNext());
  29. var c = text.Substring(current, lineBreaker.Current.PositionMeasure - current + 1);
  30. Assert.Equal("\r", c);
  31. current += c.Length;
  32. Assert.True(lineBreaker.MoveNext());
  33. var d = text.Substring(current, text.Length - current);
  34. Assert.Equal("HELLO\r\n", d);
  35. }
  36. }
  37. }