예제 #1
0
        public void Invoke_WithNoSiteModels()
        {
            var message  = new SiteModelAttributesChangedEvent();
            var listener = new SiteModelAttributesChangedEventListener();

            listener.Invoke(Guid.NewGuid(), message).Should().BeTrue();
        }
예제 #2
0
        public void Invoke_WithSiteModels()
        {
            var message = new SiteModelAttributesChangedEvent
            {
                SiteModelID = Guid.NewGuid()
            };

            var listener = new SiteModelAttributesChangedEventListener(TRexGrids.ImmutableGridName());

            listener.Invoke(Guid.NewGuid(), message).Should().BeTrue();
        }
예제 #3
0
        private void TestIt(Func <ISiteModel, bool> loadedFunc,
                            Func <ISiteModel, object> loadAction,
                            Action <SiteModelAttributesChangedEvent, bool> modifyAction,
                            bool modified,
                            bool finalState)
        {
            var siteModels = DIContext.Obtain <ISiteModels>();

            // Create the new site model
            var guid      = Guid.NewGuid();
            var siteModel = siteModels.GetSiteModel(guid, true);

            // Force the site model to be reloaded in a virgin state so the 'loaded' state is as expected
            // as metadata registration sets all the loaded flags to 'true'
            var _evt = new SiteModelAttributesChangedEvent
            {
                SiteModelID                 = guid,
                AlignmentsModified          = true,
                CsibModified                = true,
                DesignsModified             = true,
                ExistenceMapModified        = true,
                MachineDesignsModified      = true,
                MachineTargetValuesModified = true,
                MachinesModified            = true,
                ProofingRunsModified        = true,
                SurveyedSurfacesModified    = true,
                SiteModelMarkedForDeletion  = false
            };

            siteModels.SiteModelAttributesHaveChanged(_evt);
            siteModel = siteModels.GetSiteModel(guid, false);

            loadedFunc.Invoke(siteModel).Should().BeFalse();

            var _ = loadAction.Invoke(siteModel);

            loadedFunc.Invoke(siteModel).Should().BeTrue();

            var evt = new SiteModelAttributesChangedEvent
            {
                SiteModelID = guid
            };

            modifyAction.Invoke(evt, modified);

            siteModels.SiteModelAttributesHaveChanged(evt);

            var siteModel2 = siteModels.GetSiteModel(guid, false);

            siteModel2.Should().NotBeNull();
            siteModel2.Should().NotBe(siteModel);
            loadedFunc.Invoke(siteModel2).Should().Be(finalState);
        }
예제 #4
0
        public void Test_ProjectImmutableDataEventsTests_MergingOverrides(int startMins, int endMins)
        {
            var siteModel             = DITAGFileAndSubGridRequestsWithIgniteFixture.NewEmptyModel(); //Mutable context
            var bulldozerMachineIndex = siteModel.Machines.Locate("Bulldozer", false).InternalSiteModelMachineIndex;
            var events = siteModel.MachinesTargetValues[bulldozerMachineIndex];

            var layerIds        = new[] { (ushort)1, (ushort)2, (ushort)3 };
            var layerOverrideId = (ushort)4;

            var designIds        = new[] { 1, 2, 3 };
            var designOverrideId = 4;

            var referenceDate = DateTime.UtcNow;
            var dateTimes     = new[] { referenceDate.AddMinutes(-90), referenceDate.AddMinutes(-60), referenceDate.AddMinutes(-30) };

            for (var i = 0; i < 3; i++)
            {
                events.MachineDesignNameIDStateEvents.PutValueAtDate(dateTimes[i], designIds[i]);
                events.LayerIDStateEvents.PutValueAtDate(dateTimes[i], layerIds[i]);
            }

            var overrideStartDate = referenceDate.AddMinutes(startMins);
            var overrideEndDate   = referenceDate.AddMinutes(endMins);

            events.DesignOverrideEvents.PutValueAtDate(overrideStartDate, new OverrideEvent <int>(overrideEndDate, designOverrideId));
            events.LayerOverrideEvents.PutValueAtDate(overrideStartDate, new OverrideEvent <ushort>(overrideEndDate, layerOverrideId));
            //Now save added events
            events.SaveMachineEventsToPersistentStore(siteModel.PrimaryStorageProxy);
            var evt = new SiteModelAttributesChangedEvent
            {
                SiteModelID                 = siteModel.ID,
                AlignmentsModified          = false,
                CsibModified                = false,
                DesignsModified             = false,
                ExistenceMapModified        = false,
                MachineDesignsModified      = false,
                MachineTargetValuesModified = true,
                MachinesModified            = false,
                ProofingRunsModified        = false,
                SurveyedSurfacesModified    = false
            };
            var siteModels = DIContext.Obtain <ISiteModels>();

            siteModels.SiteModelAttributesHaveChanged(evt);
            //Re-get site model to get newly created one
            siteModel = siteModels.GetSiteModel(siteModel.ID, false);
            siteModel.SetStorageRepresentationToSupply(StorageMutability.Immutable);//so that merge will occur
            events = siteModel.MachinesTargetValues[bulldozerMachineIndex];

            CheckMergedList(startMins, endMins, events.MachineDesignNameIDStateEvents, designOverrideId, designIds, dateTimes, overrideStartDate, overrideEndDate);
            CheckMergedList(startMins, endMins, events.LayerIDStateEvents, layerOverrideId, layerIds, dateTimes, overrideStartDate, overrideEndDate);
        }
예제 #5
0
        public void Creation()
        {
            var evt = new SiteModelAttributesChangedEvent();

            evt.Should().NotBeNull();
            evt.AlignmentsModified.Should().BeFalse();
            evt.CsibModified.Should().BeFalse();
            evt.DesignsModified.Should().BeFalse();
            evt.ExistenceMapChangeMask.Should().BeNull();
            evt.ExistenceMapModified.Should().BeFalse();
            evt.MachineDesignsModified.Should().BeFalse();
            evt.MachineTargetValuesModified.Should().BeFalse();
            evt.MachinesModified.Should().BeFalse();
            evt.ProofingRunsModified.Should().BeFalse();
            evt.SurveyedSurfacesModified.Should().BeFalse();
            evt.SiteModelMarkedForDeletion.Should().BeFalse();
            evt.SiteModelID.Should().Be(Guid.Empty);
        }
예제 #6
0
        public void Test_SiteModelAttributesChangedEvent_WithNullMask()
        {
            var argument = new SiteModelAttributesChangedEvent
            {
                SiteModelID                 = Guid.NewGuid(),
                ExistenceMapModified        = true,
                CsibModified                = true,
                DesignsModified             = true,
                SurveyedSurfacesModified    = true,
                MachinesModified            = true,
                MachineTargetValuesModified = true,
                MachineDesignsModified      = true,
                ProofingRunsModified        = true,
                AlignmentsModified          = true,
                ExistenceMapChangeMask      = null
            };

            SimpleBinarizableInstanceTester.TestClass(argument, "Custom SiteModelAttributesChangedEvent not same after round trip serialisation");
        }
예제 #7
0
        public void FromToBinary_WithNullMask()
        {
            var newGuid = Guid.NewGuid();

            var evt = new SiteModelAttributesChangedEvent
            {
                AlignmentsModified          = true,
                CsibModified                = true,
                DesignsModified             = true,
                ExistenceMapChangeMask      = new byte[0],
                ExistenceMapModified        = true,
                MachineDesignsModified      = true,
                MachineTargetValuesModified = true,
                MachinesModified            = true,
                ProofingRunsModified        = true,
                SurveyedSurfacesModified    = true,
                SiteModelMarkedForDeletion  = true,
                SiteModelID = newGuid
            };

            TestBinarizable_ReaderWriterHelper.RoundTripSerialise(evt);
        }
예제 #8
0
        public void Test_SiteModel_ChangeNotification_SiteModelMarkedForDeletion()
        {
            var siteModels = DIContext.Obtain <ISiteModels>();

            // Create the new site model
            var guid      = Guid.NewGuid();
            var siteModel = siteModels.GetSiteModel(guid, true);

            siteModel.SetStorageRepresentationToSupply(StorageMutability.Mutable);
            siteModel.MarkForDeletion();

            // Note the site model is marked for deletion
            var evt = new SiteModelAttributesChangedEvent
            {
                SiteModelID = guid,
                SiteModelMarkedForDeletion = true
            };

            siteModels.SiteModelAttributesHaveChanged(evt);
            siteModel = siteModels.GetSiteModel(guid, false);

            // Check the site model cannot be retrieved when marked for deletion
            siteModel.Should().BeNull();
        }