public void TestMethod3()
        {
            ResetTestState();
            Console.WriteLine(MethodBase.GetCurrentMethod().Name);

            var v1 = new CTestClassCollectionsAtom();

            v1.Init1();

            Console.WriteLine("Key1:");
            IKey key = IKeyFactory.CreateKey("RootKey");

            _serializer.Serialize(v1, key, this);
            string text = key.SaveToString();

            Console.WriteLine(text);

            int mem_sz = key.GetMemorySize();

            byte[] array = new byte[mem_sz];

            key.BinarySerialize(array, 0);
            Console.WriteLine($"Array Size: {array.Length} bytes");

            Console.WriteLine("Key2:");
            IKey key2 = IKeyFactory.CreateKey(array, 0);

            text = key2.SaveToString();
            Console.WriteLine(text);

            var v2 = _serializer.Deserialize <CTestClassCollectionsAtom>(key2, this);

            CheckInternalErrors();
            Assert.AreEqual(v1, v2);
        }
        public void TestMethod1()
        {
            ResetTestState();
            Console.WriteLine(MethodBase.GetCurrentMethod().Name);

            CTestBase v1 = new CTestBase();

            v1.Init1();

            Console.WriteLine("Key1:");
            IKey key = IKeyFactory.CreateKey("RootKey");

            _serializer.Serialize(v1, key, this);
            string text = key.SaveToString();

            //BaseInt: 7
            //BaseNullable: 9
            //BaseFloat: 101.909
            //BaseString: str2
            //BaseEnum: TestEnumValue3

            Console.WriteLine(text);

            //string input = "sun";
            //byte[] array = Encoding.UTF8.GetBytes(input);
            int mem_sz = key.GetMemorySize();

            byte[] array = new byte[mem_sz];

            key.BinarySerialize(array, 0);
            Console.WriteLine($"Array Size: {array.Length} bytes");

            Console.WriteLine("Key2:");
            IKey key2 = IKeyFactory.CreateKey(array, 0);

            text = key2.SaveToString();
            Console.WriteLine(text);

            var v2 = _serializer.Deserialize <CTestBase>(key2, this);

            CheckInternalErrors();
            Assert.AreEqual(v1, v2);
        }
Example #3
0
        public int BinarySerialize(byte[] ioBuffer, int inOffset)
        {
            int offset = inOffset;

            offset = BinarySerializeUtils.Serialize(_name, ioBuffer, offset);

            offset = BinarySerializeUtils.Serialize(IsArray, ioBuffer, offset);

            if (_values.Count > ushort.MaxValue)
            {
                throw new ArgumentException($"Key {GetPath()} has too many values (>{ushort.MaxValue})!");
            }

            offset = BinarySerializeUtils.Serialize((ushort)_values.Count, ioBuffer, offset);

            for (int i = 0; i < _values.Count; i++)
            {
                IKeyValue val = _values[i];
                offset = val.BinarySerialize(ioBuffer, offset);
            }

            if (_keys.Count > ushort.MaxValue)
            {
                throw new ArgumentException($"Key {GetPath()} has too many child keys (>{ushort.MaxValue})!");
            }

            offset = BinarySerializeUtils.Serialize((ushort)_keys.Count, ioBuffer, offset);

            //значения:
            for (int i = 0; i < _keys.Count; i++)
            {
                IKey key = _keys[i];
                offset = key.BinarySerialize(ioBuffer, offset);
            }

            return(offset);
        }