示例#1
0
        public unsafe void MultiCharacterValueSeparator(string txt, int expected)
        {
            var state = new NeedsEncodeHelper("#*#", '"', '#');

            fixed(char *charPtr = txt)
            {
                var res = state.ContainsCharRequiringEncoding(charPtr, txt.Length);

                Assert.Equal(expected, res);
            }
        }
示例#2
0
        public unsafe void Exactly256Bits(string txt, int expected)
        {
            var charsFor256Bits = 256 / (sizeof(char) * 8);

            Assert.Equal(0, txt.Length % charsFor256Bits);

            var state = new NeedsEncodeHelper(",", '"', '#');

            fixed(char *charPtr = txt)
            {
                var res = state.ContainsCharRequiringEncoding(charPtr, txt.Length);

                Assert.Equal(expected, res);
            }
        }
示例#3
0
        public unsafe void Simple(string txt, int expected)
        {
            var s1 = new NeedsEncodeHelper(",", '"', '#');
            var s2 = new NeedsEncodeHelper(",", '"', null);
            var s3 = new NeedsEncodeHelper(",", null, null);

            fixed(char *charPtr = txt)
            {
                var res1 = s1.ContainsCharRequiringEncoding(charPtr, txt.Length);
                var res2 = s2.ContainsCharRequiringEncoding(charPtr, txt.Length);
                var res3 = s3.ContainsCharRequiringEncoding(charPtr, txt.Length);

                Assert.Equal(expected, res1);
                Assert.Equal(expected, res2);
                Assert.Equal(expected, res3);
            }
        }
示例#4
0
        public unsafe void LessThan256Bits()
        {
            var state = new NeedsEncodeHelper(",", '"', '#');

            for (var len = 0; len < 16; len++)
            {
                var str = string.Join("", Enumerable.Range(0, len).Select(i => (char)('A' + i)));

                fixed(char *charPtr = str)
                {
                    var res = state.ContainsCharRequiringEncoding(charPtr, str.Length);

                    Assert.Equal(-1, res);
                }

                for (var j = 0; j < len; j++)
                {
                    var newStr1 = str.Substring(0, j) + "\r" + str.Substring(j + 1);
                    var newStr2 = str.Substring(0, j) + "\n" + str.Substring(j + 1);
                    var newStr3 = str.Substring(0, j) + "," + str.Substring(j + 1);
                    var newStr4 = str.Substring(0, j) + "\"" + str.Substring(j + 1);
                    var newStr5 = str.Substring(0, j) + "#" + str.Substring(j + 1);

                    var arr = new[] { newStr1, newStr2, newStr3, newStr4, newStr5 };
                    foreach (var s in arr)
                    {
                        fixed(char *charPtr = s)
                        {
                            var res = state.ContainsCharRequiringEncoding(charPtr, s.Length);

                            Assert.Equal(j, res);
                        }
                    }
                }
            }
        }