public void MarkCleanAndSetDataWithValueType()
		{
			var data = new FieldDataUsingOriginalValueViaDuplicate<int>("name");
			data.MarkClean();
			data.Value = new RandomObjectGenerator().Generate<int>();
			Assert.IsFalse(data.IsDirty);
		}
        public void SetValueWithoutMarkingCleanWithValueType()
        {
            var data = new FieldDataUsingOriginalValueViaDuplicate <int>("name");

            data.Value = new RandomObjectGenerator().Generate <int>();
            Assert.IsFalse(data.IsDirty);
        }
        public void MarkCleanAndSetDataWithReferenceType()
        {
            var data = new FieldDataUsingOriginalValueViaDuplicate <string>("name");

            data.MarkClean();
            data.Value = new RandomObjectGenerator().Generate <string>();
            Assert.IsFalse(data.IsDirty);
        }
		public void MarkCleanAndSetDataTwiceWithReferenceType()
		{
			var data = new FieldDataUsingOriginalValueViaDuplicate<string>("name");
			data.MarkClean();
			var generator = new RandomObjectGenerator();
			data.Value = generator.Generate<string>();
			data.Value = generator.Generate<string>();
			Assert.IsTrue(data.IsDirty);			
		}
        public void MarkCleanAndSetDataTwiceWithValueType()
        {
            var data = new FieldDataUsingOriginalValueViaDuplicate <int>("name");

            data.MarkClean();
            var generator = new RandomObjectGenerator();

            data.Value = generator.Generate <int>();
            data.Value = generator.Generate <int>();
            Assert.IsTrue(data.IsDirty);
        }
        public void SetChildValueThatIsNotDirty()
        {
            var data = new FieldDataUsingOriginalValueViaDuplicate <ITrackStatus>("name");

            Assert.IsFalse(data.IsDirty);

            var newChild = MockRepository.GenerateStub <ITrackStatus>();

            newChild.Expect(e => e.IsDirty).Return(false);
            data.Value = newChild;
            Assert.IsFalse(data.IsDirty);
        }
        public void SetDataBackToOriginalValueWithValueType()
        {
            var data = new FieldDataUsingOriginalValueViaDuplicate <int>("name");

            data.MarkClean();

            var generator     = new RandomObjectGenerator();
            var originalValue = generator.Generate <int>();

            data.Value = originalValue;
            data.Value = generator.Generate <int>();
            data.Value = originalValue;
            Assert.IsFalse(data.IsDirty);
        }
        public void CreateWithValueType()
        {
            var data = new FieldDataUsingOriginalValueViaDuplicate <int>("name");

            Assert.IsFalse(data.IsDirty);
        }
		public void CreateWithValueType()
		{
			var data = new FieldDataUsingOriginalValueViaDuplicate<int>("name");
			Assert.IsFalse(data.IsDirty);
		}
		public void SetValueWithoutMarkingCleanWithReferenceType()
		{
			var data = new FieldDataUsingOriginalValueViaDuplicate<string>("name");
			data.Value = new RandomObjectGenerator().Generate<string>();
			Assert.IsFalse(data.IsDirty);
		}
		public void SetDataBackToOriginalValueWithValueType()
		{
			var data = new FieldDataUsingOriginalValueViaDuplicate<int>("name");
			data.MarkClean();

			var generator = new RandomObjectGenerator();
			var originalValue = generator.Generate<int>();
			data.Value = originalValue;
			data.Value = generator.Generate<int>();
			data.Value = originalValue;
			Assert.IsFalse(data.IsDirty);
		}
		public void SetChildValueThatIsNotDirty()
		{
			var data = new FieldDataUsingOriginalValueViaDuplicate<ITrackStatus>("name");
			Assert.IsFalse(data.IsDirty);

			var newChild = MockRepository.GenerateStub<ITrackStatus>();
			newChild.Expect(e => e.IsDirty).Return(false);
			data.Value = newChild;
			Assert.IsFalse(data.IsDirty);			
		}