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); }
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); }