Ejemplo n.º 1
0
        // Implementations are intentionally split to avoid boxing
        private void TestCodePointForwardEnumerator(string s, Utf8String u8s)
        {
            List<UnicodeCodePoint> codePoints = new List<UnicodeCodePoint>();
            Utf8String.CodePointEnumerator it = u8s.CodePoints.GetEnumerator();
            while (it.MoveNext())
            {
                codePoints.Add(it.Current);
            }

            Utf16LittleEndianCodePointEnumerable utf16CodePoints = new Utf16LittleEndianCodePointEnumerable(s);
            Assert.Equal(utf16CodePoints, codePoints);

            Utf8String u8s2 = new Utf8String(codePoints);
            Assert.Equal(u8s, u8s2);
            Assert.Equal(s, u8s2.ToString());
        }
Ejemplo n.º 2
0
        public void EnumerateAndEnsureCodePointsOfTheSameUtf8AndUtf16StringsAreTheSame(string utf16String, Utf8String utf8String)
        {
            var utf16StringCodePoints = new Utf16LittleEndianCodePointEnumerable(utf16String);

            var utf16CodePointEnumerator = utf16StringCodePoints.GetEnumerator();
            var utf8CodePointEnumerator  = utf8String.CodePoints.GetEnumerator();

            bool moveNext;

            while (true)
            {
                moveNext = utf16CodePointEnumerator.MoveNext();
                Assert.Equal(moveNext, utf8CodePointEnumerator.MoveNext());
                if (!moveNext)
                {
                    break;
                }
                Assert.Equal(utf16CodePointEnumerator.Current, utf8CodePointEnumerator.Current);
            }
        }
Ejemplo n.º 3
0
        private void TestCodePointReverseEnumerator(string s, Utf8String u8s)
        {
            List <uint> codePoints = new List <uint>();

            Utf8String.CodePointReverseEnumerator it = u8s.CodePoints.GetReverseEnumerator();
            while (it.MoveNext())
            {
                codePoints.Add(it.Current);
            }

            codePoints.Reverse();

            Utf16LittleEndianCodePointEnumerable utf16CodePoints = new Utf16LittleEndianCodePointEnumerable(s);

            Assert.Equal(utf16CodePoints, codePoints);

            Utf8String u8s2 = new Utf8String(codePoints);

            TestHelper.Validate(u8s, u8s2);
            Assert.Equal(s, u8s2.ToString());
        }
Ejemplo n.º 4
0
        private static string GetStringLiteral(string s)
        {
            if (s == null)
            {
                return("null");
            }

            Utf16LittleEndianCodePointEnumerable codePoints = new Utf16LittleEndianCodePointEnumerable(s);
            StringBuilder sb = new StringBuilder();

            sb.Append('"');
            foreach (uint codePoint in codePoints)
            {
                if (codePoint >= 32 && codePoint < 127)
                {
                    sb.Append(char.ConvertFromUtf32(unchecked ((int)codePoint)));
                }
                else if (codePoint == (uint)'\n')
                {
                    sb.Append("\\n");
                }
                else if (codePoint == (uint)'\r')
                {
                    sb.Append("\\r");
                }
                else if (codePoint == (uint)'\t')
                {
                    sb.Append("\\t");
                }
                else
                {
                    sb.Append(string.Format("\\u{0:X04}", codePoint));
                }
            }
            sb.Append('"');
            return(sb.ToString());
        }
Ejemplo n.º 5
0
        private static string GetStringLiteral(string s)
        {
            if (s == null)
            {
                return "null";
            }

            Utf16LittleEndianCodePointEnumerable codePoints = new Utf16LittleEndianCodePointEnumerable(s);
            StringBuilder sb = new StringBuilder();
            sb.Append('"');
            foreach (var codePoint in codePoints)
            {
                if (codePoint.Value >= 32 && codePoint.Value < 127)
                {
                    sb.Append(char.ConvertFromUtf32(unchecked((int)codePoint.Value)));
                }
                else if (codePoint.Value == (uint)'\n')
                {
                    sb.Append("\\n");
                }
                else if (codePoint.Value == (uint)'\r')
                {
                    sb.Append("\\r");
                }
                else if (codePoint.Value == (uint)'\t')
                {
                    sb.Append("\\t");
                }
                else
                {
                    sb.Append(string.Format("\\u{0:X04}", codePoint.Value));
                }
            }
            sb.Append('"');
            return sb.ToString();
        }
Ejemplo n.º 6
0
        private void TestCodePointReverseEnumerator(string s, Utf8String u8s)
        {
            List<UnicodeCodePoint> codePoints = new List<UnicodeCodePoint>();
            Utf8String.CodePointReverseEnumerator it = u8s.CodePoints.GetReverseEnumerator();
            while (it.MoveNext())
            {
                codePoints.Add(it.Current);
            }

            codePoints.Reverse();

            Utf16LittleEndianCodePointEnumerable utf16CodePoints = new Utf16LittleEndianCodePointEnumerable(s);
            Assert.Equal(utf16CodePoints, codePoints);

            Utf8String u8s2 = new Utf8String(codePoints);
            Assert.Equal(u8s, u8s2);
            Assert.Equal(s, u8s2.ToString());
        }