public void TestDivideToOutput()
        {
            MainViewModel       main       = new MainViewModel();
            OutputNodeViewModel outputNode = main.NetworkViewModel.Nodes.Items.OfType <OutputNodeViewModel>().First();

            DivisionNodeViewModel divisionNode = new DivisionNodeViewModel();

            main.NetworkViewModel.Nodes.Add(divisionNode);
            main.NetworkViewModel.Connections.Add(main.NetworkViewModel.ConnectionFactory(outputNode.ResultInput, divisionNode.Output));

            Assert.AreEqual(null, outputNode.ResultInput.Value);
            Assert.IsFalse(main.NetworkViewModel.LatestValidation.IsValid);
        }
        public void TestInvalidToValidChange2()
        {
            MainViewModel       main       = new MainViewModel();
            OutputNodeViewModel outputNode = main.NetworkViewModel.Nodes.Items.OfType <OutputNodeViewModel>().First();

            outputNode.ResultInput.ValueChanged.Zip(Observable.Range(0, 100), (val, i) => (value: val, index: i)).Subscribe(t =>
            {
                var validation = main.NetworkViewModel.LatestValidation;

                switch (t.index)
                {
                case 0:
                    Assert.AreEqual(0, t.value);
                    Assert.IsTrue(validation.IsValid);
                    Assert.IsTrue(validation.NetworkIsTraversable);
                    return;

                case 1:
                    Assert.AreEqual(null, t.value);
                    Assert.IsFalse(validation.IsValid);
                    Assert.IsTrue(validation.NetworkIsTraversable);
                    return;

                case 2:
                    Assert.AreEqual(1, t.value);
                    Assert.IsTrue(validation.IsValid);
                    Assert.IsTrue(validation.NetworkIsTraversable);
                    return;

                default: throw new Exception("too many updates");
                }
            });

            DivisionNodeViewModel divisionNode = new DivisionNodeViewModel();

            ((IntegerValueEditorViewModel)divisionNode.Input1.Editor).Value = 1;
            main.NetworkViewModel.Nodes.Add(divisionNode);

            ConstantNodeViewModel constantNode = new ConstantNodeViewModel();

            constantNode.ValueEditor.Value = 1;
            main.NetworkViewModel.Nodes.Add(constantNode);

            var connection1 = main.NetworkViewModel.ConnectionFactory(outputNode.ResultInput, divisionNode.Output);

            main.NetworkViewModel.Connections.Add(connection1);

            var connection2 = main.NetworkViewModel.ConnectionFactory(divisionNode.Input2, constantNode.Output);

            main.NetworkViewModel.Connections.Add(connection2);
        }
Example #3
0
        public void TestLongChain()
        {
            new TestScheduler().With(_ =>
            {
                MainViewModel main             = new MainViewModel();
                OutputNodeViewModel outputNode =
                    main.NetworkViewModel.Nodes.Items.OfType <OutputNodeViewModel>().First();

                ConstantNodeViewModel constantNode = new ConstantNodeViewModel();
                main.NetworkViewModel.Nodes.Add(constantNode);

                ProductNodeViewModel productNode = new ProductNodeViewModel();
                main.NetworkViewModel.Nodes.Add(productNode);

                DivisionNodeViewModel divisionNode = new DivisionNodeViewModel();
                main.NetworkViewModel.Nodes.Add(divisionNode);

                SubtractionNodeViewModel subtractionNode = new SubtractionNodeViewModel();
                main.NetworkViewModel.Nodes.Add(subtractionNode);

                SumNodeViewModel sumNode = new SumNodeViewModel();
                main.NetworkViewModel.Nodes.Add(sumNode);

                main.NetworkViewModel.Connections.Add(
                    main.NetworkViewModel.ConnectionFactory(subtractionNode.Input1, constantNode.Output));
                main.NetworkViewModel.Connections.Add(
                    main.NetworkViewModel.ConnectionFactory(sumNode.Input1, constantNode.Output));
                main.NetworkViewModel.Connections.Add(
                    main.NetworkViewModel.ConnectionFactory(divisionNode.Input1, subtractionNode.Output));
                main.NetworkViewModel.Connections.Add(
                    main.NetworkViewModel.ConnectionFactory(productNode.Input1, divisionNode.Output));
                main.NetworkViewModel.Connections.Add(
                    main.NetworkViewModel.ConnectionFactory(productNode.Input2, sumNode.Output));
                main.NetworkViewModel.Connections.Add(
                    main.NetworkViewModel.ConnectionFactory(outputNode.ResultInput, productNode.Output));

                constantNode.ValueEditor.Value = 10;
                ((IntegerValueEditorViewModel)subtractionNode.Input2.Editor).Value = 2;
                ((IntegerValueEditorViewModel)sumNode.Input2.Editor).Value         = 4;
                ((IntegerValueEditorViewModel)divisionNode.Input2.Editor).Value    = 4;

                //TODO: this is hacky, but test fails without it because the propagation updates are
                //scheduled after the assertion. Ideally, this should be resolved by using TestScheduler
                //but it isn't. However, it seems this is only a problem in tests.
                _.AdvanceByMs(100);

                Assert.AreEqual(28, outputNode.ResultInput.Value);
                Assert.IsTrue(main.NetworkViewModel.LatestValidation.IsValid);
            });
        }
Example #4
0
        //[TestCase]
        public void TestCase1()
        {
            // Arrange
            // Instantiate class under test.
            var viewModel = new DivisionNodeViewModel(_parent, _controlService, _division);

            // TODO: Define argument variables of method under test.

            // TODO: Set up needed infrastructure of class under test.

            // Act
            // TODO: Call method under test.

            // Assert
            // TODO: Assert results of call to method under test.
        }
        public void TestConstantToDivideToOutputObservable()
        {
            MainViewModel       main       = new MainViewModel();
            OutputNodeViewModel outputNode = main.NetworkViewModel.Nodes.Items.OfType <OutputNodeViewModel>().First();

            outputNode.ResultInput.ValueChanged.Zip(Observable.Range(0, 100), (val, i) => (value: val, index: i)).Subscribe(t =>
            {
                var validation = main.NetworkViewModel.LatestValidation;

                switch (t.index)
                {
                case 0:
                    Assert.AreEqual(0, t.value);
                    Assert.IsTrue(validation.IsValid);
                    Assert.IsTrue(validation.NetworkIsTraversable);
                    return;

                case 1:
                    Assert.AreEqual(null, t.value);
                    Assert.IsFalse(validation.IsValid);
                    Assert.IsTrue(validation.NetworkIsTraversable);
                    return;

                case 2:
                    Assert.AreEqual(0, t.value);
                    Assert.IsTrue(validation.IsValid);
                    Assert.IsTrue(validation.NetworkIsTraversable);
                    return;
                }
            });

            DivisionNodeViewModel divisionNode = new DivisionNodeViewModel();

            main.NetworkViewModel.Nodes.Add(divisionNode);
            main.NetworkViewModel.Connections.Add(main.NetworkViewModel.ConnectionFactory(outputNode.ResultInput, divisionNode.Output));

            ConstantNodeViewModel constantNode = new ConstantNodeViewModel();

            constantNode.ValueEditor.Value = 1;
            main.NetworkViewModel.Nodes.Add(constantNode);
            main.NetworkViewModel.Connections.Add(main.NetworkViewModel.ConnectionFactory(divisionNode.Input2, constantNode.Output));
        }
Example #6
0
        public void IsSelected_ShowStandingsHappyPath()
        {
            // Arrange
            // Instantiate class under test.
            var viewModel = new DivisionNodeViewModel(_parent, _controlService, _division);

            // Act
            viewModel.IsSelected = true;

            // Assert
            #region ShowStandings()

            A.CallTo(() => _controlService.GetSeasonStandingsForDivision(
                         (int)WpfGlobals.SelectedSeason, _division.Name)).MustHaveHappenedOnceExactly();

            Assert.IsInstanceOf <ReadOnlyCollection <GetSeasonStandingsForAssociation_Result> >(
                viewModel.Parent.Standings);

            #endregion ShowStandings()
        }
        public void TestLongChain()
        {
            MainViewModel       main       = new MainViewModel();
            OutputNodeViewModel outputNode = main.NetworkViewModel.Nodes.Items.OfType <OutputNodeViewModel>().First();

            ConstantNodeViewModel constantNode = new ConstantNodeViewModel();

            main.NetworkViewModel.Nodes.Add(constantNode);

            ProductNodeViewModel productNode = new ProductNodeViewModel();

            main.NetworkViewModel.Nodes.Add(productNode);

            DivisionNodeViewModel divisionNode = new DivisionNodeViewModel();

            main.NetworkViewModel.Nodes.Add(divisionNode);

            SubtractionNodeViewModel subtractionNode = new SubtractionNodeViewModel();

            main.NetworkViewModel.Nodes.Add(subtractionNode);

            SumNodeViewModel sumNode = new SumNodeViewModel();

            main.NetworkViewModel.Nodes.Add(sumNode);

            main.NetworkViewModel.Connections.Add(main.NetworkViewModel.ConnectionFactory(subtractionNode.Input1, constantNode.Output));
            main.NetworkViewModel.Connections.Add(main.NetworkViewModel.ConnectionFactory(sumNode.Input1, constantNode.Output));
            main.NetworkViewModel.Connections.Add(main.NetworkViewModel.ConnectionFactory(divisionNode.Input1, subtractionNode.Output));
            main.NetworkViewModel.Connections.Add(main.NetworkViewModel.ConnectionFactory(productNode.Input1, divisionNode.Output));
            main.NetworkViewModel.Connections.Add(main.NetworkViewModel.ConnectionFactory(productNode.Input2, sumNode.Output));
            main.NetworkViewModel.Connections.Add(main.NetworkViewModel.ConnectionFactory(outputNode.ResultInput, productNode.Output));

            constantNode.ValueEditor.Value = 10;
            ((IntegerValueEditorViewModel)subtractionNode.Input2.Editor).Value = 2;
            ((IntegerValueEditorViewModel)sumNode.Input2.Editor).Value         = 4;
            ((IntegerValueEditorViewModel)divisionNode.Input2.Editor).Value    = 4;

            Assert.AreEqual(28, outputNode.ResultInput.Value);
            Assert.IsTrue(main.NetworkViewModel.LatestValidation.IsValid);
        }
Example #8
0
        public void IsSelected_ShowStandingsCatchesException()
        {
            // Arrange
            // Instantiate class under test.
            var viewModel = new DivisionNodeViewModel(_parent, _controlService, _division, _sharedService);

            // Set up needed infrastructure of class under test.
            var ex = new Exception();

            A.CallTo(() => _controlService.GetSeasonStandingsForDivision(A <int> .Ignored, A <string> .Ignored)).Throws(ex);

            // Act
            viewModel.IsSelected = true;

            // Assert
            #region ShowStandings()

            Assert.IsNull(viewModel.Parent.Standings);

            A.CallTo(() => _sharedService.ShowExceptionMessage(ex.InnerException, "Exception"))
            .MustHaveHappenedOnceExactly();

            #endregion ShowStandings()
        }