public virtual void TestFromChars() { for (int i = 0; i < 100; i++) { string s = TestUtil.RandomUnicodeString(Random()); string s2 = (new BytesRef(s)).Utf8ToString(); Assert.AreEqual(s, s2); } // only for 4.x Assert.AreEqual("\uFFFF", (new BytesRef("\uFFFF")).Utf8ToString()); }
public virtual void TestFromCharSequence() { for (int i = 0; i < 100; i++) { ICharSequence s = new StringCharSequence(TestUtil.RandomUnicodeString(Random)); ICharSequence s2 = (new BytesRef(s)).Utf8ToString().AsCharSequence(); Assert.AreEqual(s, s2); } // only for 4.x Assert.AreEqual("\uFFFF", (new BytesRef("\uFFFF")).Utf8ToString()); }
public virtual void TestUTF8toUTF32() { BytesRef utf8 = new BytesRef(20); Int32sRef utf32 = new Int32sRef(20); int[] codePoints = new int[20]; int num = AtLeast(50000); for (int i = 0; i < num; i++) { string s = TestUtil.RandomUnicodeString(Random); UnicodeUtil.UTF16toUTF8(s.ToCharArray(), 0, s.Length, utf8); UnicodeUtil.UTF8toUTF32(utf8, utf32); int charUpto = 0; int intUpto = 0; while (charUpto < s.Length) { int cp = Character.CodePointAt(s, charUpto); codePoints[intUpto++] = cp; charUpto += Character.CharCount(cp); } if (!ArrayUtil.Equals(codePoints, 0, utf32.Int32s, utf32.Offset, intUpto)) { Console.WriteLine("FAILED"); for (int j = 0; j < s.Length; j++) { Console.WriteLine(" char[" + j + "]=" + ((int)s[j]).ToString("x")); } Console.WriteLine(); Assert.AreEqual(intUpto, utf32.Length); for (int j = 0; j < intUpto; j++) { Console.WriteLine(" " + utf32.Int32s[j].ToString("x") + " vs " + codePoints[j].ToString("x")); } Assert.Fail("mismatch"); } } }
public virtual void TestUTF16InUTF8Order() { int numStrings = AtLeast(1000); BytesRef[] utf8 = new BytesRef[numStrings]; CharsRef[] utf16 = new CharsRef[numStrings]; for (int i = 0; i < numStrings; i++) { string s = TestUtil.RandomUnicodeString(Random()); utf8[i] = new BytesRef(s); utf16[i] = new CharsRef(s); } Array.Sort(utf8); Array.Sort(utf16, CharsRef.UTF16SortedAsUTF8Comparer); for (int i = 0; i < numStrings; i++) { Assert.AreEqual(utf8[i].Utf8ToString(), utf16[i].ToString()); } }
public static string RandomSubString(Random random, int wordLength, bool simple) { if (wordLength == 0) { return(""); } int evilness = TestUtil.NextInt32(random, 0, 20); StringBuilder sb = new StringBuilder(); while (sb.Length < wordLength) { ; if (simple) { sb.Append(random.NextBoolean() ? TestUtil.RandomSimpleString(random, wordLength) : TestUtil.RandomHtmlishString(random, wordLength)); } else { if (evilness < 10) { sb.Append(TestUtil.RandomSimpleString(random, wordLength)); } else if (evilness < 15) { Assert.AreEqual(0, sb.Length); // we should always get wordLength back! sb.Append(TestUtil.RandomRealisticUnicodeString(random, wordLength, wordLength)); } else if (evilness == 16) { sb.Append(TestUtil.RandomHtmlishString(random, wordLength)); } else if (evilness == 17) { // gives a lot of punctuation sb.Append(TestUtil.RandomRegexpishString(random, wordLength)); } else { sb.Append(TestUtil.RandomUnicodeString(random, wordLength)); } } } if (sb.Length > wordLength) { sb.Length = wordLength; if (char.IsHighSurrogate(sb[wordLength - 1])) { sb.Length = wordLength - 1; } } if (random.Next(17) == 0) { // mix up case string mixedUp = TestUtil.RandomlyRecaseString(random, sb.ToString()); Assert.True(mixedUp.Length == sb.Length, "Lengths are not the same: mixedUp = " + mixedUp + ", length = " + mixedUp.Length + ", sb = " + sb + ", length = " + sb.Length); return(mixedUp); } else { return(sb.ToString()); } }