public void NewObject()
        {
            ClassDerivedFromSimpleDomainObject instance = ClassDerivedFromSimpleDomainObject.NewObject();

            Assert.That(instance, Is.Not.Null);
            Assert.That(instance.IntProperty, Is.EqualTo(0));
            instance.IntProperty = 5;
            Assert.That(instance.IntProperty, Is.EqualTo(5));
        }
        public void SimpleDomainObject_SupportsGetObjectViaHandle_AndObjectID()
        {
            var instance = ClassDerivedFromSimpleDomainObject.NewObject();
            var handle   = instance.GetHandle();

            var gottenInstance1 = handle.GetObject();

            Assert.That(gottenInstance1, Is.SameAs(instance));

            var gottenInstance2 = instance.ID.GetObject <ClassDerivedFromSimpleDomainObject> ();

            Assert.That(gottenInstance2, Is.SameAs(instance));
        }
        public void Serializable()
        {
            var instance = ClassDerivedFromSimpleDomainObject.NewObject();

            instance.IntProperty = 7;

            var deserializedData     = Serializer.SerializeAndDeserialize(Tuple.Create(ClientTransaction.Current, instance));
            var deserializedInstance = deserializedData.Item2;

            Assert.That(deserializedInstance.ID, Is.EqualTo(instance.ID));
            Assert.That(deserializedInstance.RootTransaction, Is.SameAs(deserializedData.Item1));

            using (deserializedData.Item1.EnterNonDiscardingScope())
            {
                Assert.That(deserializedInstance, Is.Not.SameAs(instance));
                Assert.That(deserializedInstance.IntProperty, Is.EqualTo(7));
            }
        }