public void VerifyThatTreeIsCorrectlyBuilt()
        {
            var possibleFiniteStateList = new PossibleFiniteStateList(Guid.NewGuid(), this.cache, this.uri);

            this.iteration.PossibleFiniteStateList.Add(possibleFiniteStateList);
            var possibleFiniteState = new PossibleFiniteState(Guid.NewGuid(), this.cache, this.uri);

            possibleFiniteStateList.PossibleState.Add(possibleFiniteState);

            var actualFiniteStateList = new ActualFiniteStateList(Guid.NewGuid(), this.cache, this.uri);

            actualFiniteStateList.PossibleFiniteStateList.Add(possibleFiniteStateList);

            this.iteration.ActualFiniteStateList.Add(actualFiniteStateList);
            var row = new ActualFiniteStateListRowViewModel(actualFiniteStateList, this.session.Object, null);

            Assert.IsEmpty(row.ContainedRows);
            var state = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri);

            state.PossibleState.Add(possibleFiniteState);
            actualFiniteStateList.ActualState.Add(state);

            this.rev.SetValue(actualFiniteStateList, 2);
            CDPMessageBus.Current.SendObjectChangeEvent(actualFiniteStateList, EventKind.Updated);
            var staterow = (ActualFiniteStateRowViewModel)row.ContainedRows.SingleOrDefault();

            Assert.IsNotNull(staterow);
        }
        public void VerifyThatTreeIsCorrectlyUpdated()
        {
            var possibleStateList = new PossibleFiniteStateList(Guid.NewGuid(), this.cache, this.uri);
            var possibleState1    = new PossibleFiniteState(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "1"
            };
            var possibleState2 = new PossibleFiniteState(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "2"
            };
            var possibleState3 = new PossibleFiniteState(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "3"
            };

            possibleStateList.PossibleState.Add(possibleState1);
            possibleStateList.PossibleState.Add(possibleState2);
            possibleStateList.PossibleState.Add(possibleState3);

            this.iteration.PossibleFiniteStateList.Add(possibleStateList);
            var actualStateList = new ActualFiniteStateList(Guid.NewGuid(), this.cache, this.uri);
            var actualState1    = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri)
            {
                PossibleState = new List <PossibleFiniteState> {
                    possibleState1
                }
            };
            var actualState2 = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri)
            {
                PossibleState = new List <PossibleFiniteState> {
                    possibleState2
                }
            };
            var actualState3 = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri)
            {
                PossibleState = new List <PossibleFiniteState> {
                    possibleState3
                }
            };

            actualStateList.ActualState.Add(actualState1);
            actualStateList.ActualState.Add(actualState2);
            actualStateList.ActualState.Add(actualState3);

            actualStateList.PossibleFiniteStateList.Add(possibleStateList);
            this.iteration.ActualFiniteStateList.Add(actualStateList);

            var actualFiniteStateListRow = new ActualFiniteStateListRowViewModel(actualStateList, this.session.Object, null);

            Assert.AreEqual(3, actualFiniteStateListRow.ContainedRows.Count);
            Assert.AreEqual(possibleState1.Name, ((ActualFiniteStateRowViewModel)actualFiniteStateListRow.ContainedRows[0]).Name);
            Assert.AreEqual(possibleState2.Name, ((ActualFiniteStateRowViewModel)actualFiniteStateListRow.ContainedRows[1]).Name);
            Assert.AreEqual(possibleState3.Name, ((ActualFiniteStateRowViewModel)actualFiniteStateListRow.ContainedRows[2]).Name);

            var possibleState4 = new PossibleFiniteState(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "4"
            };
            var actualState4 = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri)
            {
                PossibleState = new List <PossibleFiniteState> {
                    possibleState4
                }
            };

            possibleStateList.PossibleState.Add(possibleState4);
            possibleStateList.PossibleState.Remove(possibleStateList.PossibleState[1]);
            actualStateList.ActualState.Add(actualState4);
            actualStateList.ActualState.Remove(actualStateList.ActualState[1]);

            possibleStateList.RevisionNumber = 1;
            CDPMessageBus.Current.SendObjectChangeEvent(possibleStateList, EventKind.Updated);

            Assert.AreEqual(3, actualFiniteStateListRow.ContainedRows.Count);
            Assert.AreEqual(possibleState1.Name, ((ActualFiniteStateRowViewModel)actualFiniteStateListRow.ContainedRows[0]).Name);
            Assert.AreEqual(possibleState3.Name, ((ActualFiniteStateRowViewModel)actualFiniteStateListRow.ContainedRows[1]).Name);
            Assert.AreEqual(possibleState4.Name, ((ActualFiniteStateRowViewModel)actualFiniteStateListRow.ContainedRows[2]).Name);
        }