public void ToNextBlockNumber_ExecuteThisMethodOutOfIndex_CatchOutOfRangeException()
        {
            //Assign
            ViewModel = new BlockConditionsWindowViewModel();
            //Act
            var actual = Assert.Catch <IndexOutOfRangeException>(() => ViewModel.ToNextBlockNumber()).Message;

            //Assert
            StringAssert.Contains("add new BlockCondition", actual);
        }
        public void BlockTypeChangedEvent_Raised_true()
        {
            //Assign
            bool wasRaised = false;

            ViewModel = new BlockConditionsWindowViewModel();
            ViewModel.BlockTypeChangedEvent += (s, e) => wasRaised = true;
            //Act
            ViewModel.OnBlockTypeChanged();
            //Assert
            Assert.That(wasRaised);
        }
        public void ToNextBlockNumber_OutOfIndexThenAddItem_AddedNewItemAndCurrentBlockMoveToNewItem()
        {
            //Assign
            ViewModel = new BlockConditionsWindowViewModel();
            ViewModel._dialogService = new StubDialogServiceAlwaysYes();
            string actualIndex;
            string expectIndex;

            //Act
            ViewModel.ToNextBlockNumber();
            actualIndex = ViewModel.CurrentblockConditionModel.BlockNo;
            expectIndex = Convert.ToString(ViewModel.BlockConditionModelList.Count - 1);
            //Assert
            Assert.AreEqual(expectIndex, actualIndex);
        }
        public void ToNextBlockNumber_OutOfIndexAndNoAddNewBlock_NoNewItemAndKeepCurrentBlock()
        {
            //Assign
            ViewModel = new BlockConditionsWindowViewModel();
            ViewModel._dialogService = new StubDialogServiceAlwaysNo();
            string actualIndex;
            string expectedIndex;

            //Act
            ViewModel.ToNextBlockNumber();
            actualIndex   = ViewModel.CurrentblockConditionModel.BlockNo;
            expectedIndex = Convert.ToString(ViewModel.BlockConditionModelList.Count - 1);
            //Assert
            Assert.AreEqual(expectedIndex, actualIndex);
        }
        public void ToPreviousBlockNumber_OutofIndex_KeepBlockNumber()
        {
            //Assign
            ViewModel = new BlockConditionsWindowViewModel();
            string actual;
            string expected;

            //Act
            ViewModel.CurrentblockConditionModel = ViewModel.BlockConditionModelList[0];
            ViewModel.ToPreviousBlockNumber();
            actual   = ViewModel.CurrentblockConditionModel.BlockNo;
            expected = ViewModel.BlockConditionModelList[0].BlockNo;
            //Assert
            Assert.AreEqual(expected, actual);
        }
        public void ToNextBlockNumber_InIndexOfList_CurrentBlockMoveToNextOneInList()
        {
            //Assign
            ViewModel = new BlockConditionsWindowViewModel();
            string actual;
            string expect;

            //Act
            expect = Convert.ToString(int.Parse(ViewModel.CurrentblockConditionModel.BlockNo) + 1);
            ViewModel.AddNewBlockConditionInList();
            ViewModel.ToNextBlockNumber();
            actual = ViewModel.CurrentblockConditionModel.BlockNo;
            //Assert
            Assert.AreEqual(expect, actual);
        }
        public void ToPreviousBlockNumber_InRangeOfIndex_MoveToPreviousBlockNumber()
        {
            //Assign
            ViewModel = new BlockConditionsWindowViewModel();
            string actual;
            string expected;

            //Act
            ViewModel.AddNewBlockConditionInList();
            ViewModel.CurrentblockConditionModel = ViewModel.BlockConditionModelList[1];
            ViewModel.ToPreviousBlockNumber();
            actual   = ViewModel.CurrentblockConditionModel.BlockNo;
            expected = ViewModel.BlockConditionModelList[0].BlockNo;
            //Assert
            Assert.AreEqual(expected, actual);
        }
        public void ToNextBlockNumber_OutOfIndexThenAddItem_AddedNewItemWhichHasTheSameProgramNo()
        {
            //Assign
            ViewModel = new BlockConditionsWindowViewModel();
            ViewModel._dialogService = new StubDialogServiceAlwaysYes();
            string actual;
            string expect;

            //Act
            ViewModel.CurrentblockConditionModel.ProgramNo = "0010";
            ViewModel.ToNextBlockNumber();
            actual = ViewModel.CurrentblockConditionModel.ProgramNo;
            expect = "0010";
            //Assert
            Assert.AreEqual(expect, actual);
        }
        public void BlockType_ChangeBlockType_ComboboxSelectedItemChangeToCorrectBlockType(string input, string output)
        {
            //Assign
            ViewModel = new BlockConditionsWindowViewModel();
            obj       = ViewModel.CurrentblockConditionModel as BlockConditions;
            string actual;
            string expect;

            //Act
            obj.SortBlockConditions(input);
            ViewModel.BlockType_ChangedByBlockClass(ViewModel.CurrentblockConditionModel);

            actual = obj.BlockType.ToString();
            expect = ViewModel.ComboboxSelectedItem.BlockTypeIDcode.ToString();
            //Assert
            Assert.AreEqual(expect, actual);
        }
        public void Download_ComboboxSelectedItemChangeToCorrectBlockType(string input, string ouput)
        {
            //Assign
            ViewModel = new BlockConditionsWindowViewModel();
            ViewModel._keyenceCommunicationService = new MockKeyenceCommunicationService(input);
            ViewModel._dialogService = new StubDialogServiceAlwaysYes();
            string actual;
            string expect;

            string[] inputStringArray = input.Split(',');
            //Act
            ViewModel.BlockConditionDownload();
            expect = inputStringArray[3];
            //actual = ViewModel.CurrentblockConditionModel.BlockType;
            ViewModel.BlockType_ChangedByBlockClass();
            ViewModel.OnBlockTypeChanged();
            actual = ViewModel.ComboboxSelectedItem.BlockTypeIDcode;

            //Assert
            Assert.AreEqual(expect, actual);
        }