public void TestToCodePoint() { char[] pairs = { (char)(UChar.MinHighSurrogate + 0), (char)(UChar.MinLowSurrogate + 0), (char)(UChar.MinHighSurrogate + 1), (char)(UChar.MinLowSurrogate + 1), (char)(UChar.MinHighSurrogate + 2), (char)(UChar.MinLowSurrogate + 2), (char)(UChar.MaxHighSurrogate - 2), (char)(UChar.MaxLowSurrogate - 2), (char)(UChar.MaxHighSurrogate - 1), (char)(UChar.MaxLowSurrogate - 1), (char)(UChar.MaxHighSurrogate - 0), (char)(UChar.MaxLowSurrogate - 0), }; for (int i = 0; i < pairs.Length; i += 2) { int cp = UChar.ToCodePoint(pairs[i], pairs[i + 1]); if (pairs[i] != UTF16.GetLeadSurrogate(cp) || pairs[i + 1] != UTF16.GetTrailSurrogate(cp)) { Errln((pairs[i]).ToHexString() + ", " + pairs[i + 1]); break; } } }
public void TestToChars() { char[] chars = new char[3]; int cp = UChar.ToCodePoint(UChar.MinHighSurrogate, UChar.MinLowSurrogate); UChar.ToChars(cp, chars, 1); if (chars[1] != UChar.MinHighSurrogate || chars[2] != UChar.MinLowSurrogate) { Errln("fail"); } chars = UChar.ToChars(cp); if (chars[0] != UChar.MinHighSurrogate || chars[1] != UChar.MinLowSurrogate) { Errln("fail"); } }
public void TestCodePointAtBefore() { String s = "" + UChar.MinHighSurrogate + // isolated high UChar.MinHighSurrogate + // pair UChar.MinLowSurrogate + UChar.MinLowSurrogate; // isolated // low char[] c = s.ToCharArray(); int[] avalues = { UChar.MinHighSurrogate, UChar.ToCodePoint(UChar.MinHighSurrogate, UChar.MinLowSurrogate), UChar.MinLowSurrogate, UChar.MinLowSurrogate }; int[] bvalues = { UChar.MinHighSurrogate, UChar.MinHighSurrogate, UChar.ToCodePoint(UChar.MinHighSurrogate, UChar.MinLowSurrogate), UChar.MinLowSurrogate, }; StringBuffer b = new StringBuffer(s); for (int i = 0; i < avalues.Length; ++i) { if (UChar.CodePointAt(s, i) != avalues[i]) { Errln("string at: " + i); } if (UChar.CodePointAt(c, i) != avalues[i]) { Errln("chars at: " + i); } if (UChar.CodePointAt(b, i) != avalues[i]) { Errln("stringbuffer at: " + i); } if (UChar.CodePointBefore(s, i + 1) != bvalues[i]) { Errln("string before: " + i); } if (UChar.CodePointBefore(c, i + 1) != bvalues[i]) { Errln("chars before: " + i); } if (UChar.CodePointBefore(b, i + 1) != bvalues[i]) { Errln("stringbuffer before: " + i); } } //cover codePointAtBefore with limit Logln("Testing codePointAtBefore with limit ..."); for (int i = 0; i < avalues.Length; ++i) { if (UChar.CodePointAt(c, i, 4) != avalues[i]) { Errln("chars at: " + i); } if (UChar.CodePointBefore(c, i + 1, 0) != bvalues[i]) { Errln("chars before: " + i); } } }