public void Map16to32Test() { // Arrange var buf = new Utf32Buffer(); // Act buf.Add(mixedString); // Assert for (int i = 0; i < mixedString.Length; i++) { char ch = mixedString[i]; var ch32 = buf[buf.Utf16OffsetToUtf32Offset(i)]; if (ch >= 0xD800 && ch <= 0xDFFF) { var chL = mixedString[i + 1]; var ch32actual = 0x10000 | ((ch - 0xD800) << 10) | (chL - 0xDC00); Assert.Equal(ch32, ch32actual); i++; } else if (ch == '\r' && mixedString[i + 1] == '\n') { Assert.Equal('\n', ch32); i++; } else { Assert.Equal(ch, ch32); } } }
public void DeleteTextEnd() { // Arrange var buf = new Utf32Buffer(); // Act buf.Add("abxx🌐xxcd"); buf.Delete(4, 5); // Assert Assert.Equal("abxx", buf.ToString()); }
public void ConvertToUtf16() { // Arrange var buf = new Utf32Buffer(); // Act buf.Add(mixedString); var str2 = Utf32Utils.FromUtf32(buf.AsSlice()); // Assert Assert.Equal(mixedString.Replace("\r", ""), str2); }
public void InsertText() { // Arrange var buf = new Utf32Buffer(); var strA = "abcd"; var strB = "xx🌐xx"; // Act buf.Add(strA); buf.Insert(2, strB); // Assert Assert.Equal("abxx🌐xxcd", buf.ToString()); }
public void AddText() { // Arrange var buf = new Utf32Buffer(); var str = "ab🌐cde"; // Act buf.Add(str); // Assert Assert.Equal(7, str.Length); Assert.Equal(6, buf.Length); Assert.Equal(str, buf.ToString()); }
public void Map32to16Test() { // Arrange var buf = new Utf32Buffer(); // Act buf.Add(mixedString); // Assert for (int i32 = 0; i32 < buf.Length; i32++) { var i16 = buf.Utf32OffsetToUtf16Offset(i32); var i32b = buf.Utf16OffsetToUtf32Offset(i16); Assert.Equal(i32, i32b); } }
public void TestIsWordBoundary() { var str = new Utf32Buffer("Hello () World").AsSlice(); // Get the boundaries (assuming FindWordBoundaries is correct) var boundaries = WordBoundaryAlgorithm.FindWordBoundaries(str).ToList(); var boundaries2 = new List <int>(); for (int i = 0; i < str.Length; i++) { if (WordBoundaryAlgorithm.IsWordBoundary(str.SubSlice(0, i), str.SubSlice(i, str.Length - i))) { boundaries2.Add(i); } } Assert.Equal(boundaries, boundaries2); }
public void MapSurrogateToBase() { // Arrange var buf = new Utf32Buffer(); // Act buf.Add(mixedString); // Assert for (int i = 0; i < mixedString.Length; i++) { char ch = mixedString[i]; if ((ch >= 0xDC00 && ch <= 0xDFFF) || (ch == '\n' && mixedString[i - 1] == '\r')) { int prior = buf.Utf16OffsetToUtf32Offset(i - 1); int current = buf.Utf16OffsetToUtf32Offset(i); Assert.Equal(prior, current); } } }