コード例 #1
0
        public void SetUp()
        {
            _mockRepository    = new MockRepository();
            _parentBuilderMock = _mockRepository.StrictMock <ClassContextBuilder> (typeof(object));
            _origin            = MixinContextOriginObjectMother.Create();

            _mixinBuilder = new MixinContextBuilder(_parentBuilderMock, typeof(BT2Mixin1), _origin);
        }
コード例 #2
0
        public void AddMixin_NonGeneric()
        {
            var origin = MixinContextOriginObjectMother.Create();
            MixinContextBuilder mixinBuilder = _classBuilder.AddMixin(typeof(BT2Mixin1), origin);

            Assert.That(mixinBuilder.MixinType, Is.SameAs(typeof(BT2Mixin1)));
            Assert.That(mixinBuilder.Parent, Is.SameAs(_classBuilder));
            Assert.That(mixinBuilder.Origin, Is.SameAs(origin));
            Assert.That(_classBuilder.MixinContextBuilders, Has.Member(mixinBuilder));
        }
コード例 #3
0
        public void EnsureMixin_Generic()
        {
            var origin = MixinContextOriginObjectMother.Create();

            _classBuilderMock.Expect(mock => mock.EnsureMixin <BT2Mixin1> (origin)).CallOriginalMethod(OriginalCallOptions.CreateExpectation);
            _classBuilderMock.Expect(mock => mock.EnsureMixin(typeof(BT2Mixin1), origin)).Return(_mixinBuilderMock);

            _mockRepository.Replay(_classBuilderMock);
            Assert.That(_classBuilderMock.EnsureMixin <BT2Mixin1> (origin), Is.SameAs(_mixinBuilderMock));
            _mockRepository.Verify(_classBuilderMock);
        }
コード例 #4
0
        public void GetHashCode_Equal()
        {
            var c1a = new MixinContext(
                MixinKind.Extending,
                typeof(BT6Mixin1),
                MemberVisibility.Private,
                new[] { typeof(BT6Mixin2), typeof(BT6Mixin3 <>) },
                MixinContextOriginObjectMother.Create());
            var c1b = new MixinContext(
                MixinKind.Extending,
                typeof(BT6Mixin1),
                MemberVisibility.Private,
                new[] { typeof(BT6Mixin2), typeof(BT6Mixin3 <>) },
                MixinContextOriginObjectMother.Create());
            var c1WithDifferentDependencyOrder = new MixinContext(
                MixinKind.Extending,
                typeof(BT6Mixin1),
                MemberVisibility.Private,
                new[] { typeof(BT6Mixin3 <>), typeof(BT6Mixin2) },
                MixinContextOriginObjectMother.Create());
            var c1WithDifferentOrigin = new MixinContext(
                MixinKind.Extending,
                typeof(BT6Mixin1),
                MemberVisibility.Private,
                new[] { typeof(BT6Mixin2), typeof(BT6Mixin3 <>) },
                MixinContextOriginObjectMother.Create(kind: "some different kind"));

            var c2a = new MixinContext(
                MixinKind.Extending, typeof(BT6Mixin1), MemberVisibility.Private, Enumerable.Empty <Type>(), MixinContextOriginObjectMother.Create());
            var c2b = new MixinContext(
                MixinKind.Extending, typeof(BT6Mixin1), MemberVisibility.Private, Enumerable.Empty <Type>(), MixinContextOriginObjectMother.Create());

            var c3a = new MixinContext(
                MixinKind.Used,
                typeof(BT6Mixin1),
                MemberVisibility.Public,
                new[] { typeof(BT6Mixin3 <>), typeof(BT6Mixin2) },
                MixinContextOriginObjectMother.Create());
            var c3b = new MixinContext(
                MixinKind.Used,
                typeof(BT6Mixin1),
                MemberVisibility.Public,
                new[] { typeof(BT6Mixin3 <>), typeof(BT6Mixin2) },
                MixinContextOriginObjectMother.Create());

            Assert.That(c1b.GetHashCode(), Is.EqualTo(c1a.GetHashCode()));
            Assert.That(c1WithDifferentDependencyOrder.GetHashCode(), Is.EqualTo(c1a.GetHashCode()));

            Assert.That(c1WithDifferentOrigin.Origin, Is.Not.EqualTo(c1a.Origin));
            Assert.That(c1WithDifferentOrigin.GetHashCode(), Is.EqualTo(c1a.GetHashCode()));

            Assert.That(c2b.GetHashCode(), Is.EqualTo(c2a.GetHashCode()));
            Assert.That(c3b.GetHashCode(), Is.EqualTo(c3a.GetHashCode()));
        }
コード例 #5
0
        public void AddMixins_Generic3()
        {
            var origin = MixinContextOriginObjectMother.Create();

            _classBuilderMock.Expect(mock => mock.AddMixins <BT2Mixin1, BT3Mixin1, BT3Mixin2> (origin))
            .CallOriginalMethod(OriginalCallOptions.CreateExpectation);
            _classBuilderMock.Expect(mock => mock.AddMixins(origin, typeof(BT2Mixin1), typeof(BT3Mixin1), typeof(BT3Mixin2))).Return(_classBuilderMock);

            _mockRepository.Replay(_classBuilderMock);
            Assert.That(_classBuilderMock.AddMixins <BT2Mixin1, BT3Mixin1, BT3Mixin2> (origin), Is.SameAs(_classBuilderMock));
            _mockRepository.Verify(_classBuilderMock);
        }
コード例 #6
0
        public void Equals_False()
        {
            var origin = MixinContextOriginObjectMother.Create();
            var c1     = new MixinContext(
                MixinKind.Extending, typeof(BT6Mixin1), MemberVisibility.Private, new[] { typeof(BT6Mixin2), typeof(BT6Mixin3 <>) }, origin);
            var c2 = new MixinContext(MixinKind.Extending, typeof(BT6Mixin1), MemberVisibility.Private, new[] { typeof(BT6Mixin3 <>) }, origin);
            var c3 = new MixinContext(MixinKind.Extending, typeof(BT6Mixin2), MemberVisibility.Private, new[] { typeof(BT6Mixin3 <>) }, origin);
            var c4 = new MixinContext(MixinKind.Used, typeof(BT6Mixin2), MemberVisibility.Private, new[] { typeof(BT6Mixin3 <>) }, origin);
            var c5 = new MixinContext(MixinKind.Used, typeof(BT6Mixin2), MemberVisibility.Public, new[] { typeof(BT6Mixin3 <>) }, origin);

            Assert.That(c2, Is.Not.EqualTo(c1));
            Assert.That(c3, Is.Not.EqualTo(c2));
            Assert.That(c4, Is.Not.EqualTo(c3));
            Assert.That(c5, Is.Not.EqualTo(c4));
        }
コード例 #7
0
        public void AddOrderedMixins_Generic2()
        {
            var origin = MixinContextOriginObjectMother.Create();

            Assert.That(_classBuilder.AddOrderedMixins <BT2Mixin1, BT3Mixin1> (origin), Is.SameAs(_classBuilder));

            var mixinBuilders = new List <MixinContextBuilder> (_classBuilder.MixinContextBuilders);

            Assert.That(mixinBuilders.Count, Is.EqualTo(2));
            Assert.That(mixinBuilders[0].MixinType, Is.SameAs(typeof(BT2Mixin1)));
            Assert.That(mixinBuilders[0].Origin, Is.SameAs(origin));
            Assert.That(mixinBuilders[0].Dependencies, Is.Empty);
            Assert.That(mixinBuilders[1].MixinType, Is.SameAs(typeof(BT3Mixin1)));
            Assert.That(mixinBuilders[1].Origin, Is.SameAs(origin));
            Assert.That(mixinBuilders[1].Dependencies, Is.EquivalentTo(new object[] { typeof(BT2Mixin1) }));
        }
コード例 #8
0
        public void AddOrigin()
        {
            var mixinContextOrigin = MixinContextOriginObjectMother.Create(assembly: GetType().Assembly);

            _serializer.AddOrigin(mixinContextOrigin);

            // Check that the chain of serializers correctly sets up the FlatMixinContextOriginSerializer
            var serializedMixinOrigin         = (object[])_serializer.Values[4];
            var serializedMixinOriginAssembly = serializedMixinOrigin[1];

            Assert.That(serializedMixinOriginAssembly, Is.EqualTo(GetType().Assembly.FullName));

            var deserializer = new FlatMixinContextDeserializer(_serializer.Values);

            Assert.That(deserializer.GetOrigin(), Is.EqualTo(mixinContextOrigin));
        }
コード例 #9
0
        public void EnsureMixin_NonGeneric()
        {
            var origin = MixinContextOriginObjectMother.Create();

            MixinContextBuilder builder = _classBuilder.EnsureMixin(typeof(BT2Mixin1), origin);

            Assert.That(builder.MixinType, Is.EqualTo(typeof(BT2Mixin1)));
            Assert.That(builder.Origin, Is.EqualTo(origin));
            Type[] mixinTypes = GetMixinTypes();
            Assert.That(mixinTypes, Is.EquivalentTo(new object[] { typeof(BT2Mixin1) }));

            var otherOrigin = MixinContextOriginObjectMother.Create("some other kind");

            Assert.That(_classBuilder.EnsureMixin(typeof(BT2Mixin1), otherOrigin), Is.SameAs(builder));
            Type[] mixinTypesAfterSecondEnsureMixin = GetMixinTypes();
            Assert.That(mixinTypesAfterSecondEnsureMixin, Is.EquivalentTo(new object[] { typeof(BT2Mixin1) }));
            Assert.That(builder.Origin, Is.EqualTo(origin));
        }
コード例 #10
0
 public void SetUp()
 {
     _mockRepository    = new MockRepository();
     _parentBuilderMock = _mockRepository.StrictMock <MixinConfigurationBuilder> ((MixinConfiguration)null);
     _classBuilder      = new ClassContextBuilder(_parentBuilderMock, typeof(BaseType2));
     _classBuilderMock  = _mockRepository.StrictMock <ClassContextBuilder> (_parentBuilderMock, typeof(BaseType2));
     _mixinBuilderMock  = _mockRepository.StrictMock <MixinContextBuilder> (_classBuilderMock, typeof(BT2Mixin1), MixinContextOriginObjectMother.Create());
 }
コード例 #11
0
        public void ParentMembers()
        {
            _mockRepository.BackToRecordAll();

            var suppressionRuleStub = MockRepository.GenerateStub <IMixinSuppressionRule> ();
            var r1     = new ClassContextBuilder(new MixinConfigurationBuilder(null), typeof(object));
            var r2     = new MixinConfiguration();
            var r3     = _mockRepository.StrictMock <IDisposable> ();
            var r4     = new MixinContextBuilder(r1, typeof(BT1Mixin1), _origin);
            var r5     = ClassContextObjectMother.Create(typeof(object));
            var origin = MixinContextOriginObjectMother.Create();

            IEnumerable <ClassContext> inheritedContexts = new ClassContext[0];

            var expectedInferredOrigin = MixinContextOrigin.CreateForMethod(MethodBase.GetCurrentMethod());

            using (_mockRepository.Ordered())
            {
                _parentBuilderMock.Expect(mock => mock.Clear()).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddMixin(typeof(object), origin)).Return(r4);
                _parentBuilderMock.Expect(mock => mock.AddMixin(typeof(object), expectedInferredOrigin)).Return(r4);
                _parentBuilderMock.Expect(mock => mock.AddMixin <string> (origin)).Return(r4);
                _parentBuilderMock.Expect(mock => mock.AddMixin <string> (expectedInferredOrigin)).Return(r4);
                _parentBuilderMock.Expect(mock => mock.AddMixins(origin, typeof(BT1Mixin1), typeof(BT1Mixin2))).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddMixins(expectedInferredOrigin, typeof(BT1Mixin1), typeof(BT1Mixin2))).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddMixins <BT1Mixin1, BT1Mixin2> (origin)).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddMixins <BT1Mixin1, BT1Mixin2> (expectedInferredOrigin)).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddMixins <BT1Mixin1, BT1Mixin2, BT3Mixin1> (origin)).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddMixins <BT1Mixin1, BT1Mixin2, BT3Mixin1> (expectedInferredOrigin)).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddOrderedMixins(origin, typeof(BT1Mixin1), typeof(BT1Mixin2))).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddOrderedMixins(expectedInferredOrigin, typeof(BT1Mixin1), typeof(BT1Mixin2))).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddOrderedMixins <BT1Mixin1, BT1Mixin2> (origin)).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddOrderedMixins <BT1Mixin1, BT1Mixin2> (expectedInferredOrigin)).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddOrderedMixins <BT1Mixin1, BT1Mixin2, BT3Mixin1> (origin)).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddOrderedMixins <BT1Mixin1, BT1Mixin2, BT3Mixin1> (expectedInferredOrigin)).Return(r1);
                _parentBuilderMock.Expect(mock => mock.EnsureMixin(typeof(object), origin)).Return(r4);
                _parentBuilderMock.Expect(mock => mock.EnsureMixin(typeof(object), expectedInferredOrigin)).Return(r4);
                _parentBuilderMock.Expect(mock => mock.EnsureMixin <string> (origin)).Return(r4);
                _parentBuilderMock.Expect(mock => mock.EnsureMixin <string> (expectedInferredOrigin)).Return(r4);
                _parentBuilderMock.Expect(mock => mock.EnsureMixins(origin, typeof(BT1Mixin1), typeof(BT1Mixin2))).Return(r1);
                _parentBuilderMock.Expect(mock => mock.EnsureMixins(expectedInferredOrigin, typeof(BT1Mixin1), typeof(BT1Mixin2))).Return(r1);
                _parentBuilderMock.Expect(mock => mock.EnsureMixins <BT1Mixin1, BT1Mixin2> (origin)).Return(r1);
                _parentBuilderMock.Expect(mock => mock.EnsureMixins <BT1Mixin1, BT1Mixin2> (expectedInferredOrigin)).Return(r1);
                _parentBuilderMock.Expect(mock => mock.EnsureMixins <BT1Mixin1, BT1Mixin2, BT3Mixin1> (origin)).Return(r1);
                _parentBuilderMock.Expect(mock => mock.EnsureMixins <BT1Mixin1, BT1Mixin2, BT3Mixin1> (expectedInferredOrigin)).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddComposedInterface(typeof(IBT6Mixin1))).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddComposedInterface <IBT6Mixin1>()).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddComposedInterfaces(typeof(IBT6Mixin1), typeof(IBT6Mixin2))).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddComposedInterfaces <IBT6Mixin1, IBT6Mixin2> ()).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddComposedInterfaces <IBT6Mixin1, IBT6Mixin2, IBT6Mixin3> ()).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddComposedInterfaces <IBT6Mixin1, IBT6Mixin2, IBT6Mixin3> ()).Return(r1);
                _parentBuilderMock.Expect(mock => mock.SuppressMixin(suppressionRuleStub)).Return(r1);
                _parentBuilderMock.Expect(mock => mock.SuppressMixin(typeof(object))).Return(r1);
                _parentBuilderMock.Expect(mock => mock.SuppressMixin <string> ()).Return(r1);
                _parentBuilderMock.Expect(mock => mock.SuppressMixins(typeof(BT1Mixin1), typeof(BT1Mixin2))).Return(r1);
                _parentBuilderMock.Expect(mock => mock.SuppressMixins <BT1Mixin1, BT1Mixin2> ()).Return(r1);
                _parentBuilderMock.Expect(mock => mock.SuppressMixins <BT1Mixin1, BT1Mixin2, BT3Mixin1> ()).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddMixinDependency(typeof(BT1Mixin1), typeof(BT1Mixin2))).Return(r1);
                _parentBuilderMock.Expect(mock => mock.AddMixinDependency <BT1Mixin1, BT1Mixin2> ()).Return(r1);
                _parentBuilderMock.Expect(mock => mock.BuildClassContext(inheritedContexts)).Return(r5);
                _parentBuilderMock.Expect(mock => mock.BuildClassContext()).Return(r5);

                _parentBuilderMock.Expect(mock => mock.ForClass <object> ()).Return(r1);
                _parentBuilderMock.Expect(mock => mock.ForClass <string> ()).Return(r1);
                _parentBuilderMock.Expect(mock => mock.BuildConfiguration()).Return(r2);
                _parentBuilderMock.Expect(mock => mock.EnterScope()).Return(r3);
            }

            _mockRepository.ReplayAll();

            Assert.That(_mixinBuilder.Clear(), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddMixin(typeof(object), origin), Is.SameAs(r4));
            Assert.That(_mixinBuilder.AddMixin(typeof(object)), Is.SameAs(r4));
            Assert.That(_mixinBuilder.AddMixin <string> (origin), Is.SameAs(r4));
            Assert.That(_mixinBuilder.AddMixin <string> (), Is.SameAs(r4));
            Assert.That(_mixinBuilder.AddMixins(origin, typeof(BT1Mixin1), typeof(BT1Mixin2)), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddMixins(typeof(BT1Mixin1), typeof(BT1Mixin2)), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddMixins <BT1Mixin1, BT1Mixin2> (origin), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddMixins <BT1Mixin1, BT1Mixin2> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddMixins <BT1Mixin1, BT1Mixin2, BT3Mixin1> (origin), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddMixins <BT1Mixin1, BT1Mixin2, BT3Mixin1> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddOrderedMixins(origin, typeof(BT1Mixin1), typeof(BT1Mixin2)), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddOrderedMixins(typeof(BT1Mixin1), typeof(BT1Mixin2)), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddOrderedMixins <BT1Mixin1, BT1Mixin2> (origin), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddOrderedMixins <BT1Mixin1, BT1Mixin2> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddOrderedMixins <BT1Mixin1, BT1Mixin2, BT3Mixin1> (origin), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddOrderedMixins <BT1Mixin1, BT1Mixin2, BT3Mixin1> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.EnsureMixin(typeof(object), origin), Is.SameAs(r4));
            Assert.That(_mixinBuilder.EnsureMixin(typeof(object)), Is.SameAs(r4));
            Assert.That(_mixinBuilder.EnsureMixin <string> (origin), Is.SameAs(r4));
            Assert.That(_mixinBuilder.EnsureMixin <string> (), Is.SameAs(r4));
            Assert.That(_mixinBuilder.EnsureMixins(origin, typeof(BT1Mixin1), typeof(BT1Mixin2)), Is.SameAs(r1));
            Assert.That(_mixinBuilder.EnsureMixins(typeof(BT1Mixin1), typeof(BT1Mixin2)), Is.SameAs(r1));
            Assert.That(_mixinBuilder.EnsureMixins <BT1Mixin1, BT1Mixin2> (origin), Is.SameAs(r1));
            Assert.That(_mixinBuilder.EnsureMixins <BT1Mixin1, BT1Mixin2> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.EnsureMixins <BT1Mixin1, BT1Mixin2, BT3Mixin1> (origin), Is.SameAs(r1));
            Assert.That(_mixinBuilder.EnsureMixins <BT1Mixin1, BT1Mixin2, BT3Mixin1> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddComposedInterface(typeof(IBT6Mixin1)), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddComposedInterface <IBT6Mixin1> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddComposedInterfaces(typeof(IBT6Mixin1), typeof(IBT6Mixin2)), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddComposedInterfaces <IBT6Mixin1, IBT6Mixin2> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddComposedInterfaces <IBT6Mixin1, IBT6Mixin2, IBT6Mixin3> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddComposedInterfaces <IBT6Mixin1, IBT6Mixin2, IBT6Mixin3> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.SuppressMixin(suppressionRuleStub), Is.SameAs(r1));
            Assert.That(_mixinBuilder.SuppressMixin(typeof(object)), Is.SameAs(r1));
            Assert.That(_mixinBuilder.SuppressMixin <string> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.SuppressMixins(typeof(BT1Mixin1), typeof(BT1Mixin2)), Is.SameAs(r1));
            Assert.That(_mixinBuilder.SuppressMixins <BT1Mixin1, BT1Mixin2> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.SuppressMixins <BT1Mixin1, BT1Mixin2, BT3Mixin1> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddMixinDependency(typeof(BT1Mixin1), typeof(BT1Mixin2)), Is.SameAs(r1));
            Assert.That(_mixinBuilder.AddMixinDependency <BT1Mixin1, BT1Mixin2> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.BuildClassContext(inheritedContexts), Is.SameAs(r5));
            Assert.That(_mixinBuilder.BuildClassContext(), Is.SameAs(r5));

            Assert.That(_mixinBuilder.ForClass <object> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.ForClass <string> (), Is.SameAs(r1));
            Assert.That(_mixinBuilder.BuildConfiguration(), Is.SameAs(r2));
            Assert.That(_mixinBuilder.EnterScope(), Is.SameAs(r3));

            _mockRepository.VerifyAll();
        }
        public void AddMixins()
        {
            var mixinContext1 = MixinContextObjectMother.Create(mixinType: typeof(string), origin: MixinContextOriginObjectMother.Create(assembly: GetType().Assembly));
            var mixinContext2 = MixinContextObjectMother.Create(mixinType: typeof(object));

            _serializer.AddMixins(new[] { mixinContext1, mixinContext2 });

            // Check that the chain of serializers correctly sets up the AttributeMixinContextOriginSerializer
            var serializedMixinContexts       = ((object[])_serializer.Values[1]);
            var serializedMixinContext1       = (object[])serializedMixinContexts[1];
            var serializedMixinOrigin         = (object[])serializedMixinContext1[4];
            var serializedMixinOriginAssembly = serializedMixinOrigin[1];

            Assert.That(serializedMixinOriginAssembly, Is.EqualTo(GetType().Assembly.FullName));

            var deserializer = new AttributeClassContextDeserializer(_serializer.Values);

            Assert.That(deserializer.GetMixins().ToArray(), Is.EqualTo(new[] { mixinContext1, mixinContext2 }));
        }
コード例 #13
0
 public void SetUp()
 {
     _mixinContextOrigin = MixinContextOriginObjectMother.Create();
 }