예제 #1
0
        public void TestWriteReadWithNullPortableArray()
        {
            int portableVersion = 1;
            var builder0        = new ClassDefinitionBuilder(SerializationTestsConstants.PORTABLE_FACTORY_ID, 1, portableVersion);
            var builder1        = new ClassDefinitionBuilder(SerializationTestsConstants.PORTABLE_FACTORY_ID, 2, portableVersion);

            builder0.AddPortableArrayField("list", builder1.Build());

            var ss = new SerializationServiceBuilder(new NullLoggerFactory())
                     .SetPortableVersion(portableVersion)
                     .AddClassDefinition(builder0.Build())
                     .AddClassDefinition(builder1.Build())
                     .Build();

            var data = ss.ToData(new TestObject1());

            var ss2 = new SerializationServiceBuilder(new NullLoggerFactory())
                      .AddPortableFactory(1, new PortableFactoryFunc(classId =>
            {
                switch (classId)
                {
                case 1:
                    return(new TestObject1());

                case 2:
                    return(new TestObject2());
                }
                return(null);
            })).Build();
            var obj = ss2.ToObject <object>(data);

            Assert.IsNotNull(obj);
            Assert.IsInstanceOf <TestObject1>(obj);
        }
예제 #2
0
        internal static IClassDefinition CreateNamedPortableClassDefinition(int portableVersion)
        {
            var builder = new ClassDefinitionBuilder(SerializationTestsConstants.PORTABLE_FACTORY_ID,
                                                     SerializationTestsConstants.NAMED_PORTABLE, portableVersion);

            builder.AddStringField("name");
            builder.AddIntField("myint");
            return(builder.Build());
        }
        internal static IClassDefinition CreateNamedPortableClassDefinition()
        {
            var builder = new ClassDefinitionBuilder(TestSerializationConstants.PORTABLE_FACTORY_ID,
                                                     TestSerializationConstants.NAMED_PORTABLE);

            builder.AddUTFField("name");
            builder.AddIntField("myint");
            return(builder.Build());
        }
        public virtual void SetUp()
        {
            var builder = new ClassDefinitionBuilder(1, 2, 3);

            foreach (var fieldName in fieldNames)
            {
                builder.AddByteField(fieldName);
            }
            classDefinition = (ClassDefinition)builder.Build();
        }
예제 #5
0
        internal static IClassDefinition CreateInnerPortableClassDefinition()
        {
            var builder = new ClassDefinitionBuilder(FactoryId, TestSerializationConstants.INNER_PORTABLE);

            builder.AddByteArrayField("b");
            builder.AddCharArrayField("c");
            builder.AddShortArrayField("s");
            builder.AddIntArrayField("i");
            builder.AddLongArrayField("l");
            builder.AddFloatArrayField("f");
            builder.AddDoubleArrayField("d");
            builder.AddPortableArrayField("nn", PortableSerializationTest.CreateNamedPortableClassDefinition());
            return(builder.Build());
        }
예제 #6
0
        public void TestRawDataInvaliRead()
        {
            var serializationService = CreateSerializationService(1, ByteOrder.BigEndian);
            var p = new InvalidRawDataPortable2(DateTime.Now.ToFileTime(), "test chars".ToCharArray(),
                                                new NamedPortable("named portable", 34567),
                                                9876, "Testing raw portable", new ByteArrayDataSerializable(Encoding.UTF8.GetBytes("test bytes")));
            var builder = new ClassDefinitionBuilder(p.GetFactoryId(), p.GetClassId());

            builder.AddLongField("l").AddCharArrayField("c").AddPortableField("p", CreateNamedPortableClassDefinition());
            serializationService.GetPortableContext().RegisterClassDefinition(builder.Build());

            var data = serializationService.ToData(p);

            Assert.AreEqual(p, serializationService.ToObject <RawDataPortable>(data));
        }