public void Entity_ExtractState_ModifiedStateTest()
        {
            EntityToolsDomainContext ctx = new EntityToolsDomainContext();

            Class newClass = new Class()
            {
                Name         = "Test New Class",
                Description  = "This is a new class for the test",
                Id           = Guid.NewGuid(),
                DepartmentId = Guid.NewGuid()
            };

            ctx.Classes.Add(newClass);
            //((IChangeTracking)newClass).AcceptChanges();

            IDictionary <string, object> changedState = newClass.ExtractState(ExtractType.ModifiedState);

            Assert.AreEqual(4, changedState.Count);
            Assert.IsTrue(changedState.ContainsKey("Name"));
            Assert.IsTrue(changedState.ContainsKey("Description"));
            Assert.IsTrue(changedState.ContainsKey("Id"));
            Assert.IsTrue(changedState.ContainsKey("DepartmentId"));
            Assert.AreEqual(newClass.Name, changedState["Name"]);
            Assert.AreEqual(newClass.Id, changedState["Id"]);
            Assert.AreEqual(newClass.Description, changedState["Description"]);
            Assert.AreEqual(newClass.DepartmentId, changedState["DepartmentId"]);
        }
        public void EntityCloneTest()
        {
            var ctx    = new EntityToolsDomainContext();
            var loadOp = ctx.Load(ctx.GetPersonSetQuery());

            EnqueueConditional(() => loadOp.IsComplete);
            EnqueueCallback(
                () =>
            {
                var existingPerson  = loadOp.Entities.First();
                existingPerson.Name = "new name";
                Person newPerson    = new Person();
                newPerson.ApplyState(
                    existingPerson.ExtractState(ExtractType.OriginalState),
                    existingPerson.ExtractState(ExtractType.ModifiedState));
                newPerson.Id = Guid.NewGuid();
                ctx.Persons.Add(newPerson);
            }
                );
            EnqueueTestComplete();
        }
        public void Entity_ExtractState_ChangesOnlyTest()
        {
            EntityToolsDomainContext ctx = new EntityToolsDomainContext();

            Class newClass = new Class()
            {
                Name        = "Test New Class",
                Description = "This is a new class for the test",
                Id          = Guid.NewGuid()
            };

            ctx.Classes.Add(newClass);
            ((IChangeTracking)newClass).AcceptChanges();

            newClass.Name = "My New Name";

            IDictionary <string, object> changedState = newClass.ExtractState(ExtractType.ChangesOnlyState);

            Assert.AreEqual(1, changedState.Count);
            Assert.IsTrue(changedState.ContainsKey("Name"));
            Assert.AreEqual("My New Name", changedState["Name"]);
        }