public void IfComponentRemovedThatMakesThisEntityNoLongerMatch_RemovedFromNodes()
        {
            var family = new ComponentMatchingFamily <Node <MockComponentA> >();

            var entityA = new MockEntity <MockComponentA>();

            family.EntityAdded(entityA);
            family.ComponentRemoved(entityA, typeof(MockComponentA));

            Assert.IsEmpty(family.Nodes);
        }
        public void IfComponentRemovedButTheEntityStillMatches_NothingHappens()
        {
            var family = new ComponentMatchingFamily <Node <MockComponentA> >();

            var entityA = new MockEntity <MockComponentA>();

            family.EntityAdded(entityA);
            family.ComponentRemoved(entityA, typeof(MockComponentB));

            Assert.AreEqual(family.Nodes.Count(), 1);
            Assert.AreEqual(family.Nodes.ToList()[0].Component1, entityA.Components[0]);
        }
        public void IfComponentRemovedFromAnEntityNotInTheList_NothingHappens()
        {
            var family = new ComponentMatchingFamily <Node <MockComponentA> >();

            var entity1 = new MockEntity <MockComponentA>();
            var entity2 = new MockEntity <MockComponentB>();

            family.EntityAdded(entity1);
            family.EntityAdded(entity2);

            Assert.AreEqual(family.Nodes.Count(), 1);
            Assert.AreEqual(family.Nodes.ToList()[0].Component1, entity1.Components[0]);

            family.ComponentRemoved(entity2, typeof(MockComponentA));

            Assert.AreEqual(family.Nodes.Count(), 1);
            Assert.AreEqual(family.Nodes.ToList()[0].Component1, entity1.Components[0]);
        }