public void FlattenedSerializable()
        {
            var lazyLoader = new SerializableVirtualEndPointLoaderFake <
                IVirtualObjectEndPoint,
                DomainObject,
                IVirtualObjectEndPointDataManager,
                IVirtualObjectEndPointLoadState>();
            var dataManagerFactory = new SerializableVirtualObjectEndPointDataManagerFactoryFake();

            var state = new IncompleteVirtualObjectEndPointLoadState(lazyLoader, dataManagerFactory);

            AddOriginalOppositeEndPoint(state, new SerializableRealObjectEndPointFake(null, _relatedObject));

            var result = FlattenedSerializer.SerializeAndDeserialize(state);

            Assert.That(result, Is.Not.Null);
            Assert.That(result.OriginalOppositeEndPoints, Is.Not.Null);
            Assert.That(result.OriginalOppositeEndPoints, Is.Not.Empty);
            Assert.That(result.EndPointLoader, Is.Not.Null);
            Assert.That(result.DataManagerFactory, Is.Not.Null);
        }
        public override void SetUp()
        {
            base.SetUp();

            _endPointID = RelationEndPointID.Create(DomainObjectIDs.Order1, typeof(Order), "OrderTicket");
            _virtualObjectEndPointMock = MockRepository.GenerateStrictMock <IVirtualObjectEndPoint> ();

            _endPointLoaderMock     = MockRepository.GenerateStrictMock <IncompleteVirtualObjectEndPointLoadState.IEndPointLoader> ();
            _dataManagerFactoryStub = MockRepository.GenerateStub <IVirtualObjectEndPointDataManagerFactory> ();

            var dataManagerStub = MockRepository.GenerateStub <IVirtualObjectEndPointDataManager> ();

            dataManagerStub.Stub(stub => stub.HasDataChanged()).Return(false);
            _loadState = new IncompleteVirtualObjectEndPointLoadState(_endPointLoaderMock, _dataManagerFactoryStub);

            _relatedObject       = DomainObjectMother.CreateFakeObject <OrderTicket> ();
            _relatedEndPointStub = MockRepository.GenerateStub <IRealObjectEndPoint> ();
            _relatedEndPointStub.Stub(stub => stub.ObjectID).Return(_relatedObject.ID);

            _relatedObject2       = DomainObjectMother.CreateFakeObject <OrderTicket> ();
            _relatedEndPointStub2 = MockRepository.GenerateStub <IRealObjectEndPoint> ();
            _relatedEndPointStub2.Stub(stub => stub.ObjectID).Return(_relatedObject2.ID);
        }
        private void AddOriginalOppositeEndPoint(IncompleteVirtualObjectEndPointLoadState loadState, IRealObjectEndPoint oppositeEndPoint)
        {
            var dictionary = (Dictionary <ObjectID, IRealObjectEndPoint>)PrivateInvoke.GetNonPublicField(loadState, "_originalOppositeEndPoints");

            dictionary.Add(oppositeEndPoint.ObjectID, oppositeEndPoint);
        }