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));
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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));
        }