public void VerifyUpdateOkCanExecute()
        {
            var andExpressionVm = new AndExpressionDialogViewModel(this.andExpression, this.thingTransaction, this.session.Object, true, ThingDialogKind.Create, this.thingDialogNavigationService.Object, this.clone);

            Assert.IsFalse(andExpressionVm.OkCanExecute);
            andExpressionVm.Term.Add(andExpressionVm.PossibleTerm.First());
            Assert.IsFalse(andExpressionVm.OkCanExecute);
            andExpressionVm.Term.Add(andExpressionVm.PossibleTerm.Last());

            var orExpressionVm = new OrExpressionDialogViewModel(this.orExpression, this.thingTransaction, this.session.Object, true, ThingDialogKind.Create, this.thingDialogNavigationService.Object, this.clone);

            Assert.IsFalse(orExpressionVm.OkCanExecute);
            orExpressionVm.Term.Add(orExpressionVm.PossibleTerm.First());
            Assert.IsFalse(orExpressionVm.OkCanExecute);
            orExpressionVm.Term.Add(orExpressionVm.PossibleTerm.Last());

            var exclusiveOrExpressionVm = new ExclusiveOrExpressionDialogViewModel(this.exclusiveOrExpression, this.thingTransaction, this.session.Object, true, ThingDialogKind.Create, this.thingDialogNavigationService.Object, this.clone);

            Assert.IsFalse(exclusiveOrExpressionVm.OkCanExecute);
            exclusiveOrExpressionVm.Term.Add(exclusiveOrExpressionVm.PossibleTerm.First());
            Assert.IsFalse(exclusiveOrExpressionVm.OkCanExecute);
            exclusiveOrExpressionVm.Term.Add(exclusiveOrExpressionVm.PossibleTerm.Last());

            var notExpressionVm = new NotExpressionDialogViewModel(this.notExpression, this.thingTransaction, this.session.Object, true, ThingDialogKind.Create, this.thingDialogNavigationService.Object, this.clone);

            Assert.IsTrue(notExpressionVm.OkCanExecute);
        }
        public void VerifyPopulatePossibleTerm()
        {
            var andExpressionVm = new AndExpressionDialogViewModel(this.andExpression, this.thingTransaction, this.session.Object, true, ThingDialogKind.Create, this.thingDialogNavigationService.Object, this.clone);

            Assert.AreEqual(5, andExpressionVm.PossibleTerm.Count);
            Assert.IsFalse(andExpressionVm.Term.Any());

            var orExpressionVm = new OrExpressionDialogViewModel(this.orExpression, this.thingTransaction, this.session.Object, true, ThingDialogKind.Create, this.thingDialogNavigationService.Object, this.clone);

            Assert.AreEqual(5, orExpressionVm.PossibleTerm.Count);
            Assert.IsFalse(orExpressionVm.Term.Any());

            var exclusiveOrExpressionVm = new ExclusiveOrExpressionDialogViewModel(this.exclusiveOrExpression, this.thingTransaction, this.session.Object, true, ThingDialogKind.Create, this.thingDialogNavigationService.Object, this.clone);

            Assert.AreEqual(5, exclusiveOrExpressionVm.PossibleTerm.Count);
            Assert.IsFalse(exclusiveOrExpressionVm.Term.Any());

            var notExpressionVm = new NotExpressionDialogViewModel(this.notExpression, this.thingTransaction, this.session.Object, true, ThingDialogKind.Create, this.thingDialogNavigationService.Object, this.clone);

            Assert.AreEqual(5, notExpressionVm.PossibleTerm.Count);
            Assert.IsNotNull(notExpressionVm.SelectedTerm);
        }