public void MarkCleanSetDataTwiceAndMarkCleanAgainWithReferenceType()
		{
			var data = new FieldDataUsingOriginalValueViaHashCode<string>("name");
			data.MarkClean();
			var generator = new RandomObjectGenerator();
			data.Value = generator.Generate<string>();
			data.Value = generator.Generate<string>();
			data.MarkClean();
			Assert.IsFalse(data.IsDirty);						
		}
        public void MarkCleanSetDataTwiceAndMarkCleanAgainWithValueType()
        {
            var data = new FieldDataUsingOriginalValueViaHashCode <int>("name");

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

            data.Value = generator.Generate <int>();
            data.Value = generator.Generate <int>();
            data.MarkClean();
            Assert.IsFalse(data.IsDirty);
        }
        public void MarkCleanSetDataTwiceMarkCleanAgainAndSetDataWithReferenceType()
        {
            var data = new FieldDataUsingOriginalValueViaHashCode <string>("name");

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

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

            data.MarkClean();

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

            data.Value = originalValue;
            data.Value = generator.Generate <string>();
            data.Value = originalValue;
            Assert.IsFalse(data.IsDirty);
        }
		public void SetDataBackToOriginalValueWithValueType()
		{
			var data = new FieldDataUsingOriginalValueViaHashCode<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);
		}