public void GetPathReturnsInjectedPathsDefaultView()
        {
            var expected        = Mock.Of <IObservableCollection <PathDefinition> >();
            var stat            = Mock.Of <IStat>();
            var graphCollection = Mock.Of <IStatGraphCollection>(
                c => c.GetOrAdd(stat).Paths.DefaultView == expected);
            var sut = new DefaultViewNodeRepository(graphCollection);

            var actual = sut.GetPaths(stat);

            Assert.AreSame(actual, expected);
        }
        public void GetNodeReturnsInjectedGetNodesDefaultView()
        {
            var expected        = Mock.Of <ICalculationNode>();
            var stat            = Mock.Of <IStat>();
            var path            = PathDefinition.MainPath;
            var graphCollection = Mock.Of <IStatGraphCollection>(
                c => c.GetOrAdd(stat).GetNode(new NodeSelector(NodeType.Base, path)).DefaultView == expected);
            var sut = new DefaultViewNodeRepository(graphCollection);

            var actual = sut.GetNode(stat, NodeType.Base, path);

            Assert.AreSame(expected, actual);
        }
        public void GetFormNodeCollectionReturnsInjectedGetFormNodeCollectionsDefaultView()
        {
            var expected        = Mock.Of <INodeCollection <Modifier> >();
            var stat            = Mock.Of <IStat>();
            var path            = PathDefinition.MainPath;
            var graphCollection = Mock.Of <IStatGraphCollection>(
                c => c.GetOrAdd(stat).GetFormNodeCollection(new FormNodeSelector(Form.BaseAdd, path)).DefaultView
                == expected);
            var sut = new DefaultViewNodeRepository(graphCollection);

            var actual = sut.GetFormNodeCollection(stat, Form.BaseAdd, path);

            Assert.AreSame(expected, actual);
        }
Example #4
0
        /// <summary>
        /// Creates an <see cref="ICalculator"/>.
        /// </summary>
        public static ICalculator Create()
        {
            var eventBuffer            = new EventBuffer();
            var innerNodeFactory       = new NodeFactory(eventBuffer);
            var nodeFactory            = new TransformableNodeFactory(innerNodeFactory, v => new TransformableValue(v));
            var statRegistryCollection = new NodeCollection <IStat>(eventBuffer);
            var statRegistry           = new StatRegistry(statRegistryCollection);
            var valueTransformer       = new ValueTransformer();

            var(graph, pruner) = CreateCalculationGraph(nodeFactory, statRegistry, valueTransformer, eventBuffer);

            var defaultView   = new DefaultViewNodeRepository(graph);
            var bufferingView = new BufferingViewNodeRepository(graph);

            innerNodeFactory.NodeRepository = defaultView;
            statRegistry.NodeRepository     = bufferingView;

            return(new Calculator(eventBuffer, graph, pruner, bufferingView, statRegistryCollection));
        }
Example #5
0
        /// <summary>
        /// Creates an <see cref="ICalculator"/>.
        /// </summary>
        public static ICalculator CreateCalculator()
        {
            var innerNodeFactory       = new NodeFactory();
            var nodeFactory            = new TransformableNodeFactory(innerNodeFactory, v => new TransformableValue(v));
            var statRegistryCollection = new NodeCollection <IStat>();
            var statRegistry           = new StatRegistry(statRegistryCollection);
            var valueTransformer       = new ValueTransformer();

            var prunableGraph = CreateCalculationGraph(nodeFactory, statRegistry, valueTransformer);

            var defaultView     = new DefaultViewNodeRepository(prunableGraph);
            var suspendableView = new SuspendableViewNodeRepository(prunableGraph);

            innerNodeFactory.NodeRepository = defaultView;
            statRegistry.NodeRepository     = suspendableView;

            var suspender = new SuspendableEventsComposite();

            suspender.Add(new StatGraphCollectionSuspender(prunableGraph));
            suspender.Add(statRegistryCollection);

            return(new Calculator(suspender, prunableGraph, prunableGraph, suspendableView, statRegistryCollection));
        }