Exemplo n.º 1
0
        public void DeserializeComplex_AnonymousListObject_NoTypedToEntities()
        {
            var obj = new
            {
                A = 10,
                B = "value",
                C = new
                {
                    D = 10
                }
            };

            var expressionStr = obj.AsExpression().DefaultSerializer.Serialize();
            var deserializer  = new CircularEntityExpressionDeserializer <Entity>();
            var deserialized  = deserializer.Deserialize(expressionStr);

            Assert.StartsWith("<>f", deserialized.Name);
            Assert.Null(deserialized.Value);

            Assert.Equal("A", deserialized["A"].Name);
            Assert.Equal("10", deserialized["A"].Value);

            Assert.Equal("B", deserialized["B"].Name);
            Assert.Equal("value", deserialized["B"].Value);

            Assert.Equal("C", deserialized["C"].Name);
            Assert.Null(deserialized["C"].Value);

            Assert.Equal("D", deserialized["C"]["D"].Name);
            Assert.Equal("10", deserialized["C"]["D"].Value);
        }
Exemplo n.º 2
0
        public void Deserialize_WithCreateEntityCallBack_GenerateRootAndPopulateEntities()
        {
            var strExp     = "(A + B + C + D)";
            var factory    = new CircularEntityFactory <CircularEntity>(name => new CircularEntity(name));
            var serializer = new CircularEntityExpressionDeserializer <CircularEntity>();
            var root       = serializer.Deserialize(strExp, factory);
            var entities   = factory.Entities.Values.ToList();

            Assert.Equal(4, entities.Count);
            Assert.Equal(3, entities[0].Children.Count());
            Assert.Same(root, entities.First());
            Assert.Equal("A", entities[0].Name);
            Assert.Equal("B", entities[0].Children.ElementAt(0).Name);
            Assert.Equal("C", entities[0].Children.ElementAt(1).Name);
            Assert.Equal("D", entities[0].Children.ElementAt(2).Name);

            Assert.Equal("B", entities[1].Name);
            Assert.Empty(entities[1].Children);

            Assert.Equal("C", entities[2].Name);
            Assert.Empty(entities[1].Children);

            Assert.Equal("D", entities[3].Name);
            Assert.Empty(entities[1].Children);
        }
Exemplo n.º 3
0
        public void Deserialize_CreateStartupEntities_SubstractEntities()
        {
            var A = new CircularEntity("A");
            var B = new CircularEntity("B");

            var deserializer = new CircularEntityExpressionDeserializer <CircularEntity>();
            var factory      = new CircularEntityFactory <CircularEntity>();

            factory.Entities.Add("AA", A);
            factory.Entities.Add("BB", B);

            var strExp = "AA + BB";
            var root   = deserializer.Deserialize(strExp, factory);

            Assert.Single(root.Children);
            Assert.Equal("A", root.Name);
            Assert.Equal("B", root.Children.ElementAt(0).Name);

            strExp = "AA - BB + C + D";
            var root2 = deserializer.Deserialize(strExp, factory);

            Assert.Same(root2, root);
            Assert.Equal(2, root2.Children.Count());
            Assert.Equal("A", root2.Name);
            Assert.Equal("C", root2.Children.ElementAt(0).Name);
            Assert.Equal("D", root2.Children.ElementAt(1).Name);
        }
Exemplo n.º 4
0
        public void Deserialize_CreateSolutionByExpression_UseQuotesEntityAndNoQuotesAndNamespaceAndMultilevels_GenerateRoot()
        {
            var deserializer = new CircularEntityExpressionDeserializer <CircularEntity>();
            var solutionMaps = "\"Example Presentation\" + (Example.Layers.Business + (Example.Layers.DAL + Example.Layers.DAL.Interaces)) + (\"Example.Layers.DAL\")";
            var root         = deserializer.Deserialize(solutionMaps);

            Assert.Equal(2, root.Children.Count());
            Assert.Equal("Example Presentation", root.Name);

            var business = root.Children.ElementAt(0);

            Assert.Single(business.Children);
            Assert.Equal("Example.Layers.Business", business.Name);

            var dal = business.Children.ElementAt(0);

            Assert.Single(dal.Children);
            Assert.Equal("Example.Layers.DAL", dal.Name);

            var interfaces = dal.Children.ElementAt(0);

            Assert.Empty(interfaces.Children);
            Assert.Equal("Example.Layers.DAL.Interaces", interfaces.Name);

            var dal2 = root.Children.ElementAt(1);

            Assert.Same(dal2, dal);
        }
Exemplo n.º 5
0
        public void Deserialize_IntegerOutput_Sum10()
        {
            var strExp     = "1 * 2 * 5";
            var serializer = new CircularEntityExpressionDeserializer <int>();
            var result     = serializer.Deserialize(strExp, param => Convert.ToInt32(param));

            Assert.Equal(10, result);
        }
Exemplo n.º 6
0
        private void TestDeserialize(string exIn, string exOut, bool deep = false)
        {
            var serializer  = new CircularEntityExpressionDeserializer <CircularEntity>();
            var root        = serializer.Deserialize(exIn);
            var expectedOut = root.AsExpression(f => f.Children, deep).DefaultSerializer.Serialize();

            Assert.Equal(expectedOut, exOut);
        }
Exemplo n.º 7
0
        public void DeserializationCircular2()
        {
            var strExp     = "NewEntity('my entity name1') + NewEntity('my entity name2')";
            var factory    = new CircularEntityFactoryExtend();
            var serializer = new CircularEntityExpressionDeserializer <CircularEntity>();
            var root       = serializer.Deserialize(strExp, factory);
            var entities   = factory.Entities.Values.ToList();

            System.Console.WriteLine(root.Name);
            System.Console.WriteLine(root.Children[0].Name);
        }
Exemplo n.º 8
0
        public void Deserialize_WithCreateOverride_GenerateRootWithOtherNames()
        {
            var strExp     = "A + B + C + D";
            var serializer = new CircularEntityExpressionDeserializer <CircularEntity>();
            var root       = serializer.Deserialize(strExp, f => new CircularEntity(f.ToLower()));

            Assert.Equal(3, root.Children.Count());
            Assert.Equal("a", root.Name);
            Assert.Equal("b", root.Children.ElementAt(0).Name);
            Assert.Equal("c", root.Children.ElementAt(1).Name);
            Assert.Equal("d", root.Children.ElementAt(2).Name);
        }
Exemplo n.º 9
0
        public void Deserialize_WithDefaultConstructor_GenerateRoot()
        {
            var strExp     = "A + B + C + D";
            var serializer = new CircularEntityExpressionDeserializer <CircularEntity>();
            var root       = serializer.Deserialize(strExp);

            Assert.Equal(3, root.Children.Count());
            Assert.Equal("A", root.Name);
            Assert.Equal("B", root.Children.ElementAt(0).Name);
            Assert.Equal("C", root.Children.ElementAt(1).Name);
            Assert.Equal("D", root.Children.ElementAt(2).Name);
        }
Exemplo n.º 10
0
        public void Deserialize_NullValue_GenerateRootWithfactory()
        {
            var strExp     = "A + null + C + NULL + \"null\"";
            var factory    = new EntityFactoryDeserializerExtend();
            var serializer = new CircularEntityExpressionDeserializer <CircularEntity>();
            var root       = serializer.Deserialize(strExp, factory);
            var entities   = factory.Entities.Values.ToList();

            Assert.Equal(4, root.Children.Count());
            Assert.Null(root.Children.ElementAt(0));
            Assert.Equal("C", root.Children.ElementAt(1).Name);
            Assert.Equal("NULL", root.Children.ElementAt(2).Name);
            Assert.Equal("null", root.Children.ElementAt(3).Name);

            // no entity create directly
            Assert.Equal(4, entities.Count);
        }
Exemplo n.º 11
0
        public void DeserializationCircular1()
        {
            var expressionAsString = "A + B + (C + D)";

            var serializer = new CircularEntityExpressionDeserializer <CircularEntity>();
            var A          = serializer.Deserialize(expressionAsString);

            // A
            System.Console.WriteLine(A.Name);

            // B
            System.Console.WriteLine(A.Children[0].Name);

            // C
            System.Console.WriteLine(A.Children[1].Name);

            // C - children
            System.Console.WriteLine(A.Children[1].Children[0].Name);
        }
Exemplo n.º 12
0
        public void Deserialize_UsingfactoryWithStringParamsInVerbatin_GenerateRootWithfactory()
        {
            var strExp     = "NewEntity('\"quote\"') + NewEntity('\\'quote\\'')";
            var factory    = new EntityFactoryDeserializerExtend();
            var serializer = new CircularEntityExpressionDeserializer <CircularEntity>();
            var root       = serializer.Deserialize(strExp, factory);
            var entities   = factory.Entities.Values.ToList();

            Assert.Single(root.Children);
            Assert.Equal("\"quote\"", root.Name);

            var children1 = root.Children.ElementAt(0);

            Assert.Empty(children1.Children);
            Assert.Equal("'quote'", children1.Name);

            // no entity create directly
            Assert.Empty(entities);
        }
Exemplo n.º 13
0
        public void Deserialize_UsingfactoryInstancesAndStaticWithStringParams_GenerateRootWithfactory()
        {
            var strExp     = "NewEntity('my entity name1') + (NewEntityStatic('my entity name 2') + B - GraphExpression.Tests.Serialization.DeserializationExpressionTest.EntityFactoryDeserializerExtend.NewEntityStatic('B'))";
            var factory    = new EntityFactoryDeserializerExtend();
            var serializer = new CircularEntityExpressionDeserializer <CircularEntity>();
            var root       = serializer.Deserialize(strExp, factory);
            var entities   = factory.Entities.Values.ToList();

            Assert.Single(root.Children);
            Assert.Equal("my entity name1", root.Name);

            var children1 = root.Children.ElementAt(0);

            Assert.Single(children1.Children);
            Assert.Equal("my entity name 2", children1.Name);

            // unique entity create directly
            Assert.Single(entities);
            Assert.Equal("B", entities[0].Name);
        }
Exemplo n.º 14
0
        public void Deserialize_UsingfactoryWithStringParamsInVerbatin_BUG_KNOWN()
        {
            var strExp     = "NewEntity('\\' \\\'')";
            var factory    = new EntityFactoryDeserializerExtend();
            var serializer = new CircularEntityExpressionDeserializer <CircularEntity>();
            var root       = serializer.Deserialize(strExp, factory);
            var entities   = factory.Entities.Values.ToList();

            // DEVERIA SER: ' \'
            Assert.Equal("' '", root.Name);

            // OCORRE EXCEPTION
            try
            {
                strExp = "NewEntity('\\\\'')";
                root   = serializer.Deserialize(strExp, factory);
                Assert.Equal("' ' '", root.Name);
            }
            catch
            {
                Assert.True(true);
            }
        }