Beispiel #1
0
        public void MoveNext_WithMultipleProperties_GetsPropertyPathSeparatorFromCurrentClass()
        {
            var firstClassStub = CreateClassStub();

            var secondClassStub = MockRepository.GenerateStub <IBusinessObjectClass>();

            secondClassStub.Stub(_ => _.BusinessObjectProvider).Return(MockRepository.GenerateStub <IBusinessObjectProvider>());
            secondClassStub.BusinessObjectProvider.Stub(_ => _.GetPropertyPathSeparator()).Return('|');

            var thirdClassStub = CreateClassStub();

            var firstPropertyStub  = CreateReferencePropertyStub(firstClassStub, "FirstProperty", secondClassStub);
            var secondPropertyStub = CreateReferencePropertyStub(secondClassStub, "SecondProperty", thirdClassStub);
            var thirdPropertyStub  = CreatePropertyStub(thirdClassStub, "ThirdProperty");

            var enumerator = new TestableBusinessObjectPropertyPathPropertyEnumeratorBase("FirstProperty:SecondProperty|ThirdProperty");

            Assert.That(enumerator.MoveNext(firstClassStub), Is.True);
            Assert.That(enumerator.Current, Is.SameAs(firstPropertyStub));

            Assert.That(enumerator.MoveNext(secondClassStub), Is.True);
            Assert.That(enumerator.Current, Is.SameAs(secondPropertyStub));
            Assert.That(enumerator.HasNext, Is.True);

            Assert.That(enumerator.MoveNext(thirdClassStub), Is.True);
            Assert.That(enumerator.Current, Is.SameAs(thirdPropertyStub));
            Assert.That(enumerator.HasNext, Is.False);

            Assert.That(enumerator.MoveNext(MockRepository.GenerateStub <IBusinessObjectClass>()), Is.False);
            Assert.That(() => enumerator.Current, Throws.InvalidOperationException.With.Message.EqualTo("Enumeration already finished."));
            Assert.That(enumerator.HasNext, Is.False);
        }
Beispiel #2
0
        public void MoveNext_OnceWithSingleProperty_ReturnsTrue_CurrentIsSetToProperty_HasNextIsFalse()
        {
            var classStub    = CreateClassStub();
            var propertyStub = CreatePropertyStub(classStub, "FirstProperty");

            var enumerator = new TestableBusinessObjectPropertyPathPropertyEnumeratorBase("FirstProperty");

            Assert.That(enumerator.MoveNext(classStub), Is.True);
            Assert.That(enumerator.Current, Is.SameAs(propertyStub));
            Assert.That(enumerator.HasNext, Is.False);
        }
Beispiel #3
0
        public void MoveNext_NeverWithSingleProperty_CurrentThrows_HasNextIsTrue()
        {
            var classStub = CreateClassStub();

            CreatePropertyStub(classStub, "FirstProperty");

            var enumerator = new TestableBusinessObjectPropertyPathPropertyEnumeratorBase("FirstProperty");

            Assert.That(() => enumerator.Current, Throws.InvalidOperationException.With.Message.EqualTo("Enumeration has not started. Call MoveNext."));
            Assert.That(enumerator.HasNext, Is.True);
        }
Beispiel #4
0
        public void MoveNext_TwiceWithSingleProperty_ReturnsFalse_CurrentThrows_HasNextIsFalse()
        {
            var classStub = CreateClassStub();

            CreatePropertyStub(classStub, "FirstProperty");

            var enumerator = new TestableBusinessObjectPropertyPathPropertyEnumeratorBase("FirstProperty");

            Assert.That(enumerator.MoveNext(classStub), Is.True);

            Assert.That(enumerator.MoveNext(MockRepository.GenerateStub <IBusinessObjectClass>()), Is.False);
            Assert.That(() => enumerator.Current, Throws.InvalidOperationException.With.Message.EqualTo("Enumeration already finished."));
            Assert.That(enumerator.HasNext, Is.False);
        }
Beispiel #5
0
        public void MoveNext_WithMultipleProperties_ReturnsFalseAfterLastProperty_CurrentThrows_HasNextIsFalse()
        {
            var firstClassStub     = CreateClassStub();
            var secondClassStub    = CreateClassStub();
            var firstPropertyStub  = CreateReferencePropertyStub(firstClassStub, "FirstProperty", secondClassStub);
            var secondPropertyStub = CreatePropertyStub(secondClassStub, "SecondProperty");

            var enumerator = new TestableBusinessObjectPropertyPathPropertyEnumeratorBase("FirstProperty:SecondProperty");

            Assert.That(enumerator.MoveNext(firstClassStub), Is.True);
            Assert.That(enumerator.Current, Is.SameAs(firstPropertyStub));
            Assert.That(enumerator.HasNext, Is.True);

            Assert.That(enumerator.MoveNext(secondClassStub), Is.True);
            Assert.That(enumerator.Current, Is.SameAs(secondPropertyStub));
            Assert.That(enumerator.HasNext, Is.False);

            Assert.That(enumerator.MoveNext(MockRepository.GenerateStub <IBusinessObjectClass>()), Is.False);
            Assert.That(() => enumerator.Current, Throws.InvalidOperationException.With.Message.EqualTo("Enumeration already finished."));
            Assert.That(enumerator.HasNext, Is.False);
        }
Beispiel #6
0
        public void MoveNext_WithMissingProperty_CallsTemplateMehtod_SetsCurrentNull_HasNextIsTrue()
        {
            var firstClassStub  = CreateClassStub();
            var secondClassStub = CreateClassStub();

            secondClassStub.Stub(_ => _.Identifier).Return("SecondClass");

            var firstPropertyStub = CreateReferencePropertyStub(firstClassStub, "FirstProperty", secondClassStub);

            var enumerator = new TestableBusinessObjectPropertyPathPropertyEnumeratorBase("FirstProperty:Missing:ThirdProperty");

            Assert.That(enumerator.MoveNext(firstClassStub), Is.True);
            Assert.That(enumerator.Current, Is.SameAs(firstPropertyStub));
            Assert.That(enumerator.HasNext, Is.True);

            Assert.That(
                () => enumerator.MoveNext(secondClassStub),
                Throws.Exception.With.Message.EqualTo("HandlePropertyNotFound, class: SecondClass, property: Missing"));
            Assert.That(enumerator.Current, Is.Null);
            Assert.That(enumerator.HasNext, Is.True);
        }