public void SetUp()
        {
            var objectTypeId = new ObjectTypeId(new Guid(objectTypeIdValue));
            var repository = new ObjectTypeDescriptorRepository();

            repository.RegisterUsingReflection(typeof(TestingObject));
            typeDescriptor = repository.GetByTypeId(objectTypeId);
        }
        public void SetUp()
        {
            var objectTypeId = new ObjectTypeId(new Guid(objectTypeIdValue));
            var repository   = new ObjectTypeDescriptorRepository();

            repository.RegisterUsingReflection(typeof(TestingObject));
            typeDescriptor = repository.GetByTypeId(objectTypeId);
        }
 public void SetUp()
 {
     objectId       = ObjectId.NewUniqueId();
     objectTypeId   = new ObjectTypeId(new Guid(objectTypeIdValue));
     changeSetId    = ChangeSetId.NewUniqueId();
     typeRepository = new ObjectTypeDescriptorRepository().RegisterUsingReflection <TestingObject>();
     dataFacadeMock = new Mock <IDataFacade>();
     objectFacade   = new ObjectFacade(dataFacadeMock.Object, typeRepository, new Mock <ICommandExecutor>().Object);
 }
        public void It_returns_null_for_not_registered_type_id()
        {
            var objectTypeId = ObjectTypeId.NewUniqueId();
            var repository   = new ObjectTypeDescriptorRepository();

            var notRegistered = repository.GetByTypeId(objectTypeId);

            Assert.IsNull(notRegistered);
        }
        public void It_returns_null_for_not_registered_type_id()
        {
            var objectTypeId = ObjectTypeId.NewUniqueId();
            var repository = new ObjectTypeDescriptorRepository();

            var notRegistered = repository.GetByTypeId(objectTypeId);

            Assert.IsNull(notRegistered);
        }
        public void It_throws_exception_when_trying_to_register_two_types_with_same_id()
        {
            var objectTypeId = ObjectTypeId.NewUniqueId();
            var repository = new ObjectTypeDescriptorRepository();
            var firstTypeDescriptor = new ObjectTypeDescriptor(typeof(object), objectTypeId, new AttributeDescriptor[] { }, new RelationDescriptor[] { });
            var secondTypeDescriptor = new ObjectTypeDescriptor(typeof(int), objectTypeId, new AttributeDescriptor[] { }, new RelationDescriptor[] { });
            repository.RegisterTypeDescriptor(firstTypeDescriptor);

            Assert.Throws<InvalidOperationException>(() => repository.RegisterTypeDescriptor(secondTypeDescriptor));
        }
        public void It_throws_exception_when_trying_to_register_two_types_with_same_id()
        {
            var objectTypeId         = ObjectTypeId.NewUniqueId();
            var repository           = new ObjectTypeDescriptorRepository();
            var firstTypeDescriptor  = new ObjectTypeDescriptor(typeof(object), objectTypeId, new AttributeDescriptor[] { }, new RelationDescriptor[] { });
            var secondTypeDescriptor = new ObjectTypeDescriptor(typeof(int), objectTypeId, new AttributeDescriptor[] { }, new RelationDescriptor[] { });

            repository.RegisterTypeDescriptor(firstTypeDescriptor);

            Assert.Throws <InvalidOperationException>(() => repository.RegisterTypeDescriptor(secondTypeDescriptor));
        }
        public void It_returns_object_type_by_its_id()
        {
            var objectTypeId   = ObjectTypeId.NewUniqueId();
            var repository     = new ObjectTypeDescriptorRepository();
            var typeDescriptor = new ObjectTypeDescriptor(typeof(object), objectTypeId, new AttributeDescriptor[] {},
                                                          new RelationDescriptor[] {});

            repository.RegisterTypeDescriptor(typeDescriptor);
            var registered = repository.GetByTypeId(objectTypeId);

            Assert.IsNotNull(registered);
        }
        public void It_returns_object_type_by_its_id()
        {
            var objectTypeId = ObjectTypeId.NewUniqueId();
            var repository = new ObjectTypeDescriptorRepository();
            var typeDescriptor = new ObjectTypeDescriptor(typeof (object), objectTypeId, new AttributeDescriptor[] {},
                                                          new RelationDescriptor[] {});

            repository.RegisterTypeDescriptor(typeDescriptor);
            var registered = repository.GetByTypeId(objectTypeId);

            Assert.IsNotNull(registered);
        }
        public void It_can_handle_1000_objects_with_10_changes_each()
        {
            var dataStore = new InMemoryDataStore();

            var objectIds = GenerateObjectIds(1000);

            ChangeSetId?previousChangeSetId = null;
            ChangeSetId currentChangeSetId  = ChangeSetId.NewUniqueId();

            dataStore.ChangeSets.Add(new ChangeSet(currentChangeSetId, previousChangeSetId, "Some comment", GenerateCreateCommands(objectIds)));
            previousChangeSetId = currentChangeSetId;

            for (int i = 0; i < 9; i++)
            {
                currentChangeSetId = ChangeSetId.NewUniqueId();
                dataStore.ChangeSets.Add(new ChangeSet(currentChangeSetId, previousChangeSetId, "Some comment", GenerateUpdateCommands(i, objectIds)));
                previousChangeSetId = currentChangeSetId;
            }

            var commandExecutor = new CommandExecutor()
                                  .RegisterCommandHandler(new CreateObjectCommandHandler())
                                  .RegisterCommandHandler(new ModifyAttributeCommandHandler());
            var objectTypeRepository = new ObjectTypeDescriptorRepository()
                                       .RegisterUsingReflection <TestingObject>();
            var dataFacade   = new DataFacade(commandExecutor, dataStore, new IncrementalCachingSnapshotFactory());
            var objectFacade = new ObjectFacade(dataFacade, objectTypeRepository, commandExecutor);

            var stopwatch = new Stopwatch();

            stopwatch.Start();
            var currentView = objectFacade.GetSnapshot(currentChangeSetId);
            var allObjects  = currentView.List <TestingObject>().ToList();

            stopwatch.Stop();
            Console.WriteLine(stopwatch.ElapsedMilliseconds);
            Assert.AreEqual(1000, allObjects.Count);
            foreach (var testingObject in allObjects)
            {
                Assert.AreEqual("8", testingObject.TextValue);
            }
        }
        public void SetUp()
        {
            var dataStore       = new InMemoryDataStore();
            var commandExecutor = new CommandExecutor()
                                  .RegisterCommandHandler(new CreateUnitCommandHandler())
                                  .RegisterCommandHandler(new CreateHierarchyCommandHandler())
                                  .RegisterCommandHandler(new SetHierarchyRootCommandHandler())
                                  .RegisterCommandHandler(new MoveUnitCommandHandler())
                                  .RegisterCommandHandler(new CreateHierarchyNodeCommandHandler())
                                  .RegisterCommandHandler(new AttachToHierarchyCommandHandler())
                                  .RegisterCommandHandler(new AttachChildCommandHandler())
                                  .RegisterCommandHandler(new DetachChildCommandHandler())
                                  .RegisterCommandHandler(new SetParentCommandHandler());

            var typeRepository = new ObjectTypeDescriptorRepository()
                                 .RegisterUsingReflection <Unit>()
                                 .RegisterUsingReflection <HierarchyNode>()
                                 .RegisterUsingReflection <Hierarchy>();

            dataFacade   = new DataFacade(commandExecutor, dataStore, new IncrementalCachingSnapshotFactory());
            objectFacade = new ObjectFacade(dataFacade, typeRepository, commandExecutor);
        }
        public void SetUp()
        {
            var dataStore = new InMemoryDataStore();
            var commandExecutor = new CommandExecutor()
                .RegisterCommandHandler(new CreateUnitCommandHandler())
                .RegisterCommandHandler(new CreateHierarchyCommandHandler())
                .RegisterCommandHandler(new SetHierarchyRootCommandHandler())
                .RegisterCommandHandler(new MoveUnitCommandHandler())
                .RegisterCommandHandler(new CreateHierarchyNodeCommandHandler())
                .RegisterCommandHandler(new AttachToHierarchyCommandHandler())
                .RegisterCommandHandler(new AttachChildCommandHandler())
                .RegisterCommandHandler(new DetachChildCommandHandler())
                .RegisterCommandHandler(new SetParentCommandHandler());

            var typeRepository = new ObjectTypeDescriptorRepository()
                .RegisterUsingReflection<Unit>()
                .RegisterUsingReflection<HierarchyNode>()
                .RegisterUsingReflection<Hierarchy>();

            dataFacade = new DataFacade(commandExecutor, dataStore, new IncrementalCachingSnapshotFactory());
            objectFacade = new ObjectFacade(dataFacade, typeRepository, commandExecutor);
        }
        public void It_can_handle_1000_objects_with_10_changes_each()
        {
            var dataStore = new InMemoryDataStore();

            var objectIds = GenerateObjectIds(1000);

            ChangeSetId? previousChangeSetId = null;
            ChangeSetId currentChangeSetId = ChangeSetId.NewUniqueId();
            dataStore.ChangeSets.Add(new ChangeSet(currentChangeSetId, previousChangeSetId, "Some comment", GenerateCreateCommands(objectIds)));
            previousChangeSetId = currentChangeSetId;

            for (int i = 0; i < 9; i++)
            {
                currentChangeSetId = ChangeSetId.NewUniqueId();
                dataStore.ChangeSets.Add(new ChangeSet(currentChangeSetId, previousChangeSetId, "Some comment", GenerateUpdateCommands(i, objectIds)));
                previousChangeSetId = currentChangeSetId;
            }

            var commandExecutor = new CommandExecutor()
                .RegisterCommandHandler(new CreateObjectCommandHandler())
                .RegisterCommandHandler(new ModifyAttributeCommandHandler());
            var objectTypeRepository = new ObjectTypeDescriptorRepository()
                .RegisterUsingReflection<TestingObject>();
            var dataFacade = new DataFacade(commandExecutor, dataStore, new IncrementalCachingSnapshotFactory());
            var objectFacade = new ObjectFacade(dataFacade, objectTypeRepository, commandExecutor);

            var stopwatch = new Stopwatch();
            stopwatch.Start();
            var currentView = objectFacade.GetSnapshot(currentChangeSetId);
            var allObjects = currentView.List<TestingObject>().ToList();
            stopwatch.Stop();
            Console.WriteLine(stopwatch.ElapsedMilliseconds);
            Assert.AreEqual(1000, allObjects.Count);
            foreach (var testingObject in allObjects)
            {
                Assert.AreEqual("8", testingObject.TextValue);
            }
        }
 public void SetUp()
 {
     objectId = ObjectId.NewUniqueId();
     objectTypeId = new ObjectTypeId(new Guid(objectTypeIdValue));
     changeSetId = ChangeSetId.NewUniqueId();
     typeRepository = new ObjectTypeDescriptorRepository().RegisterUsingReflection<TestingObject>();
     dataFacadeMock = new Mock<IDataFacade>();
     objectFacade = new ObjectFacade(dataFacadeMock.Object, typeRepository, new Mock<ICommandExecutor>().Object);
 }