Exemplo n.º 1
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.º 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);
        }