public void RemoveUnusedNodesRemovesRemainingModifiers() { var stat = new StatStub(); var modifier = MockModifier(stat); var statGraphMock = new Mock <IStatGraph>(); var ruleSet = Mock.Of <IGraphPruningRuleSet>(r => r.CanStatBeConsideredForRemoval(stat, statGraphMock.Object) && r.CanStatGraphBeRemoved(statGraphMock.Object)); var formNodeSelector = new FormNodeSelector(Form.TotalOverride, PathDefinition.MainPath); var modifierNodeCollection = new StatNodeFactory(new EventBuffer(), null, stat) .Create(formNodeSelector); modifierNodeCollection.Add(MockProvider <ICalculationNode>(), modifier); var formNodeCollection = new Dictionary <FormNodeSelector, IBufferingEventViewProvider <INodeCollection <Modifier> > > { { new FormNodeSelector(Form.TotalOverride, PathDefinition.MainPath), modifierNodeCollection } }; statGraphMock.SetupGet(g => g.FormNodeCollections).Returns(formNodeCollection); var graphMock = MockGraph(stat, statGraphMock.Object); var sut = CreateSut(graphMock.Object, ruleSet); sut.StatAdded(stat); sut.RemoveUnusedNodes(); graphMock.Verify(g => g.RemoveModifier(modifier)); statGraphMock.Verify(g => g.RemoveFormNodeCollection(formNodeSelector)); graphMock.Verify(g => g.Remove(stat)); }
public ModifierNodeCollection Create(FormNodeSelector selector) { var defaultView = new NodeCollection <Modifier>(); var suspendableView = new NodeCollection <Modifier>(); var viewProvider = SuspendableEventViewProvider.Create(defaultView, suspendableView); return(new ModifierNodeCollection(viewProvider)); }
public ModifierNodeCollection Create(FormNodeSelector selector) { var defaultView = new NodeCollection <Modifier>(); var bufferingView = new NodeCollection <Modifier>(_eventBuffer); var viewProvider = BufferingEventViewProvider.Create(defaultView, bufferingView); return(new ModifierNodeCollection(viewProvider)); }
public void AddModifierUsesCorrectPath() { var node = MockNodeProvider(); var source = new ModifierSource.Global(new ModifierSource.Local.Given()); var modifier = MockModifier(source: source); var collection = CreateModifierNodeCollection(); var selector = new FormNodeSelector(modifier.Form, new PathDefinition(source.CanonicalSource)); var factory = Mock.Of <IStatNodeFactory>(f => f.Create(selector) == collection); var sut = CreateSut(factory); sut.AddModifier(node, modifier); CollectionAssert.Contains(collection.DefaultView, (node.DefaultView, modifier)); }