Esempio n. 1
0
 public void NullableTest1(int?value)
 {
     using var stream = new MemoryStream();
     BinaronConvert.Serialize(value, stream);
     stream.Seek(0, SeekOrigin.Begin);
     Assert.AreEqual(value, BinaronConvert.Deserialize <int?>(stream));
 }
Esempio n. 2
0
 public void CustomInvalidNonConcreteTest <TSource>(TSource source, Type destType)
 {
     using var stream = new MemoryStream();
     BinaronConvert.Serialize(source, stream);
     stream.Seek(0, SeekOrigin.Begin);
     Assert.Throws <NotSupportedException>(() => Converter.Deserialize(destType, stream));
 }
Esempio n. 3
0
 private static void BinaronTest_Serialize <T>(T input, int loop)
 {
     using var stream = new MemoryStream();
     for (var i = 0; i < loop; i++)
     {
         BinaronConvert.Serialize(input, stream, new SerializerOptions {
             SkipNullValues = true
         });
         stream.Position = 0;
     }
 }
Esempio n. 4
0
        private static void BinaronTest_Validate <T>(T input, Action <T> validate)
        {
            using var stream = new MemoryStream();
            BinaronConvert.Serialize(input, stream, new SerializerOptions {
                SkipNullValues = true
            });
            stream.Position = 0;

            var value = BinaronConvert.Deserialize <T>(stream);

            validate(value);
        }
Esempio n. 5
0
        public void DeserializeToDateTimeLocal()
        {
            var dt = DateTime.Now;

            using var stream = new MemoryStream();
            BinaronConvert.Serialize(dt, stream);
            stream.Seek(0, SeekOrigin.Begin);
            var dest = BinaronConvert.Deserialize <DateTime>(stream, new DeserializerOptions {
                TimeZoneInfo = TimeZoneInfo.Local
            });

            Assert.AreEqual(dt, dest);
        }
Esempio n. 6
0
        public void MemberSetterNullableType1(int?v1, string v2)
        {
            var tc1 = new TestClass1 {
                IntValue = v1, StringValue = v2
            };

            using var stream = new MemoryStream();
            BinaronConvert.Serialize(tc1, stream);
            stream.Seek(0, SeekOrigin.Begin);
            var tc2 = BinaronConvert.Deserialize <TestClass1>(stream);

            Assert.AreEqual(v1, tc2.IntValue);
            Assert.AreEqual(v2, tc2.StringValue);
        }
        public void EnumerableObjectEnumerableTest()
        {
            var multiLevelEnumerables = new InnerMultiLevelEnumerablesTestClass().Yield();

            using var stream = new MemoryStream();
            BinaronConvert.Serialize(multiLevelEnumerables, stream, new SerializerOptions {
                SkipNullValues = true
            });
            stream.Position = 0;
            var response = BinaronConvert.Deserialize <IEnumerable <InnerMultiLevelEnumerablesTestClass> >(stream);
            var inner    = response.First();

            CollectionAssert.AreEqual(Enumerable.Range(0, 2), inner.MultiLevelEnumerables.First());
            CollectionAssert.AreEqual(Enumerable.Range(3, 4), inner.MultiLevelEnumerables.Last());
        }
        public void RootReadOnlyDictionaryTests(Type destType)
        {
            IReadOnlyDictionary <string, string> source = new Dictionary <string, string> {
                { "a key", "a value" }
            };

            using var stream = new MemoryStream();
            BinaronConvert.Serialize(source, stream);
            stream.Seek(0, SeekOrigin.Begin);
            var dest = (IEnumerable)Converter.Deserialize(destType, stream);

            stream.Seek(0, SeekOrigin.Begin);
            var dest2 = (IEnumerable)BinaronConvert.Deserialize(stream);

            Assert.AreEqual(1, dest.Count());
            Assert.AreEqual(1, dest2.Count());
        }
Esempio n. 9
0
        public void ObjectActivatorTest()
        {
            const int testVal = 100;

            var val = new TestClass <int?>();

            using var stream = new MemoryStream();
            BinaronConvert.Serialize(val, stream, new SerializerOptions {
                SkipNullValues = true
            });
            stream.Seek(0, SeekOrigin.Begin);
            var dest = BinaronConvert.Deserialize <TestClass <int?> >(stream, new DeserializerOptions {
                ObjectActivator = new MyObjectActivator(testVal)
            });

            Assert.AreEqual(testVal, dest.Value);
        }
Esempio n. 10
0
        public void ServiceProviderObjectActivatorTest()
        {
            var services = new ServiceCollection();

            services.AddSingleton(new BaseConfig());

            var obj = new
            {
                Score   = 1.0d,
                Numbers = new[] { 3, 2, 1 },
                Dict    = new
                {
                    A = "a",
                    B = "b"
                },
                Ids       = new[] { "Id1", "Id2" },
                SubConfig = new
                {
                    Numbers = new[] { 3, 2, 1 },
                    Dict    = new
                    {
                        A = "a",
                        B = "b"
                    },
                    Ids   = new[] { "Id1", "Id2" },
                    Extra = "extra"
                }
            };

            var serviceProvider = services.BuildServiceProvider();

            using var stream = new MemoryStream();
            BinaronConvert.Serialize(obj, stream, new SerializerOptions {
                SkipNullValues = true
            });
            stream.Position = 0;
            var result = BinaronConvert.Deserialize <TestConfig>(stream, new DeserializerOptions {
                ObjectActivator = new ObjectActivator(serviceProvider)
            });

            Assert.AreEqual(obj.SubConfig.Ids, result.SubConfig.Ids);
        }
Esempio n. 11
0
        public void TestListOfNullables2()
        {
            var collection = new List <int?>()
            {
                1, null, 2
            };

            using (var ms1 = new MemoryStream())
            {
                var so = new SerializerOptions();
                BinaronConvert.Serialize(collection, ms1, so);
                using (var ms2 = new MemoryStream(ms1.ToArray()))
                {
                    var cr2 = BinaronConvert.Deserialize <List <int?> >(ms2);
                    Assert.AreEqual(3, cr2.Count);
                    Assert.AreEqual(1, cr2[0]);
                    Assert.AreEqual(null, cr2[1]);
                    Assert.AreEqual(2, cr2[2]);
                }
            }
        }
Esempio n. 12
0
        public void PopulateObjectTest()
        {
            const int testVal = 100;

            var val = new TestClass <int?> {
                RootValue = DateTime.MinValue
            };

            using var stream = new MemoryStream();
            BinaronConvert.Serialize(val, stream, new SerializerOptions {
                SkipNullValues = true
            });
            stream.Seek(0, SeekOrigin.Begin);
            var dest = new TestClass <int?> {
                Value = 100
            };

            BinaronConvert.Populate(dest, stream);
            Assert.AreEqual(testVal, dest.Value);
            Assert.AreEqual(DateTime.MinValue, dest.RootValue);
        }
Esempio n. 13
0
        public void CustomInvalidNonConcreteTest <TSource>(TSource source, Type destType)
        {
            using var stream = new MemoryStream();
            BinaronConvert.Serialize(source, stream);
            stream.Seek(0, SeekOrigin.Begin);
            Assert.Throws <NotSupportedException>(() =>
            {
                try
                {
                    Converter.Deserialize(destType, stream);
                }
                catch (TypeInitializationException ex)
                {
                    if (ex.InnerException is NotSupportedException)
                    {
                        throw ex.InnerException;
                    }

                    throw;
                }
            });
        }
        public async Task MultiLevelWithCustomFactoryTest()
        {
            var obj = CreatedNestedStructure();

            await using var stream = new MemoryStream();
            BinaronConvert.Serialize(obj, stream, new SerializerOptions {
                SkipNullValues = true, CustomObjectIdentifierProviders = { new NodeObjectIdentifierProvider() }
            });

            stream.Position = 0;
            var result = BinaronConvert.Deserialize <Nested>(stream, new DeserializerOptions {
                CustomObjectFactories = { new NodeObjectFactory() }
            });

            stream.Position = 0;
            dynamic dynamicResult = BinaronConvert.Deserialize(stream);

            Assert.IsNull(result.Annotation1);
            Assert.IsNull(result.Annotation2);

            var derived1 = (DerivedNode)result.Nodes["One"];
            var derived2 = (DerivedNode)result.Nodes["Two"];

            Assert.AreEqual("some attributes", derived1.UserAttributes["attribute1"].SingleOrDefault());
            CollectionAssert.AreEqual(new [] { "Child1", "Child2", "Child3" }, derived1.Values[0].SelectedChildren.Select(element => element.Name));
            CollectionAssert.AreEqual(new [] { "Child4", "Child5" }, derived1.Values[1].SelectedChildren.Select(element => element.Name));

            Assert.AreEqual(true, derived2.IsSelected);
            var value = derived2.Values.SingleOrDefault();

            Assert.NotNull(value);
            Assert.AreEqual(100, value.Count);
            var innerNestedNode = value.InnerNested.Nodes["InnerNode1"];

            Assert.AreEqual("InnerDerivedNode1", innerNestedNode.Name);
            Assert.AreEqual(true, ((DerivedNode)innerNestedNode).IsSelected);

            Assert.NotNull(dynamicResult.Nodes["One"]);
        }