Ejemplo n.º 1
0
        public async void Add()
        {
            AddApplicationRouting();

            var siteModel = DITAGFileAndSubGridRequestsWithIgniteFixture.NewEmptyModel();

            siteModel.SetStorageRepresentationToSupply(TRex.Storage.Models.StorageMutability.Mutable);
            siteModel.SurveyedSurfaces.Count.Should().Be(0);

            siteModel.SetStorageRepresentationToSupply(TRex.Storage.Models.StorageMutability.Immutable);
            siteModel.SurveyedSurfaces.Count.Should().Be(0);

            var designID     = Guid.NewGuid();
            var existenceMap = new TRex.SubGridTrees.SubGridTreeSubGridExistenceBitMask();

            existenceMap[0, 0] = true;
            var asAtDate = DateTime.UtcNow;
            var request  = new AddSurveyedSurfaceRequest();
            var response = await request.ExecuteAsync(new AddSurveyedSurfaceArgument
            {
                ProjectID        = siteModel.ID,
                DesignDescriptor = new DesignDescriptor(designID, "folder", "filename"),
                AsAtDate         = asAtDate,
                Extents          = new TRex.Geometry.BoundingWorldExtent3D(0, 0, 1, 1),
                ExistenceMap     = existenceMap
            });

            response.Should().NotBeNull();
            response.DesignUid.Should().Be(designID);
            response.RequestResult.Should().Be(DesignProfilerRequestResult.OK);

            // Re-request the sitemodel to reflect the change
            siteModel = DIContext.Obtain <ISiteModels>().GetSiteModel(siteModel.ID, false);

            siteModel.SetStorageRepresentationToSupply(TRex.Storage.Models.StorageMutability.Mutable);
            siteModel.SurveyedSurfaces.Count.Should().Be(1);
            siteModel.SurveyedSurfaces[0].DesignDescriptor.Should().BeEquivalentTo(new TRex.Designs.Models.DesignDescriptor(designID, "folder", "filename"));
            siteModel.SurveyedSurfaces[0].AsAtDate.Should().Be(asAtDate);

            siteModel.SetStorageRepresentationToSupply(TRex.Storage.Models.StorageMutability.Immutable);
            siteModel.SurveyedSurfaces.Count.Should().Be(1);
            siteModel.SurveyedSurfaces[0].DesignDescriptor.Should().BeEquivalentTo(new TRex.Designs.Models.DesignDescriptor(designID, "folder", "filename"));
            siteModel.SurveyedSurfaces[0].AsAtDate.Should().Be(asAtDate);

            var readExistenceMap = DIContext.Obtain <IExistenceMapServer>().GetExistenceMap(new NonSpatialAffinityKey(siteModel.ID,
                                                                                                                      BaseExistenceMapRequest.CacheKeyString(TRex.ExistenceMaps.Interfaces.Consts.EXISTENCE_SURVEYED_SURFACE_DESCRIPTOR, designID)));

            existenceMap.Should().NotBeNull();
            existenceMap.CountBits().Should().Be(readExistenceMap.CountBits());
            readExistenceMap[0, 0].Should().BeTrue();
        }
Ejemplo n.º 2
0
        public async void Remove()
        {
            AddApplicationRouting();

            var siteModel = DITAGFileAndSubGridRequestsWithIgniteFixture.NewEmptyModel();

            // Add te design to be removed
            var designID     = Guid.NewGuid();
            var existenceMap = new TRex.SubGridTrees.SubGridTreeSubGridExistenceBitMask();

            existenceMap[0, 0] = true;

            var addRequest  = new AddTTMDesignRequest();
            var addResponse = await addRequest.ExecuteAsync(new AddTTMDesignArgument
            {
                ProjectID        = siteModel.ID,
                DesignDescriptor = new DesignDescriptor(designID, "folder", "filename"),
                Extents          = new TRex.Geometry.BoundingWorldExtent3D(0, 0, 1, 1),
                ExistenceMap     = existenceMap
            });

            addResponse.Should().NotBeNull();
            addResponse.DesignUid.Should().Be(designID);
            addResponse.RequestResult.Should().Be(DesignProfilerRequestResult.OK);

            // Re-request the sitemodel to reflect the change
            siteModel = DIContext.Obtain <ISiteModels>().GetSiteModel(siteModel.ID, false);
            siteModel.Designs.Count.Should().Be(1);

            var removeRequest  = new RemoveTTMDesignRequest();
            var removeResponse = await removeRequest.ExecuteAsync(new RemoveTTMDesignArgument
            {
                ProjectID = siteModel.ID,
                DesignID  = designID
            });

            removeResponse.Should().NotBeNull();
            removeResponse.DesignUid.Should().Be(designID);
            removeResponse.RequestResult.Should().Be(DesignProfilerRequestResult.OK);

            // Re-request the sitemodel to reflect the change
            siteModel = DIContext.Obtain <ISiteModels>().GetSiteModel(siteModel.ID, false);
            siteModel.Designs.Count.Should().Be(0);

            var readExistenceMap = DIContext.Obtain <IExistenceMapServer>().GetExistenceMap(new NonSpatialAffinityKey(siteModel.ID,
                                                                                                                      BaseExistenceMapRequest.CacheKeyString(TRex.ExistenceMaps.Interfaces.Consts.EXISTENCE_MAP_DESIGN_DESCRIPTOR, designID)));

            readExistenceMap.Should().BeNull();
        }