public void ReadWriteBytesTest()
        {
            MemoryStream ms = new MemoryStream();
            // serialize some data
            XmlWriterMock writer = new XmlWriterMock(new StreamAdapter(ms));
            byte[] arr = new byte[] {1, 2, 3, 5, 6, 7, 8, 9, 0};
            writer.Write(arr);
            ms.Position = 0;
            string actual = Encoding.UTF8.GetString(ms.ToArray());
            string expected = "<array>1,2,3,5,6,7,8,9,0</array>";
            Assert.AreEqual(actual, expected);

            // deserialize serialized data
            XmlReaderMock reader = new XmlReaderMock(new StreamAdapter(ms));
            byte[] res = reader.ReadBytes(arr.Length);
            MyAssert.AreEqual(arr, res);
        }
        public void SerializeTest()
        {
            StringList target = new StringList();
            MemoryStream stream = new MemoryStream();
            IBinaryWriter writer = new XmlWriterMock(new StreamAdapter(stream));
            // empty list
            target.Serialize(writer);
            string expected = "<string></string>";
            string actual = Encoding.UTF8.GetString(stream.ToArray());
            Assert.AreEqual(expected, actual);

            // 1 item in list
            target.Add("A");
            stream.Position = 0;
            target.Serialize(writer);
            expected = "<string>A</string>";
            actual = Encoding.UTF8.GetString(stream.ToArray());
            Assert.AreEqual(expected, actual);

            // 2 items in list
            target.Add("B");
            stream.Position = 0;
            target.Serialize(writer);
            expected = "<string>A,B</string>";
            actual = Encoding.UTF8.GetString(stream.ToArray());
            Assert.AreEqual(expected, actual);
        }
        public void ReadWriteByteTest()
        {
            MemoryStream ms = new MemoryStream();
            // serialize some data
            XmlWriterMock writer = new XmlWriterMock(new StreamAdapter(ms));
            byte a = 123;
            writer.Write(a);
            ms.Position = 0;
            string actual = Encoding.UTF8.GetString(ms.ToArray());
            string expected = "<byte>" + a + "</byte>";
            Assert.AreEqual(actual, expected);

            // deserialize serialized data
            XmlReaderMock reader = new XmlReaderMock(new StreamAdapter(ms));
            byte b = reader.ReadByte();
            Assert.AreEqual(a, b);

        }
        public void ReadWriteComplexDataTypeValidationTest()
        {
            MemoryStream ms = new MemoryStream();
            // serialize some data
            XmlWriterMock writer = new XmlWriterMock(new StreamAdapter(ms));

            int integer = 123;
            writer.Write(integer);
            string str = "test string";
            writer.Write(str);

            ms.Position = 0;
            // deserialize serialized data
            XmlReaderMock reader = new XmlReaderMock(new StreamAdapter(ms));
            try
            {
                // current reader position at <date> tag 
                reader.ReadString();
                Assert.Fail("Reader data type checking is failed");
            }
            catch (XmlException)
            {
                // test passed
            }
        }
        public void ReadWriteComplexTest()
        {
            MemoryStream ms = new MemoryStream();
            // serialize some data
            XmlWriterMock writer = new XmlWriterMock(new StreamAdapter(ms));
            DateTime dat = new DateTime(2002, 2, 2, 2, 2, 2); // 02.02.2002 02:02:02
            writer.Write(dat);
            string str = "test string";
            writer.Write(str);
            int integer = 223344;
            writer.Write(integer);
            float single = 1.2345f;
            writer.Write(single);
            byte[] bytes = new byte[] {5,4,3,2,1};
            writer.Write(bytes);
            long int64 = 1234567890;
            writer.Write(int64);

            ms.Position = 0;

            // deserialize serialized data
            XmlReaderMock reader = new XmlReaderMock(new StreamAdapter(ms));
            DateTime adat = reader.ReadDateTime();
            Assert.AreEqual(dat, adat);
            string astr = reader.ReadString();
            Assert.AreEqual(str, astr);
            int aint = reader.ReadInt32();
            Assert.AreEqual(integer, aint);
            float asingle = reader.ReadSingle();
            Assert.AreEqual(single, asingle);
            byte[] abytes = reader.ReadBytes(bytes.Length);
            MyAssert.AreEqual(bytes, abytes);
            long aint64 = reader.ReadInt64();
            Assert.AreEqual(int64, aint64);
        }
        public void ReadWriteDateTimeTest()
        {
            MemoryStream ms = new MemoryStream();
            // serialize some data
            XmlWriterMock writer = new XmlWriterMock(new StreamAdapter(ms));
            DateTime a = new DateTime(2000, 1, 1, 1, 1, 1); // 01.01.2000 01:01:01
            writer.Write(a);
            ms.Position = 0;
            string actual = Encoding.UTF8.GetString(ms.ToArray());
            string expected = "<datetime>" + a + "</datetime>";
            Assert.AreEqual(actual, expected);

            // deserialize serialized data
            XmlReaderMock reader = new XmlReaderMock(new StreamAdapter(ms));
            DateTime b = reader.ReadDateTime();
            Assert.AreEqual(a, b);
        }
        public void ReadWriteStringTest()
        {
            MemoryStream ms = new MemoryStream();
            // serialize some data
            XmlWriterMock writer = new XmlWriterMock(new StreamAdapter(ms));
            string a = "abcdef<test&escaping>";
            writer.Write(a);
            ms.Position = 0;
            string actual = Encoding.UTF8.GetString(ms.ToArray());
            string expected = "<string>" + XmlUtils.XmlEncode(a) + "</string>";
            Assert.AreEqual(actual, expected);

            // deserialize serialized data
            XmlReaderMock reader = new XmlReaderMock(new StreamAdapter(ms));
            string b = reader.ReadString();
            Assert.AreEqual(a, b);
        }
        public void ReadWriteInt64Test()
        {
            MemoryStream ms = new MemoryStream();
            // serialize some data
            XmlWriterMock writer = new XmlWriterMock(new StreamAdapter(ms));
            long a = 1234567890123456789;
            writer.Write(a);
            ms.Position = 0;
            string actual = Encoding.UTF8.GetString(ms.ToArray());
            string expected = "<long>" + a + "</long>";
            Assert.AreEqual(actual, expected);

            // deserialize serialized data
            XmlReaderMock reader = new XmlReaderMock(new StreamAdapter(ms));
            long b = reader.ReadInt64();
            Assert.AreEqual(a, b);
        }