@itwin/core-backend 5.5.0-dev.2 → 5.5.0-dev.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -1
- package/lib/cjs/BackendHubAccess.js.map +1 -1
- package/lib/cjs/BackendLoggerCategory.js.map +1 -1
- package/lib/cjs/BisCoreSchema.js.map +1 -1
- package/lib/cjs/BlobContainerService.js.map +1 -1
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/CatalogDb.js.map +1 -1
- package/lib/cjs/Category.js.map +1 -1
- package/lib/cjs/ChangeSummaryManager.js +2 -2
- package/lib/cjs/ChangeSummaryManager.js.map +1 -1
- package/lib/cjs/ChangedElementsDb.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +248 -248
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/ChannelControl.js.map +1 -1
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/ClassRegistry.js +5 -5
- package/lib/cjs/ClassRegistry.js.map +1 -1
- package/lib/cjs/CloudSqlite.js.map +1 -1
- package/lib/cjs/CodeService.js.map +1 -1
- package/lib/cjs/CodeSpecs.js.map +1 -1
- package/lib/cjs/ConcurrentQuery.js.map +1 -1
- package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
- package/lib/cjs/DevTools.js.map +1 -1
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
- package/lib/cjs/ECSqlStatement.js.map +1 -1
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementGraphics.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.js.map +1 -1
- package/lib/cjs/Entity.js.map +1 -1
- package/lib/cjs/EntityReferences.js.map +1 -1
- package/lib/cjs/ExportGraphics.js.map +1 -1
- package/lib/cjs/ExternalSource.js.map +1 -1
- package/lib/cjs/FontFile.js.map +1 -1
- package/lib/cjs/GeoCoordConfig.js.map +1 -1
- package/lib/cjs/GeographicCRSServices.js.map +1 -1
- package/lib/cjs/GeometrySummary.js +47 -47
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/IModelDb.js +8 -8
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelDbFonts.js.map +1 -1
- package/lib/cjs/IModelElementCloneContext.js.map +1 -1
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
- package/lib/cjs/IModelJsFs.js.map +1 -1
- package/lib/cjs/ImageSourceConversion.js.map +1 -1
- package/lib/cjs/IpcHost.js.map +1 -1
- package/lib/cjs/LineStyle.js.map +1 -1
- package/lib/cjs/LocalHub.js +1 -1
- package/lib/cjs/LocalHub.js.map +1 -1
- package/lib/cjs/LocalhostIpcHost.js.map +1 -1
- package/lib/cjs/LockControl.js.map +1 -1
- package/lib/cjs/Material.js.map +1 -1
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/NativeAppStorage.js.map +1 -1
- package/lib/cjs/NativeHost.js.map +1 -1
- package/lib/cjs/NavigationRelationship.js.map +1 -1
- package/lib/cjs/PromiseMemoizer.js.map +1 -1
- package/lib/cjs/PropertyStore.js.map +1 -1
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/RpcBackend.js.map +1 -1
- package/lib/cjs/SQLiteDb.js.map +1 -1
- package/lib/cjs/Schema.js.map +1 -1
- package/lib/cjs/SchemaSync.js.map +1 -1
- package/lib/cjs/SchemaUtils.js.map +1 -1
- package/lib/cjs/SheetIndex.js.map +1 -1
- package/lib/cjs/SqliteChangesetReader.js.map +1 -1
- package/lib/cjs/SqliteStatement.js.map +1 -1
- package/lib/cjs/StashManager.js.map +1 -1
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TileStorage.js.map +1 -1
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/ViewStateHydrator.js.map +1 -1
- package/lib/cjs/ViewStore.js.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
- package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
- package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
- package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
- package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
- package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/domains/FunctionalElements.js.map +1 -1
- package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
- package/lib/cjs/domains/GenericElements.js.map +1 -1
- package/lib/cjs/domains/GenericSchema.js.map +1 -1
- package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
- package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
- package/lib/cjs/internal/FontFileImpl.js.map +1 -1
- package/lib/cjs/internal/HubMock.js.map +1 -1
- package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/cjs/internal/NativePlatform.js.map +1 -1
- package/lib/cjs/internal/NoLocks.js.map +1 -1
- package/lib/cjs/internal/OnlineStatus.js.map +1 -1
- package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
- package/lib/cjs/internal/Symbols.js.map +1 -1
- package/lib/cjs/internal/annotations/fields.js.map +1 -1
- package/lib/cjs/internal/cross-package.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
- package/lib/cjs/rpc/multipart.js.map +1 -1
- package/lib/cjs/rpc/tracing.js.map +1 -1
- package/lib/cjs/rpc/web/logging.js.map +1 -1
- package/lib/cjs/rpc/web/request.js.map +1 -1
- package/lib/cjs/rpc/web/response.js.map +1 -1
- package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/cjs/workspace/Settings.js.map +1 -1
- package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
- package/lib/esm/BackendHubAccess.js.map +1 -1
- package/lib/esm/BackendLoggerCategory.js.map +1 -1
- package/lib/esm/BisCoreSchema.js.map +1 -1
- package/lib/esm/BlobContainerService.js.map +1 -1
- package/lib/esm/BriefcaseManager.js.map +1 -1
- package/lib/esm/CatalogDb.js.map +1 -1
- package/lib/esm/Category.js.map +1 -1
- package/lib/esm/ChangeSummaryManager.js +2 -2
- package/lib/esm/ChangeSummaryManager.js.map +1 -1
- package/lib/esm/ChangedElementsDb.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js +248 -248
- package/lib/esm/ChangesetECAdaptor.js.map +1 -1
- package/lib/esm/ChannelControl.js.map +1 -1
- package/lib/esm/CheckpointManager.js.map +1 -1
- package/lib/esm/ClassRegistry.js +5 -5
- package/lib/esm/ClassRegistry.js.map +1 -1
- package/lib/esm/CloudSqlite.js.map +1 -1
- package/lib/esm/CodeService.js.map +1 -1
- package/lib/esm/CodeSpecs.js.map +1 -1
- package/lib/esm/ConcurrentQuery.js.map +1 -1
- package/lib/esm/CustomViewState3dCreator.js.map +1 -1
- package/lib/esm/DevTools.js.map +1 -1
- package/lib/esm/DisplayStyle.js.map +1 -1
- package/lib/esm/ECDb.js.map +1 -1
- package/lib/esm/ECSchemaXmlContext.js.map +1 -1
- package/lib/esm/ECSqlStatement.js.map +1 -1
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/ElementAspect.js.map +1 -1
- package/lib/esm/ElementGraphics.js.map +1 -1
- package/lib/esm/ElementTreeWalker.js.map +1 -1
- package/lib/esm/Entity.js.map +1 -1
- package/lib/esm/EntityReferences.js.map +1 -1
- package/lib/esm/ExportGraphics.js.map +1 -1
- package/lib/esm/ExternalSource.js.map +1 -1
- package/lib/esm/FontFile.js.map +1 -1
- package/lib/esm/GeoCoordConfig.js.map +1 -1
- package/lib/esm/GeographicCRSServices.js.map +1 -1
- package/lib/esm/GeometrySummary.js +47 -47
- package/lib/esm/GeometrySummary.js.map +1 -1
- package/lib/esm/IModelDb.js +8 -8
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/IModelDbFonts.js.map +1 -1
- package/lib/esm/IModelElementCloneContext.js.map +1 -1
- package/lib/esm/IModelHost.js.map +1 -1
- package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
- package/lib/esm/IModelJsFs.js.map +1 -1
- package/lib/esm/ImageSourceConversion.js.map +1 -1
- package/lib/esm/IpcHost.js.map +1 -1
- package/lib/esm/LineStyle.js.map +1 -1
- package/lib/esm/LocalHub.js +1 -1
- package/lib/esm/LocalHub.js.map +1 -1
- package/lib/esm/LocalhostIpcHost.js.map +1 -1
- package/lib/esm/LockControl.js.map +1 -1
- package/lib/esm/Material.js.map +1 -1
- package/lib/esm/Model.js.map +1 -1
- package/lib/esm/NativeAppStorage.js.map +1 -1
- package/lib/esm/NativeHost.js.map +1 -1
- package/lib/esm/NavigationRelationship.js.map +1 -1
- package/lib/esm/PromiseMemoizer.js.map +1 -1
- package/lib/esm/PropertyStore.js.map +1 -1
- package/lib/esm/Relationship.js.map +1 -1
- package/lib/esm/RpcBackend.js.map +1 -1
- package/lib/esm/SQLiteDb.js.map +1 -1
- package/lib/esm/Schema.js.map +1 -1
- package/lib/esm/SchemaSync.js.map +1 -1
- package/lib/esm/SchemaUtils.js.map +1 -1
- package/lib/esm/SheetIndex.js.map +1 -1
- package/lib/esm/SqliteChangesetReader.js.map +1 -1
- package/lib/esm/SqliteStatement.js.map +1 -1
- package/lib/esm/StashManager.js.map +1 -1
- package/lib/esm/Texture.js.map +1 -1
- package/lib/esm/TileStorage.js.map +1 -1
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/ViewDefinition.js.map +1 -1
- package/lib/esm/ViewStateHydrator.js.map +1 -1
- package/lib/esm/ViewStore.js.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/esm/annotations/FrameGeometry.js.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
- package/lib/esm/core-backend.js.map +1 -1
- package/lib/esm/domains/FunctionalElements.js.map +1 -1
- package/lib/esm/domains/FunctionalSchema.js.map +1 -1
- package/lib/esm/domains/GenericElements.js.map +1 -1
- package/lib/esm/domains/GenericSchema.js.map +1 -1
- package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
- package/lib/esm/internal/ChannelAdmin.js.map +1 -1
- package/lib/esm/internal/ElementLRUCache.js.map +1 -1
- package/lib/esm/internal/FontFileImpl.js.map +1 -1
- package/lib/esm/internal/HubMock.js.map +1 -1
- package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/esm/internal/NativePlatform.js.map +1 -1
- package/lib/esm/internal/NoLocks.js.map +1 -1
- package/lib/esm/internal/OnlineStatus.js.map +1 -1
- package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
- package/lib/esm/internal/Symbols.js.map +1 -1
- package/lib/esm/internal/annotations/fields.js.map +1 -1
- package/lib/esm/internal/cross-package.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
- package/lib/esm/rpc/multipart.js.map +1 -1
- package/lib/esm/rpc/tracing.js.map +1 -1
- package/lib/esm/rpc/web/logging.js.map +1 -1
- package/lib/esm/rpc/web/request.js.map +1 -1
- package/lib/esm/rpc/web/response.js.map +1 -1
- package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/esm/test/AdvancedEqual.js.map +1 -1
- package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
- package/lib/esm/test/AttachDb.test.js +11 -11
- package/lib/esm/test/AttachDb.test.js.map +1 -1
- package/lib/esm/test/ElementDrivesElement.test.js +23 -23
- package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
- package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
- package/lib/esm/test/GeometryTestUtil.js.map +1 -1
- package/lib/esm/test/IModelHost.test.js.map +1 -1
- package/lib/esm/test/IModelTestUtils.js.map +1 -1
- package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
- package/lib/esm/test/IpcHost.test.js.map +1 -1
- package/lib/esm/test/KnownTestLocations.js.map +1 -1
- package/lib/esm/test/PrintElementTree.js.map +1 -1
- package/lib/esm/test/PropertyDb.test.js.map +1 -1
- package/lib/esm/test/RevisionUtility.js.map +1 -1
- package/lib/esm/test/SchemaUtils.test.js +25 -25
- package/lib/esm/test/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
- package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
- package/lib/esm/test/TestUtils.js.map +1 -1
- package/lib/esm/test/annotations/Fields.test.js +53 -53
- package/lib/esm/test/annotations/Fields.test.js.map +1 -1
- package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
- package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js +5 -5
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
- package/lib/esm/test/categories/Category.test.js.map +1 -1
- package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
- package/lib/esm/test/ecdb/CTE.test.js +88 -88
- package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js +15 -15
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDb.test.js +72 -72
- package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
- package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
- package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
- package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
- package/lib/esm/test/element/ElementAspect.test.js +22 -22
- package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
- package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
- package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
- package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
- package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
- package/lib/esm/test/element/NullStructArray.test.js +13 -13
- package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
- package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
- package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
- package/lib/esm/test/element/UrlLink.test.js.map +1 -1
- package/lib/esm/test/font/FontFile.test.js.map +1 -1
- package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/Rebase.test.js +40 -40
- package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
- package/lib/esm/test/imageData.js.map +1 -1
- package/lib/esm/test/imodel/Code.test.js.map +1 -1
- package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
- package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js +44 -44
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
- package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js +432 -198
- package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js +272 -190
- package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/TestContext.d.ts +27 -0
- package/lib/esm/test/incrementalSchemaLocater/TestContext.d.ts.map +1 -0
- package/lib/esm/test/incrementalSchemaLocater/TestContext.js +136 -0
- package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -0
- package/lib/esm/test/index.js.map +1 -1
- package/lib/esm/test/misc/DevTools.test.js.map +1 -1
- package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
- package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
- package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
- package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
- package/lib/esm/test/rpc/response.test.js.map +1 -1
- package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
- package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
- package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
- package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
- package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
- package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +346 -127
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
- package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
- package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
- package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
- package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
- package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
- package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
- package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
- package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
- package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
- package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
- package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
- package/lib/esm/test/standalone/Setting.test.js.map +1 -1
- package/lib/esm/test/standalone/Settings.test.js.map +1 -1
- package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Texture.test.js.map +1 -1
- package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
- package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
- package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
- package/lib/esm/workspace/Settings.js.map +1 -1
- package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
- package/lib/esm/workspace/Workspace.js.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
- package/package.json +14 -14
- package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.d.ts +0 -11
- package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.d.ts.map +0 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js +0 -36
- package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js.map +0 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.d.ts +0 -20
- package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.d.ts.map +0 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js +0 -126
- package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js.map +0 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.d.ts +0 -24
- package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.d.ts.map +0 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js +0 -67
- package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageData.js","sourceRoot":"","sources":["../../../src/test/imageData.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACzhB,MAAM,0BAA0B,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAExF;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,oBAAoB;IAC1B,MAAM,EAAE,0BAA0B;CACnC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { Buffer } from \"node:buffer\";\n\nconst samplePngTextureData = [137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 3, 0, 0, 0, 3, 8, 2, 0, 0, 0, 217, 74, 34, 232, 0, 0, 0, 1, 115, 82, 71, 66, 0, 174, 206, 28, 233, 0, 0, 0, 4, 103, 65, 77, 65, 0, 0, 177, 143, 11, 252, 97, 5, 0, 0, 0, 9, 112, 72, 89, 115, 0, 0, 14, 195, 0, 0, 14, 195, 1, 199, 111, 168, 100, 0, 0, 0, 24, 73, 68, 65, 84, 24, 87, 99, 248, 15, 4, 12, 12, 64, 4, 198, 64, 46, 132, 5, 162, 254, 51, 0, 0, 195, 90, 10, 246, 127, 175, 154, 145, 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130];\nconst samplePngTextureDataBase64 = Buffer.from(samplePngTextureData).toString(\"base64\");\n\n/**\n * This is an encoded png containing a 3x3 square with white in top left pixel, blue in middle pixel, and green in\n * bottom right pixel. The rest of the square is red.\n */\nexport const samplePngTexture = {\n data: samplePngTextureData,\n base64: samplePngTextureDataBase64,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"imageData.js","sourceRoot":"","sources":["../../../src/test/imageData.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACzhB,MAAM,0BAA0B,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAExF;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,oBAAoB;IAC1B,MAAM,EAAE,0BAA0B;CACnC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Buffer } from \"node:buffer\";\r\n\r\nconst samplePngTextureData = [137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 3, 0, 0, 0, 3, 8, 2, 0, 0, 0, 217, 74, 34, 232, 0, 0, 0, 1, 115, 82, 71, 66, 0, 174, 206, 28, 233, 0, 0, 0, 4, 103, 65, 77, 65, 0, 0, 177, 143, 11, 252, 97, 5, 0, 0, 0, 9, 112, 72, 89, 115, 0, 0, 14, 195, 0, 0, 14, 195, 1, 199, 111, 168, 100, 0, 0, 0, 24, 73, 68, 65, 84, 24, 87, 99, 248, 15, 4, 12, 12, 64, 4, 198, 64, 46, 132, 5, 162, 254, 51, 0, 0, 195, 90, 10, 246, 127, 175, 154, 145, 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130];\r\nconst samplePngTextureDataBase64 = Buffer.from(samplePngTextureData).toString(\"base64\");\r\n\r\n/**\r\n * This is an encoded png containing a 3x3 square with white in top left pixel, blue in middle pixel, and green in\r\n * bottom right pixel. The rest of the square is red.\r\n */\r\nexport const samplePngTexture = {\r\n data: samplePngTextureData,\r\n base64: samplePngTextureDataBase64,\r\n};\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Code.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/Code.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert, expect } from \"chai\";\nimport * as path from \"node:path\";\nimport { SnapshotDb } from \"../../core-backend\";\nimport { Code, ElementProps } from \"@itwin/core-common\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\nimport { Id64 } from \"@itwin/core-bentley\";\n\ndescribe(\"Code Tests\", () => {\n let imodel: SnapshotDb;\n\n before(async () => {\n IModelTestUtils.registerTestBimSchema();\n const seedFile = IModelTestUtils.resolveAssetFile(\"test.bim\");\n const snapshotFile = IModelTestUtils.prepareOutputFile(\"IModel\", \"test.bim\");\n imodel = IModelTestUtils.createSnapshotFromSeed(snapshotFile, seedFile);\n const schemaPathname = path.join(KnownTestLocations.assetsDir, \"TestBim.ecschema.xml\");\n await imodel.importSchemas([schemaPathname]);\n imodel.saveChanges();\n });\n\n after(() => {\n imodel.close();\n });\n\n describe(\"Code Query Tests\", () => {\n it(\"should query an element by code\", () => {\n assert.exists(imodel.elements);\n const code = new Code({ scope: \"0x11\", spec: \"0x10\", value: \"RF1.dgn\" });\n const elementId = imodel.elements.queryElementIdByCode(code);\n assert.exists(elementId);\n assert.equal(elementId, \"0x1e\");\n });\n\n it(\"should get undefined when querying an element with a bad code value\", () => {\n assert.exists(imodel.elements);\n const badCode = new Code({ scope: \"0x11\", spec: \"0x10\", value: \"RF1_does_not_exist.dgn\" });\n const elementId = imodel.elements.queryElementIdByCode(badCode);\n assert.isUndefined(elementId);\n });\n\n it(\"should get undefined when querying an element with an empty code\", () => {\n assert.exists(imodel.elements);\n const emptyCode = Code.createEmpty();\n const elementId = imodel.elements.queryElementIdByCode(emptyCode);\n assert.isUndefined(elementId);\n });\n\n it(\"should get undefined when querying an element with a non-breaking space value\", () => {\n assert.exists(imodel.elements);\n const elProps: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"0x11\", spec: \"0x10\", value: \"\\xa0\" },\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n\n const id = imodel.elements.insertElement(elProps);\n assert.exists(id);\n assert.isTrue(Id64.isValidId64(id));\n\n const nonBreakingSpaceCode = new Code({ scope: \"0x11\", spec: \"0x10\", value: \"\\xa0\" });\n const elementId = imodel.elements.queryElementIdByCode(nonBreakingSpaceCode);\n assert.isUndefined(elementId);\n });\n\n it(\"should throw when querying an element with a NULL value\", () => {\n assert.exists(imodel.elements);\n const nullValueCode = { scope: \"0x11\", spec: \"0x10\", value: undefined as any };\n expect(() => imodel.elements.queryElementIdByCode(nullValueCode)).to.throw(\"Invalid Code\");\n });\n\n it(\"should throw when querying an element with an empty spec\", () => {\n assert.exists(imodel.elements);\n const noSpecCode = new Code({ scope: \"0x11\", spec: \"\", value: \"RF1.dgn\" });\n expect(() => imodel.elements.queryElementIdByCode(noSpecCode)).to.throw(\"Invalid CodeSpec\");\n });\n\n it(\"should get undefined when querying an element with a whitespace string spec\", () => {\n assert.exists(imodel.elements);\n const elProps: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"0x11\", spec: \" \", value: \"RF1.dgn\" },\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n\n const id = imodel.elements.insertElement(elProps);\n assert.exists(id);\n assert.isTrue(Id64.isValidId64(id));\n\n const whitespaceCode = { scope: \"0x11\", spec: \" \", value: \"RF1.dgn\" };\n const elementId = imodel.elements.queryElementIdByCode(whitespaceCode);\n assert.isUndefined(elementId);\n });\n\n it(\"should get undefined when querying an element with a non-breaking space spec\", () => {\n assert.exists(imodel.elements);\n const nonBreakingSpaceCode = { scope: \"0x11\", spec: \"\\xa0\", value: \"RF1.dgn\" };\n const elementId = imodel.elements.queryElementIdByCode(nonBreakingSpaceCode);\n assert.isUndefined(elementId);\n });\n\n it(\"should throw when querying an element with a bad spec\", () => {\n assert.exists(imodel.elements);\n const badSpecCode = new Code({ scope: \"0x11\", spec: \"not a real id\", value: \"RF1.dgn\" });\n expect(() => imodel.elements.queryElementIdByCode(badSpecCode)).to.throw(\"Invalid CodeSpec\");\n });\n\n it(\"should get undefined when querying for an element id with no scope\", () => {\n assert.exists(imodel.elements);\n const noScopeCode = new Code({ scope: \"\", spec: \"0x10\", value: \"RF1.dgn\" });\n const elementId = imodel.elements.queryElementIdByCode(noScopeCode);\n assert.isUndefined(elementId);\n });\n\n it(\"should get undefined when querying for an element id with non-breaking space scope\", () => {\n assert.exists(imodel.elements);\n const nonBreakingSpaceCode = new Code({ scope: \"\\xa0\", spec: \"0x10\", value: \"RF1.dgn\" });\n const elementId = imodel.elements.queryElementIdByCode(nonBreakingSpaceCode);\n assert.isUndefined(elementId);\n });\n\n it(\"should get undefined when querying for an element id with a bad scope\", () => {\n assert.exists(imodel.elements);\n const badScopeCode = new Code({ scope: \"not a real id\", spec: \"0x10\", value: \"RF1.dgn\" });\n const elementId = imodel.elements.queryElementIdByCode(badScopeCode);\n assert.isUndefined(elementId);\n });\n });\n\n describe(\"Code Insertion Tests\", () => {\n it(\"should insert an element with valid Code\", () => {\n assert.exists(imodel.elements);\n const elProps: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code\" },\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n\n const id = imodel.elements.insertElement(elProps);\n assert.exists(id);\n assert.isTrue(Id64.isValidId64(id));\n });\n\n it(\"should fail to insert an element with invalid Code scope\", () => {\n assert.exists(imodel.elements);\n const elProps: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"bad scope\", spec: \"0x10\", value: \"new code\" }, // invalid scope value\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n\n expect(() => imodel.elements.insertElement(elProps)).throws(\"invalid code scope\").to.have.property(\"metadata\");\n elProps.code.scope = \"0x34322\"; // valid id, but element doesn't exist\n expect(() => imodel.elements.insertElement(elProps)).throws(\"invalid code scope\").to.have.property(\"metadata\");\n elProps.code.scope = undefined as any; // nothing\n expect(() => imodel.elements.insertElement(elProps)).throws(\"invalid code scope\").to.have.property(\"metadata\");\n });\n\n it(\"should insert and trim an element with a code value with trailing spaces\", () => {\n assert.exists(imodel.elements);\n const elProps: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code trailing space test \" },\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n\n const id = imodel.elements.insertElement(elProps);\n assert.exists(id);\n assert.isTrue(Id64.isValidId64(id));\n\n const queryResult = imodel.elements.queryElementIdByCode({ scope: \"0x1\", spec: \"0x10\", value: \"new code trailing space test \" });\n assert.exists(queryResult);\n assert.equal(queryResult, id);\n const element = imodel.elements.getElement(id);\n assert.equal(element.code.value, \"new code trailing space test\");\n\n const elProps2: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code trailing space test2\\xa0\" },\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n\n const id2 = imodel.elements.insertElement(elProps2);\n assert.exists(id2);\n assert.isTrue(Id64.isValidId64(id2));\n\n const queryResult2 = imodel.elements.queryElementIdByCode({ scope: \"0x1\", spec: \"0x10\", value: \"new code trailing space test2\\xa0\" });\n assert.exists(queryResult2);\n assert.equal(queryResult2, id2);\n const element2 = imodel.elements.getElement(id2);\n assert.equal(element2.code.value, \"new code trailing space test2\");\n });\n\n it(\"should insert and trim an element with a code value that is only trailing spaces\", () => {\n assert.exists(imodel.elements);\n const elProps: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"0x1\", spec: \"0x10\", value: \" \" },\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n\n const id = imodel.elements.insertElement(elProps);\n assert.exists(id);\n assert.isTrue(Id64.isValidId64(id));\n\n const element = imodel.elements.getElement(id);\n assert.equal(element.code.value, \"\");\n\n const elProps2: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"0x1\", spec: \"0x10\", value: \"\\xa0\" },\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n\n const id2 = imodel.elements.insertElement(elProps2);\n assert.exists(id2);\n assert.isTrue(Id64.isValidId64(id2));\n\n const element2 = imodel.elements.getElement(id2);\n assert.equal(element2.code.value, \"\");\n });\n\n it(\"should fail to insert an element with invalid Code spec\", () => {\n assert.exists(imodel.elements);\n const elProps: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"0x1\", spec: \"0x34322\", value: \"new code\" }, // valid id, but element doesn't exist\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n\n expect(() => imodel.elements.insertElement(elProps)).throws(\"Error inserting element\").to.have.property(\"metadata\");\n // TODO: Non-ID values currently do not throw an error. This should be caught in TS\n // elProps.code.spec = \"not a spec in the model\"; // not an id\n // expect(() => imodel.elements.insertElement(elProps)).throws(\"Error inserting element\").to.have.property(\"metadata\");\n // elProps.code.spec = undefined as any; // nothing\n // expect(() => imodel.elements.insertElement(elProps)).throws(\"Error inserting element\").to.have.property(\"metadata\");\n });\n\n it(\"should fail to insert an element with a duplicate valid code\", () => {\n assert.exists(imodel.elements);\n const elProps: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code duplicate test\" },\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n\n const id = imodel.elements.insertElement(elProps);\n assert.exists(id);\n assert.isTrue(Id64.isValidId64(id));\n\n const elProps2: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code duplicate test\" },\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n\n expect(() => imodel.elements.insertElement(elProps2)).throws(\"Error inserting element\").to.have.property(\"metadata\");\n });\n });\n\n describe(\"Code Update Tests\", () => {\n it(\"should update an element code to a valid code\", () => {\n assert.exists(imodel.elements);\n const elProps: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode update\" },\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n const elementId = imodel.elements.insertElement(elProps);\n const element = imodel.elements.getElement(elementId);\n assert.equal(element.code.value, elProps.code.value);\n assert.equal(element.code.spec, elProps.code.spec);\n assert.equal(element.code.scope, elProps.code.scope);\n\n let newCode = new Code({ scope: \"0x1\", spec: \"0x10\", value: \"UpdatedValue.dgn2\" });\n element.code = newCode;\n element.update();\n\n const updatedElement = imodel.elements.getElement(elementId);\n assert.equal(updatedElement.code.value, newCode.value);\n assert.equal(updatedElement.code.spec, newCode.spec);\n assert.equal(updatedElement.code.scope, newCode.scope);\n\n newCode = new Code({ scope: \"0x12\", spec: \"0x11\", value: \"UpdatedValue.dgn2\" });\n element.code = newCode;\n element.update();\n\n const updatedElement2 = imodel.elements.getElement(elementId);\n assert.equal(updatedElement2.code.value, newCode.value);\n assert.equal(updatedElement2.code.spec, newCode.spec);\n assert.equal(updatedElement2.code.scope, newCode.scope);\n });\n\n it(\"should fail to update an element code to a duplicate valid code\", () => {\n assert.exists(imodel.elements);\n const elProps: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode3\" },\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n const elementId = imodel.elements.insertElement(elProps);\n const element = imodel.elements.getElement(elementId);\n assert.equal(element.code.value, elProps.code.value);\n assert.equal(element.code.spec, elProps.code.spec);\n assert.equal(element.code.scope, elProps.code.scope);\n\n const elProps2: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode32\" },\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n const elementId2 = imodel.elements.insertElement(elProps2);\n const element2 = imodel.elements.getElement(elementId2);\n assert.equal(element2.code.value, elProps2.code.value);\n assert.equal(element2.code.spec, elProps2.code.spec);\n assert.equal(element2.code.scope, elProps2.code.scope);\n\n element.code = element2.code;\n expect(() => element.update()).to.throw(\"Error updating element\").to.have.property(\"metadata\");\n });\n\n it(\"should update an element code with edge case code values\", () => {\n assert.exists(imodel.elements);\n const elProps: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode4\" },\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n const elementId = imodel.elements.insertElement(elProps);\n const element = imodel.elements.getElement(elementId);\n assert.equal(element.code.value, elProps.code.value);\n assert.equal(element.code.spec, elProps.code.spec);\n assert.equal(element.code.scope, elProps.code.scope);\n\n let newCode = new Code({ scope: \"0x1\", spec: \"0x10\", value: \"\" }); // empty value\n element.code = newCode;\n element.update();\n\n const updatedElement = imodel.elements.getElement(elementId);\n assert.equal(updatedElement.code.value, newCode.value);\n assert.equal(updatedElement.code.spec, newCode.spec);\n assert.equal(updatedElement.code.scope, newCode.scope);\n\n newCode = new Code({ scope: \"0x1\", spec: \"0x10\", value: \"validcodeagain\" }); // reset the code\n element.code = newCode;\n element.update();\n\n newCode = new Code({ scope: \"0x1\", spec: \"0x11\" }); // NULL value\n newCode.value = undefined as any;\n element.code = newCode;\n element.update();\n\n const updatedElement2 = imodel.elements.getElement(elementId);\n assert.equal(updatedElement2.code.value, \"\");\n assert.equal(updatedElement2.code.spec, newCode.spec);\n assert.equal(updatedElement2.code.scope, newCode.scope);\n\n newCode = Code.createEmpty(); // Empty Code\n element.code = newCode;\n element.update();\n\n const updatedElement3 = imodel.elements.getElement(elementId);\n assert.equal(updatedElement3.code.value, newCode.value);\n assert.equal(updatedElement3.code.spec, newCode.spec);\n assert.equal(updatedElement3.code.scope, newCode.scope);\n\n newCode = new Code({ scope: \"0x1\", spec: \"0x11\", value: \"\\xa0\" }); // non-breaking space value\n element.code = newCode;\n element.update();\n\n const updatedElement4 = imodel.elements.getElement(elementId);\n assert.equal(updatedElement4.code.value, \"\");\n assert.equal(updatedElement4.code.spec, newCode.spec);\n assert.equal(updatedElement4.code.scope, newCode.scope);\n });\n\n it(\"should fail to update an element code with an invalid code scope\", () => {\n assert.exists(imodel.elements);\n const elProps: ElementProps = {\n classFullName: 'BisCore:RepositoryLink',\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode5\" },\n id: '0x1e',\n model: '0x11',\n userLabel: 'RF1.dgn',\n federationGuid: undefined,\n };\n const elementId = imodel.elements.insertElement(elProps);\n const element = imodel.elements.getElement(elementId);\n assert.equal(element.code.value, elProps.code.value);\n assert.equal(element.code.spec, elProps.code.spec);\n assert.equal(element.code.scope, elProps.code.scope);\n\n let newCode = new Code({ scope: \"\", spec: \"0x10\", value: \"newcode5\" }); // empty scope\n element.code = newCode;\n expect(() => element.update()).to.throw(\"Error updating element\").to.have.property(\"metadata\");\n\n const updatedElement = imodel.elements.getElement(elementId);\n assert.equal(updatedElement.code.value, elProps.code.value);\n assert.equal(updatedElement.code.spec, elProps.code.spec);\n assert.equal(updatedElement.code.scope, elProps.code.scope);\n\n newCode = new Code({ scope: \"not a real id\", spec: \"0x10\", value: \"newcode5\" }); // bad id\n element.code = newCode;\n expect(() => element.update()).to.throw(\"Error updating element\").to.have.property(\"metadata\");\n\n const updatedElement2 = imodel.elements.getElement(elementId);\n assert.equal(updatedElement2.code.value, elProps.code.value);\n assert.equal(updatedElement2.code.spec, elProps.code.spec);\n assert.equal(updatedElement2.code.scope, elProps.code.scope);\n });\n });\n});"]}
|
|
1
|
+
{"version":3,"file":"Code.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/Code.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert, expect } from \"chai\";\r\nimport * as path from \"node:path\";\r\nimport { SnapshotDb } from \"../../core-backend\";\r\nimport { Code, ElementProps } from \"@itwin/core-common\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { KnownTestLocations } from \"../KnownTestLocations\";\r\nimport { Id64 } from \"@itwin/core-bentley\";\r\n\r\ndescribe(\"Code Tests\", () => {\r\n let imodel: SnapshotDb;\r\n\r\n before(async () => {\r\n IModelTestUtils.registerTestBimSchema();\r\n const seedFile = IModelTestUtils.resolveAssetFile(\"test.bim\");\r\n const snapshotFile = IModelTestUtils.prepareOutputFile(\"IModel\", \"test.bim\");\r\n imodel = IModelTestUtils.createSnapshotFromSeed(snapshotFile, seedFile);\r\n const schemaPathname = path.join(KnownTestLocations.assetsDir, \"TestBim.ecschema.xml\");\r\n await imodel.importSchemas([schemaPathname]);\r\n imodel.saveChanges();\r\n });\r\n\r\n after(() => {\r\n imodel.close();\r\n });\r\n\r\n describe(\"Code Query Tests\", () => {\r\n it(\"should query an element by code\", () => {\r\n assert.exists(imodel.elements);\r\n const code = new Code({ scope: \"0x11\", spec: \"0x10\", value: \"RF1.dgn\" });\r\n const elementId = imodel.elements.queryElementIdByCode(code);\r\n assert.exists(elementId);\r\n assert.equal(elementId, \"0x1e\");\r\n });\r\n\r\n it(\"should get undefined when querying an element with a bad code value\", () => {\r\n assert.exists(imodel.elements);\r\n const badCode = new Code({ scope: \"0x11\", spec: \"0x10\", value: \"RF1_does_not_exist.dgn\" });\r\n const elementId = imodel.elements.queryElementIdByCode(badCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should get undefined when querying an element with an empty code\", () => {\r\n assert.exists(imodel.elements);\r\n const emptyCode = Code.createEmpty();\r\n const elementId = imodel.elements.queryElementIdByCode(emptyCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should get undefined when querying an element with a non-breaking space value\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x11\", spec: \"0x10\", value: \"\\xa0\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id = imodel.elements.insertElement(elProps);\r\n assert.exists(id);\r\n assert.isTrue(Id64.isValidId64(id));\r\n\r\n const nonBreakingSpaceCode = new Code({ scope: \"0x11\", spec: \"0x10\", value: \"\\xa0\" });\r\n const elementId = imodel.elements.queryElementIdByCode(nonBreakingSpaceCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should throw when querying an element with a NULL value\", () => {\r\n assert.exists(imodel.elements);\r\n const nullValueCode = { scope: \"0x11\", spec: \"0x10\", value: undefined as any };\r\n expect(() => imodel.elements.queryElementIdByCode(nullValueCode)).to.throw(\"Invalid Code\");\r\n });\r\n\r\n it(\"should throw when querying an element with an empty spec\", () => {\r\n assert.exists(imodel.elements);\r\n const noSpecCode = new Code({ scope: \"0x11\", spec: \"\", value: \"RF1.dgn\" });\r\n expect(() => imodel.elements.queryElementIdByCode(noSpecCode)).to.throw(\"Invalid CodeSpec\");\r\n });\r\n\r\n it(\"should get undefined when querying an element with a whitespace string spec\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x11\", spec: \" \", value: \"RF1.dgn\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id = imodel.elements.insertElement(elProps);\r\n assert.exists(id);\r\n assert.isTrue(Id64.isValidId64(id));\r\n\r\n const whitespaceCode = { scope: \"0x11\", spec: \" \", value: \"RF1.dgn\" };\r\n const elementId = imodel.elements.queryElementIdByCode(whitespaceCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should get undefined when querying an element with a non-breaking space spec\", () => {\r\n assert.exists(imodel.elements);\r\n const nonBreakingSpaceCode = { scope: \"0x11\", spec: \"\\xa0\", value: \"RF1.dgn\" };\r\n const elementId = imodel.elements.queryElementIdByCode(nonBreakingSpaceCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should throw when querying an element with a bad spec\", () => {\r\n assert.exists(imodel.elements);\r\n const badSpecCode = new Code({ scope: \"0x11\", spec: \"not a real id\", value: \"RF1.dgn\" });\r\n expect(() => imodel.elements.queryElementIdByCode(badSpecCode)).to.throw(\"Invalid CodeSpec\");\r\n });\r\n\r\n it(\"should get undefined when querying for an element id with no scope\", () => {\r\n assert.exists(imodel.elements);\r\n const noScopeCode = new Code({ scope: \"\", spec: \"0x10\", value: \"RF1.dgn\" });\r\n const elementId = imodel.elements.queryElementIdByCode(noScopeCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should get undefined when querying for an element id with non-breaking space scope\", () => {\r\n assert.exists(imodel.elements);\r\n const nonBreakingSpaceCode = new Code({ scope: \"\\xa0\", spec: \"0x10\", value: \"RF1.dgn\" });\r\n const elementId = imodel.elements.queryElementIdByCode(nonBreakingSpaceCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should get undefined when querying for an element id with a bad scope\", () => {\r\n assert.exists(imodel.elements);\r\n const badScopeCode = new Code({ scope: \"not a real id\", spec: \"0x10\", value: \"RF1.dgn\" });\r\n const elementId = imodel.elements.queryElementIdByCode(badScopeCode);\r\n assert.isUndefined(elementId);\r\n });\r\n });\r\n\r\n describe(\"Code Insertion Tests\", () => {\r\n it(\"should insert an element with valid Code\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id = imodel.elements.insertElement(elProps);\r\n assert.exists(id);\r\n assert.isTrue(Id64.isValidId64(id));\r\n });\r\n\r\n it(\"should fail to insert an element with invalid Code scope\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"bad scope\", spec: \"0x10\", value: \"new code\" }, // invalid scope value\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n expect(() => imodel.elements.insertElement(elProps)).throws(\"invalid code scope\").to.have.property(\"metadata\");\r\n elProps.code.scope = \"0x34322\"; // valid id, but element doesn't exist\r\n expect(() => imodel.elements.insertElement(elProps)).throws(\"invalid code scope\").to.have.property(\"metadata\");\r\n elProps.code.scope = undefined as any; // nothing\r\n expect(() => imodel.elements.insertElement(elProps)).throws(\"invalid code scope\").to.have.property(\"metadata\");\r\n });\r\n\r\n it(\"should insert and trim an element with a code value with trailing spaces\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code trailing space test \" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id = imodel.elements.insertElement(elProps);\r\n assert.exists(id);\r\n assert.isTrue(Id64.isValidId64(id));\r\n\r\n const queryResult = imodel.elements.queryElementIdByCode({ scope: \"0x1\", spec: \"0x10\", value: \"new code trailing space test \" });\r\n assert.exists(queryResult);\r\n assert.equal(queryResult, id);\r\n const element = imodel.elements.getElement(id);\r\n assert.equal(element.code.value, \"new code trailing space test\");\r\n\r\n const elProps2: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code trailing space test2\\xa0\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id2 = imodel.elements.insertElement(elProps2);\r\n assert.exists(id2);\r\n assert.isTrue(Id64.isValidId64(id2));\r\n\r\n const queryResult2 = imodel.elements.queryElementIdByCode({ scope: \"0x1\", spec: \"0x10\", value: \"new code trailing space test2\\xa0\" });\r\n assert.exists(queryResult2);\r\n assert.equal(queryResult2, id2);\r\n const element2 = imodel.elements.getElement(id2);\r\n assert.equal(element2.code.value, \"new code trailing space test2\");\r\n });\r\n\r\n it(\"should insert and trim an element with a code value that is only trailing spaces\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \" \" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id = imodel.elements.insertElement(elProps);\r\n assert.exists(id);\r\n assert.isTrue(Id64.isValidId64(id));\r\n\r\n const element = imodel.elements.getElement(id);\r\n assert.equal(element.code.value, \"\");\r\n\r\n const elProps2: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"\\xa0\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id2 = imodel.elements.insertElement(elProps2);\r\n assert.exists(id2);\r\n assert.isTrue(Id64.isValidId64(id2));\r\n\r\n const element2 = imodel.elements.getElement(id2);\r\n assert.equal(element2.code.value, \"\");\r\n });\r\n\r\n it(\"should fail to insert an element with invalid Code spec\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x34322\", value: \"new code\" }, // valid id, but element doesn't exist\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n expect(() => imodel.elements.insertElement(elProps)).throws(\"Error inserting element\").to.have.property(\"metadata\");\r\n // TODO: Non-ID values currently do not throw an error. This should be caught in TS\r\n // elProps.code.spec = \"not a spec in the model\"; // not an id\r\n // expect(() => imodel.elements.insertElement(elProps)).throws(\"Error inserting element\").to.have.property(\"metadata\");\r\n // elProps.code.spec = undefined as any; // nothing\r\n // expect(() => imodel.elements.insertElement(elProps)).throws(\"Error inserting element\").to.have.property(\"metadata\");\r\n });\r\n\r\n it(\"should fail to insert an element with a duplicate valid code\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code duplicate test\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id = imodel.elements.insertElement(elProps);\r\n assert.exists(id);\r\n assert.isTrue(Id64.isValidId64(id));\r\n\r\n const elProps2: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code duplicate test\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n expect(() => imodel.elements.insertElement(elProps2)).throws(\"Error inserting element\").to.have.property(\"metadata\");\r\n });\r\n });\r\n\r\n describe(\"Code Update Tests\", () => {\r\n it(\"should update an element code to a valid code\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode update\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n const elementId = imodel.elements.insertElement(elProps);\r\n const element = imodel.elements.getElement(elementId);\r\n assert.equal(element.code.value, elProps.code.value);\r\n assert.equal(element.code.spec, elProps.code.spec);\r\n assert.equal(element.code.scope, elProps.code.scope);\r\n\r\n let newCode = new Code({ scope: \"0x1\", spec: \"0x10\", value: \"UpdatedValue.dgn2\" });\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement.code.value, newCode.value);\r\n assert.equal(updatedElement.code.spec, newCode.spec);\r\n assert.equal(updatedElement.code.scope, newCode.scope);\r\n\r\n newCode = new Code({ scope: \"0x12\", spec: \"0x11\", value: \"UpdatedValue.dgn2\" });\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement2 = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement2.code.value, newCode.value);\r\n assert.equal(updatedElement2.code.spec, newCode.spec);\r\n assert.equal(updatedElement2.code.scope, newCode.scope);\r\n });\r\n\r\n it(\"should fail to update an element code to a duplicate valid code\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode3\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n const elementId = imodel.elements.insertElement(elProps);\r\n const element = imodel.elements.getElement(elementId);\r\n assert.equal(element.code.value, elProps.code.value);\r\n assert.equal(element.code.spec, elProps.code.spec);\r\n assert.equal(element.code.scope, elProps.code.scope);\r\n\r\n const elProps2: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode32\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n const elementId2 = imodel.elements.insertElement(elProps2);\r\n const element2 = imodel.elements.getElement(elementId2);\r\n assert.equal(element2.code.value, elProps2.code.value);\r\n assert.equal(element2.code.spec, elProps2.code.spec);\r\n assert.equal(element2.code.scope, elProps2.code.scope);\r\n\r\n element.code = element2.code;\r\n expect(() => element.update()).to.throw(\"Error updating element\").to.have.property(\"metadata\");\r\n });\r\n\r\n it(\"should update an element code with edge case code values\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode4\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n const elementId = imodel.elements.insertElement(elProps);\r\n const element = imodel.elements.getElement(elementId);\r\n assert.equal(element.code.value, elProps.code.value);\r\n assert.equal(element.code.spec, elProps.code.spec);\r\n assert.equal(element.code.scope, elProps.code.scope);\r\n\r\n let newCode = new Code({ scope: \"0x1\", spec: \"0x10\", value: \"\" }); // empty value\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement.code.value, newCode.value);\r\n assert.equal(updatedElement.code.spec, newCode.spec);\r\n assert.equal(updatedElement.code.scope, newCode.scope);\r\n\r\n newCode = new Code({ scope: \"0x1\", spec: \"0x10\", value: \"validcodeagain\" }); // reset the code\r\n element.code = newCode;\r\n element.update();\r\n\r\n newCode = new Code({ scope: \"0x1\", spec: \"0x11\" }); // NULL value\r\n newCode.value = undefined as any;\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement2 = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement2.code.value, \"\");\r\n assert.equal(updatedElement2.code.spec, newCode.spec);\r\n assert.equal(updatedElement2.code.scope, newCode.scope);\r\n\r\n newCode = Code.createEmpty(); // Empty Code\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement3 = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement3.code.value, newCode.value);\r\n assert.equal(updatedElement3.code.spec, newCode.spec);\r\n assert.equal(updatedElement3.code.scope, newCode.scope);\r\n\r\n newCode = new Code({ scope: \"0x1\", spec: \"0x11\", value: \"\\xa0\" }); // non-breaking space value\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement4 = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement4.code.value, \"\");\r\n assert.equal(updatedElement4.code.spec, newCode.spec);\r\n assert.equal(updatedElement4.code.scope, newCode.scope);\r\n });\r\n\r\n it(\"should fail to update an element code with an invalid code scope\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode5\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n const elementId = imodel.elements.insertElement(elProps);\r\n const element = imodel.elements.getElement(elementId);\r\n assert.equal(element.code.value, elProps.code.value);\r\n assert.equal(element.code.spec, elProps.code.spec);\r\n assert.equal(element.code.scope, elProps.code.scope);\r\n\r\n let newCode = new Code({ scope: \"\", spec: \"0x10\", value: \"newcode5\" }); // empty scope\r\n element.code = newCode;\r\n expect(() => element.update()).to.throw(\"Error updating element\").to.have.property(\"metadata\");\r\n\r\n const updatedElement = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement.code.value, elProps.code.value);\r\n assert.equal(updatedElement.code.spec, elProps.code.spec);\r\n assert.equal(updatedElement.code.scope, elProps.code.scope);\r\n\r\n newCode = new Code({ scope: \"not a real id\", spec: \"0x10\", value: \"newcode5\" }); // bad id\r\n element.code = newCode;\r\n expect(() => element.update()).to.throw(\"Error updating element\").to.have.property(\"metadata\");\r\n\r\n const updatedElement2 = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement2.code.value, elProps.code.value);\r\n assert.equal(updatedElement2.code.spec, elProps.code.spec);\r\n assert.equal(updatedElement2.code.scope, elProps.code.scope);\r\n });\r\n });\r\n});"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElementTreeWalker.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/ElementTreeWalker.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { Id64, Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport { Code, GeometricElement2dProps, GeometricElementProps, IModel, SubCategoryAppearance } from \"@itwin/core-common\";\nimport { Point2d } from \"@itwin/core-geometry\";\nimport { assert } from \"chai\";\nimport * as path from \"path\";\nimport * as sinon from \"sinon\";\nimport { DefinitionContainer, DefinitionModel, DocumentListModel, Drawing, DrawingCategory, DrawingGraphic, ElementGroupsMembers, ElementOwnsChildElements, ExternalSource, ExternalSourceGroup, IModelDb, Model, PhysicalPartition, SnapshotDb, SpatialCategory, SubCategory, Subject } from \"../../core-backend\";\nimport { deleteElementSubTrees, deleteElementTree, ElementTreeBottomUp, ElementTreeWalkerScope } from \"../../ElementTreeWalker\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\n\n// Test class that collects the results of a bottom-up tree walk\nclass ElementTreeCollector extends ElementTreeBottomUp {\n public subModels: Id64Array = [];\n public definitionModels: Id64Array = [];\n public elements: Id64Array = [];\n public definitions: Id64Array = [];\n\n public constructor(iModel: IModelDb) { super(iModel); }\n\n public visitModel(model: Model, _scope: ElementTreeWalkerScope): void {\n if (model instanceof DefinitionModel)\n this.definitionModels.push(model.id);\n else\n this.subModels.push(model.id);\n }\n\n public visitElement(elementId: Id64String, scope: ElementTreeWalkerScope): void {\n if (scope.inDefinitionModel)\n this.definitions.push(elementId); // may be some other kind of InformationContentElement - that's OK.\n else\n this.elements.push(elementId);\n }\n\n public collect(topElement: Id64String): void {\n this.processElementTree(topElement, ElementTreeWalkerScope.createTopScope(this._iModel, topElement));\n }\n}\n\nclass SelectedElementCollector extends ElementTreeCollector {\n public constructor(iModel: IModelDb, private _elementsToReport: Id64Array) { super(iModel); }\n public override shouldExploreModel(_model: Model): boolean { return true; }\n public override shouldVisitModel(_model: Model): boolean { return false; }\n public override shouldVisitElement(elementId: Id64String): boolean { return this._elementsToReport.includes(elementId); }\n}\n\nfunction doesElementExist(iModel: IModelDb, elementId: Id64String): boolean {\n return iModel.elements.tryGetElementProps(elementId) !== undefined;\n}\n\nfunction doesModelExist(iModel: IModelDb, mid: Id64String): boolean {\n return iModel.models.tryGetModelProps(mid) !== undefined;\n}\n\nfunction doesGroupRelationshipExist(iModel: IModelDb, source: Id64String, target: Id64String): boolean {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return iModel.withPreparedStatement(`select count(*) from ${ElementGroupsMembers.classFullName} where sourceecinstanceid=? and targetecinstanceid=?`, (stmt) => {\n stmt.bindId(1, source);\n stmt.bindId(2, target);\n stmt.step();\n return stmt.getValue(0).getInteger() !== 0;\n });\n}\n\ndescribe(\"ElementTreeWalker\", () => {\n let iModel: SnapshotDb;\n let originalEnv: any;\n\n let repositoryLinkId: Id64String;\n let jobSubjectId: Id64String;\n let childSubject: Id64String;\n let definitionModelId: Id64String;\n let definitionContainerId: Id64String;\n let drawingDefinitionModelId: Id64String;\n let spatialCategoryId: Id64String;\n let nestedSpatialCategoryId: Id64String;\n let drawingCategoryId: Id64String;\n let drawingSubCategory1Id: Id64String;\n let drawingSubCategory2Id: Id64String;\n let xsGroup: Id64String;\n let xsElement: Id64String;\n let documentListModelId: Id64String;\n let drawingModelId: Id64String;\n let drawingGraphicId1: Id64String;\n let physicalModelId: Id64String;\n let physicalObjectId1: Id64String;\n let physicalObjectId2: Id64String;\n let physicalObjectId3: Id64String;\n\n before(async () => {\n originalEnv = { ...process.env };\n\n IModelTestUtils.registerTestBimSchema();\n });\n\n after(() => {\n process.env = originalEnv;\n });\n\n beforeEach(async () => {\n // Uncomment the following two lines to debug test failures\n // Logger.initializeToConsole();\n // Logger.setLevel(\"core-backend.IModelDb.ElementTreeWalker\", LogLevel.Trace);\n\n const iModelFileName = IModelTestUtils.prepareOutputFile(\"ElementTreeWalker\", \"Test.bim\");\n iModel = SnapshotDb.createEmpty(iModelFileName, { rootSubject: { name: \"ElementTreeWalker Test\" } });\n const schemaPathname = path.join(KnownTestLocations.assetsDir, \"TestBim.ecschema.xml\");\n await iModel.importSchemas([schemaPathname]); // will throw an exception if import fails\n\n /*\n [RepositoryModel]\n RepositoryLink\n Job Subject\n +- DefinitionParitition -- [DefinitionModel]\n | DrawingCategory\n | default SubCategory + 2 non-default SubCategories\n | ExternalSourceGroup\n | ExternalSource child1\n +- DefinitionParitition -- [DefinitionModel]\n | SpatialCategory\n | DefinitionContainer\n | SpatialCategory\n |\n +- DocumentList -- [DocumentListModel]\n | Drawing -- [DrawingModel]\n | DrawingGraphic\n +- Child Subject\n |\n +- PhysicalPartition -- [PhysicalModel]\n PhysicalObject, PhysicalObject, PhysicalObject (grouped)\n */\n\n repositoryLinkId = IModelTestUtils.insertRepositoryLink(iModel, \"test link\", \"foo\", \"bar\");\n jobSubjectId = IModelTestUtils.createJobSubjectElement(iModel, \"Job\").insert();\n\n childSubject = Subject.insert(iModel, jobSubjectId, \"Child Subject\");\n\n definitionModelId = DefinitionModel.insert(iModel, jobSubjectId, \"Definition\");\n spatialCategoryId = SpatialCategory.insert(iModel, definitionModelId, \"SpatialCategory\", new SubCategoryAppearance());\n drawingDefinitionModelId = DefinitionModel.insert(iModel, jobSubjectId, \"DrawingDefinition\");\n drawingCategoryId = DrawingCategory.insert(iModel, drawingDefinitionModelId, \"DrawingCategory\", new SubCategoryAppearance());\n drawingSubCategory1Id = SubCategory.insert(iModel, drawingCategoryId, \"SubCategory1\", new SubCategoryAppearance());\n drawingSubCategory2Id = SubCategory.insert(iModel, drawingCategoryId, \"SubCategory2\", new SubCategoryAppearance());\n\n definitionContainerId = DefinitionContainer.insert(iModel, definitionModelId, Code.createEmpty());\n nestedSpatialCategoryId = SpatialCategory.insert(iModel, definitionContainerId, \"nested\", {});\n\n xsGroup = iModel.elements.insertElement({ classFullName: ExternalSourceGroup.classFullName, model: drawingDefinitionModelId, code: Code.createEmpty() });\n xsElement = iModel.elements.insertElement({ classFullName: ExternalSource.classFullName, model: drawingDefinitionModelId, parent: new ElementOwnsChildElements(xsGroup), code: Code.createEmpty() });\n\n documentListModelId = DocumentListModel.insert(iModel, jobSubjectId, \"Document\");\n assert.isTrue(Id64.isValidId64(documentListModelId));\n drawingModelId = Drawing.insert(iModel, documentListModelId, \"Drawing\");\n const drawingGraphicProps1: GeometricElement2dProps = {\n classFullName: DrawingGraphic.classFullName,\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n userLabel: \"DrawingGraphic1\",\n geom: IModelTestUtils.createRectangle(Point2d.create(1, 1)),\n placement: { origin: Point2d.create(2, 2), angle: 0 },\n };\n drawingGraphicId1 = iModel.elements.insertElement(drawingGraphicProps1);\n\n [, physicalModelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(iModel, PhysicalPartition.createCode(iModel, childSubject, \"Physical\"), false, childSubject);\n const elementProps: GeometricElementProps = {\n classFullName: \"TestBim:TestPhysicalObject\",\n model: physicalModelId,\n category: spatialCategoryId,\n code: Code.createEmpty(),\n };\n const elementProps2: GeometricElementProps = {\n classFullName: \"TestBim:TestPhysicalObject\",\n model: physicalModelId,\n category: nestedSpatialCategoryId,\n code: Code.createEmpty(),\n };\n physicalObjectId1 = iModel.elements.insertElement(iModel.elements.createElement(elementProps).toJSON());\n physicalObjectId2 = iModel.elements.insertElement(iModel.elements.createElement(elementProps2).toJSON());\n physicalObjectId3 = iModel.elements.insertElement(iModel.elements.createElement(elementProps).toJSON());\n ElementGroupsMembers.create(iModel, physicalObjectId1, physicalObjectId2).insert();\n ElementGroupsMembers.create(iModel, physicalObjectId1, physicalObjectId3).insert();\n\n assert.isTrue(doesElementExist(iModel, repositoryLinkId));\n assert.equal(iModel.elements.getElement(jobSubjectId).parent?.id, IModel.rootSubjectId);\n assert.equal(iModel.elements.getElement(definitionModelId).parent?.id, jobSubjectId);\n assert.equal(iModel.elements.getElement(definitionContainerId).model, definitionModelId);\n assert.equal(iModel.elements.getElement(spatialCategoryId).model, definitionModelId);\n assert.equal(iModel.elements.getElement(nestedSpatialCategoryId).model, definitionContainerId);\n assert.equal(iModel.elements.getElement(drawingDefinitionModelId).parent?.id, jobSubjectId);\n assert.equal(iModel.elements.getElement(drawingCategoryId).model, drawingDefinitionModelId);\n assert.equal(iModel.elements.getElement(drawingSubCategory1Id).parent?.id, drawingCategoryId);\n assert.equal(iModel.elements.getElement(drawingSubCategory2Id).parent?.id, drawingCategoryId);\n assert.equal(iModel.elements.getElement(xsGroup).model, drawingDefinitionModelId);\n assert.equal(iModel.elements.getElement(xsElement).parent?.id, xsGroup);\n assert.equal(iModel.elements.getElement(documentListModelId).parent?.id, jobSubjectId);\n assert.equal(iModel.elements.getElement(drawingModelId).model, documentListModelId);\n assert.equal(iModel.elements.getElement(drawingGraphicId1).model, drawingModelId);\n assert.equal(iModel.elements.getElement(physicalModelId).parent?.id, childSubject);\n assert.equal(iModel.elements.getElement(physicalObjectId1).model, physicalModelId);\n assert.equal(iModel.elements.getElement(physicalObjectId2).model, physicalModelId);\n assert.equal(iModel.elements.getElement(physicalObjectId3).model, physicalModelId);\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\n assert.isTrue(doesModelExist(iModel, definitionModelId));\n assert.isTrue(doesModelExist(iModel, definitionContainerId));\n assert.isTrue(doesModelExist(iModel, drawingDefinitionModelId));\n assert.isTrue(doesModelExist(iModel, drawingModelId));\n assert.isTrue(doesModelExist(iModel, physicalModelId));\n });\n\n afterEach(() => {\n sinon.restore();\n iModel.close();\n });\n\n it(\"DFS search and deleteElementTree\", () => {\n // First, check that DFS search visits elements and models in expected bottom-up order\n {\n const collector1 = new ElementTreeCollector(iModel);\n collector1.collect(jobSubjectId);\n assert.isTrue(collector1.subModels.includes(physicalModelId));\n assert.isTrue(collector1.subModels.includes(drawingModelId));\n assert.isTrue(collector1.subModels.includes(documentListModelId));\n assert.isTrue(collector1.subModels.indexOf(drawingModelId) < collector1.subModels.indexOf(documentListModelId), \"in bottom-up search, a child model should be visited before its parent model\");\n assert.isFalse(collector1.subModels.includes(definitionModelId));\n assert.isTrue(collector1.definitionModels.includes(definitionModelId));\n assert.isFalse(collector1.subModels.includes(definitionContainerId));\n assert.isTrue(collector1.definitionModels.includes(definitionContainerId));\n assert.isFalse(collector1.subModels.includes(drawingDefinitionModelId));\n assert.isTrue(collector1.definitionModels.includes(drawingDefinitionModelId));\n assert.isTrue(collector1.definitions.includes(drawingCategoryId));\n assert.isTrue(collector1.definitions.includes(spatialCategoryId));\n assert.isTrue(collector1.definitions.includes(nestedSpatialCategoryId));\n assert.isFalse(collector1.elements.includes(drawingCategoryId));\n assert.isFalse(collector1.elements.includes(spatialCategoryId));\n assert.isFalse(collector1.elements.includes(nestedSpatialCategoryId));\n assert.isTrue(collector1.elements.indexOf(physicalObjectId1) < collector1.elements.indexOf(physicalModelId), \"in bottom-up search, an element in a model should be visited before its model's element\");\n assert.isTrue(collector1.elements.indexOf(drawingGraphicId1) < collector1.elements.indexOf(drawingModelId), \"in bottom-up search, an element in a model should be visited before its model's element\");\n assert.isTrue(collector1.elements.indexOf(drawingModelId) < collector1.elements.indexOf(documentListModelId), \"in bottom-up search, an element in a model should be visited before its model's element\");\n assert.isTrue(collector1.elements.indexOf(documentListModelId) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\n assert.isTrue(collector1.elements.indexOf(definitionModelId) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\n assert.isTrue(collector1.elements.indexOf(definitionContainerId) < collector1.elements.indexOf(definitionModelId), \"in bottom-up search, a child element should be visited before its parent element\");\n assert.isTrue(collector1.elements.indexOf(drawingDefinitionModelId) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\n assert.isTrue(collector1.elements.indexOf(childSubject) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\n assert.isTrue(collector1.elements.indexOf(physicalModelId) < collector1.elements.indexOf(childSubject), \"in bottom-up search, a child element should be visited before its parent element\");\n }\n\n // Exercise the search filters\n {\n const collector2 = new SelectedElementCollector(iModel, [drawingGraphicId1, spatialCategoryId, nestedSpatialCategoryId, physicalObjectId3]);\n collector2.collect(jobSubjectId);\n assert.isTrue(collector2.definitions.length === 2);\n assert.isTrue(collector2.definitions.includes(spatialCategoryId));\n assert.isTrue(collector2.definitions.includes(nestedSpatialCategoryId));\n assert.isTrue(collector2.elements.length === 2);\n assert.isTrue(collector2.elements.includes(drawingGraphicId1));\n assert.isTrue(collector2.elements.includes(physicalObjectId3));\n }\n\n // Test the deleteElementTree function\n deleteElementTree(iModel, jobSubjectId);\n\n assert.isTrue(doesModelExist(iModel, IModel.repositoryModelId));\n assert.isTrue(doesModelExist(iModel, IModel.dictionaryId));\n assert.isTrue(doesElementExist(iModel, repositoryLinkId), \"RepositoryLink should not have been deleted, since it is not under Job Subject\");\n assert.isFalse(doesElementExist(iModel, definitionModelId));\n assert.isFalse(doesElementExist(iModel, definitionContainerId));\n assert.isFalse(doesElementExist(iModel, drawingDefinitionModelId));\n assert.isFalse(doesElementExist(iModel, spatialCategoryId));\n assert.isFalse(doesElementExist(iModel, nestedSpatialCategoryId));\n assert.isFalse(doesElementExist(iModel, drawingCategoryId));\n assert.isFalse(doesElementExist(iModel, xsGroup));\n assert.isFalse(doesElementExist(iModel, xsElement));\n assert.isFalse(doesElementExist(iModel, documentListModelId));\n assert.isFalse(doesElementExist(iModel, drawingModelId));\n assert.isFalse(doesElementExist(iModel, drawingGraphicId1));\n assert.isFalse(doesElementExist(iModel, physicalModelId));\n assert.isFalse(doesElementExist(iModel, physicalObjectId1));\n assert.isFalse(doesElementExist(iModel, physicalObjectId2));\n assert.isFalse(doesElementExist(iModel, physicalObjectId3));\n assert.isFalse(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\n assert.isFalse(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\n assert.isFalse(doesElementExist(iModel, jobSubjectId));\n assert.isFalse(doesModelExist(iModel, definitionModelId));\n assert.isFalse(doesModelExist(iModel, drawingDefinitionModelId));\n assert.isFalse(doesModelExist(iModel, drawingModelId));\n assert.isFalse(doesModelExist(iModel, physicalModelId));\n });\n\n it(\"deleteElementSubTrees\", () => {\n /*\n [RepositoryModel]\n RepositoryLink\n Job Subject\n +- DefinitionParitition -- [DefinitionModel]\n | DrawingCategory <-- PRUNE\n | default SubCategory + 2 non-default SubCategories\n | ExternalSourceGroup\n | ExternalSource child1\n +- DefinitionParitition -- [DefinitionModel]\n | SpatialCategory\n | DefinitionContainer\n | SpatialCategory\n |\n +- DocumentList -- [DocumentListModel]\n | Drawing -- [DrawingModel] <-- PRUNE\n | DrawingGraphic \"\n +- Child Subject\n |\n +- PhysicalPartition -- [PhysicalModel]\n PhysicalObject, PhysicalObject, PhysicalObject (grouped)\n ^-- PRUNE\n */\n\n const toPrune = new Set<string>();\n toPrune.add(drawingModelId);\n toPrune.add(drawingCategoryId);\n toPrune.add(physicalObjectId3);\n\n deleteElementSubTrees(iModel, jobSubjectId, (elementId) => toPrune.has(elementId));\n\n assert.isFalse(doesElementExist(iModel, drawingCategoryId));\n assert.isFalse(doesElementExist(iModel, drawingSubCategory1Id));\n assert.isFalse(doesElementExist(iModel, drawingSubCategory2Id));\n assert.isFalse(doesElementExist(iModel, drawingModelId));\n assert.isFalse(doesModelExist(iModel, drawingModelId));\n assert.isFalse(doesElementExist(iModel, drawingGraphicId1)); // contents of drawing model should be gone\n assert.isFalse(doesElementExist(iModel, physicalObjectId3));\n assert.isFalse(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\n\n assert.isTrue(doesElementExist(iModel, repositoryLinkId));\n assert.isTrue(doesElementExist(iModel, definitionModelId));\n assert.isTrue(doesElementExist(iModel, definitionContainerId));\n assert.isTrue(doesElementExist(iModel, drawingDefinitionModelId));\n assert.equal(iModel.elements.getElement(xsGroup).model, drawingDefinitionModelId);\n assert.equal(iModel.elements.getElement(xsElement).parent?.id, xsGroup);\n assert.isTrue(doesElementExist(iModel, spatialCategoryId));\n assert.isTrue(doesElementExist(iModel, nestedSpatialCategoryId));\n assert.isTrue(doesElementExist(iModel, documentListModelId));\n assert.isTrue(doesElementExist(iModel, physicalModelId));\n assert.isTrue(doesElementExist(iModel, physicalObjectId1));\n assert.isTrue(doesElementExist(iModel, physicalObjectId2));\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\n assert.isTrue(doesElementExist(iModel, jobSubjectId));\n assert.isTrue(doesModelExist(iModel, definitionModelId));\n assert.isTrue(doesModelExist(iModel, definitionContainerId));\n assert.isTrue(doesModelExist(iModel, drawingDefinitionModelId));\n assert.isTrue(doesModelExist(iModel, physicalModelId));\n assert.isTrue(doesModelExist(iModel, IModel.repositoryModelId));\n assert.isTrue(doesModelExist(iModel, IModel.dictionaryId));\n });\n\n it(\"deleteDefinitionPartition\", () => {\n /*\n [RepositoryModel]\n RepositoryLink\n Job Subject\n +- DefinitionParitition -- [DefinitionModel] <-- PRUNE\n | DrawingCategory\n | default SubCategory + 2 non-default SubCategories\n | ExternalSourceGroup\n | ExternalSource child1\n +- DefinitionParitition -- [DefinitionModel]\n | SpatialCategory\n | DefinitionContainer\n | SpatialCategory |\n +- DocumentList -- [DocumentListModel]\n | Drawing -- [DrawingModel]\n | DrawingGraphic\n +- Child Subject\n |\n +- PhysicalPartition -- [PhysicalModel]\n PhysicalObject, PhysicalObject, PhysicalObject (grouped)\n */\n\n const toPrune = new Set<string>();\n toPrune.add(drawingDefinitionModelId);\n toPrune.add(documentListModelId); // (also get rid of the elements that use the definitions)\n\n deleteElementSubTrees(iModel, jobSubjectId, (elementId) => toPrune.has(elementId));\n\n assert.isFalse(doesElementExist(iModel, drawingDefinitionModelId));\n assert.isFalse(doesModelExist(iModel, drawingDefinitionModelId));\n assert.isFalse(doesElementExist(iModel, drawingCategoryId));\n assert.isFalse(doesElementExist(iModel, drawingSubCategory1Id));\n assert.isFalse(doesElementExist(iModel, drawingSubCategory2Id));\n assert.isFalse(doesElementExist(iModel, xsGroup));\n assert.isFalse(doesElementExist(iModel, xsElement));\n assert.isFalse(doesElementExist(iModel, documentListModelId));\n assert.isFalse(doesModelExist(iModel, documentListModelId));\n assert.isFalse(doesElementExist(iModel, drawingModelId));\n assert.isFalse(doesModelExist(iModel, drawingModelId));\n assert.isFalse(doesElementExist(iModel, drawingGraphicId1));\n\n assert.isTrue(doesElementExist(iModel, repositoryLinkId));\n assert.isTrue(doesElementExist(iModel, definitionModelId));\n assert.isTrue(doesElementExist(iModel, definitionContainerId));\n assert.isTrue(doesElementExist(iModel, spatialCategoryId));\n assert.isTrue(doesElementExist(iModel, nestedSpatialCategoryId));\n assert.isTrue(doesElementExist(iModel, physicalModelId));\n assert.isTrue(doesElementExist(iModel, physicalObjectId1));\n assert.isTrue(doesElementExist(iModel, physicalObjectId2));\n assert.isTrue(doesElementExist(iModel, physicalObjectId3));\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\n assert.isTrue(doesElementExist(iModel, jobSubjectId));\n assert.isTrue(doesModelExist(iModel, definitionModelId));\n assert.isTrue(doesModelExist(iModel, definitionContainerId));\n assert.isTrue(doesModelExist(iModel, physicalModelId));\n assert.isTrue(doesModelExist(iModel, IModel.repositoryModelId));\n assert.isTrue(doesModelExist(iModel, IModel.dictionaryId));\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"ElementTreeWalker.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/ElementTreeWalker.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { Id64, Id64Array, Id64String } from \"@itwin/core-bentley\";\r\nimport { Code, GeometricElement2dProps, GeometricElementProps, IModel, SubCategoryAppearance } from \"@itwin/core-common\";\r\nimport { Point2d } from \"@itwin/core-geometry\";\r\nimport { assert } from \"chai\";\r\nimport * as path from \"path\";\r\nimport * as sinon from \"sinon\";\r\nimport { DefinitionContainer, DefinitionModel, DocumentListModel, Drawing, DrawingCategory, DrawingGraphic, ElementGroupsMembers, ElementOwnsChildElements, ExternalSource, ExternalSourceGroup, IModelDb, Model, PhysicalPartition, SnapshotDb, SpatialCategory, SubCategory, Subject } from \"../../core-backend\";\r\nimport { deleteElementSubTrees, deleteElementTree, ElementTreeBottomUp, ElementTreeWalkerScope } from \"../../ElementTreeWalker\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { KnownTestLocations } from \"../KnownTestLocations\";\r\n\r\n// Test class that collects the results of a bottom-up tree walk\r\nclass ElementTreeCollector extends ElementTreeBottomUp {\r\n public subModels: Id64Array = [];\r\n public definitionModels: Id64Array = [];\r\n public elements: Id64Array = [];\r\n public definitions: Id64Array = [];\r\n\r\n public constructor(iModel: IModelDb) { super(iModel); }\r\n\r\n public visitModel(model: Model, _scope: ElementTreeWalkerScope): void {\r\n if (model instanceof DefinitionModel)\r\n this.definitionModels.push(model.id);\r\n else\r\n this.subModels.push(model.id);\r\n }\r\n\r\n public visitElement(elementId: Id64String, scope: ElementTreeWalkerScope): void {\r\n if (scope.inDefinitionModel)\r\n this.definitions.push(elementId); // may be some other kind of InformationContentElement - that's OK.\r\n else\r\n this.elements.push(elementId);\r\n }\r\n\r\n public collect(topElement: Id64String): void {\r\n this.processElementTree(topElement, ElementTreeWalkerScope.createTopScope(this._iModel, topElement));\r\n }\r\n}\r\n\r\nclass SelectedElementCollector extends ElementTreeCollector {\r\n public constructor(iModel: IModelDb, private _elementsToReport: Id64Array) { super(iModel); }\r\n public override shouldExploreModel(_model: Model): boolean { return true; }\r\n public override shouldVisitModel(_model: Model): boolean { return false; }\r\n public override shouldVisitElement(elementId: Id64String): boolean { return this._elementsToReport.includes(elementId); }\r\n}\r\n\r\nfunction doesElementExist(iModel: IModelDb, elementId: Id64String): boolean {\r\n return iModel.elements.tryGetElementProps(elementId) !== undefined;\r\n}\r\n\r\nfunction doesModelExist(iModel: IModelDb, mid: Id64String): boolean {\r\n return iModel.models.tryGetModelProps(mid) !== undefined;\r\n}\r\n\r\nfunction doesGroupRelationshipExist(iModel: IModelDb, source: Id64String, target: Id64String): boolean {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n return iModel.withPreparedStatement(`select count(*) from ${ElementGroupsMembers.classFullName} where sourceecinstanceid=? and targetecinstanceid=?`, (stmt) => {\r\n stmt.bindId(1, source);\r\n stmt.bindId(2, target);\r\n stmt.step();\r\n return stmt.getValue(0).getInteger() !== 0;\r\n });\r\n}\r\n\r\ndescribe(\"ElementTreeWalker\", () => {\r\n let iModel: SnapshotDb;\r\n let originalEnv: any;\r\n\r\n let repositoryLinkId: Id64String;\r\n let jobSubjectId: Id64String;\r\n let childSubject: Id64String;\r\n let definitionModelId: Id64String;\r\n let definitionContainerId: Id64String;\r\n let drawingDefinitionModelId: Id64String;\r\n let spatialCategoryId: Id64String;\r\n let nestedSpatialCategoryId: Id64String;\r\n let drawingCategoryId: Id64String;\r\n let drawingSubCategory1Id: Id64String;\r\n let drawingSubCategory2Id: Id64String;\r\n let xsGroup: Id64String;\r\n let xsElement: Id64String;\r\n let documentListModelId: Id64String;\r\n let drawingModelId: Id64String;\r\n let drawingGraphicId1: Id64String;\r\n let physicalModelId: Id64String;\r\n let physicalObjectId1: Id64String;\r\n let physicalObjectId2: Id64String;\r\n let physicalObjectId3: Id64String;\r\n\r\n before(async () => {\r\n originalEnv = { ...process.env };\r\n\r\n IModelTestUtils.registerTestBimSchema();\r\n });\r\n\r\n after(() => {\r\n process.env = originalEnv;\r\n });\r\n\r\n beforeEach(async () => {\r\n // Uncomment the following two lines to debug test failures\r\n // Logger.initializeToConsole();\r\n // Logger.setLevel(\"core-backend.IModelDb.ElementTreeWalker\", LogLevel.Trace);\r\n\r\n const iModelFileName = IModelTestUtils.prepareOutputFile(\"ElementTreeWalker\", \"Test.bim\");\r\n iModel = SnapshotDb.createEmpty(iModelFileName, { rootSubject: { name: \"ElementTreeWalker Test\" } });\r\n const schemaPathname = path.join(KnownTestLocations.assetsDir, \"TestBim.ecschema.xml\");\r\n await iModel.importSchemas([schemaPathname]); // will throw an exception if import fails\r\n\r\n /*\r\n [RepositoryModel]\r\n RepositoryLink\r\n Job Subject\r\n +- DefinitionParitition -- [DefinitionModel]\r\n | DrawingCategory\r\n | default SubCategory + 2 non-default SubCategories\r\n | ExternalSourceGroup\r\n | ExternalSource child1\r\n +- DefinitionParitition -- [DefinitionModel]\r\n | SpatialCategory\r\n | DefinitionContainer\r\n | SpatialCategory\r\n |\r\n +- DocumentList -- [DocumentListModel]\r\n | Drawing -- [DrawingModel]\r\n | DrawingGraphic\r\n +- Child Subject\r\n |\r\n +- PhysicalPartition -- [PhysicalModel]\r\n PhysicalObject, PhysicalObject, PhysicalObject (grouped)\r\n */\r\n\r\n repositoryLinkId = IModelTestUtils.insertRepositoryLink(iModel, \"test link\", \"foo\", \"bar\");\r\n jobSubjectId = IModelTestUtils.createJobSubjectElement(iModel, \"Job\").insert();\r\n\r\n childSubject = Subject.insert(iModel, jobSubjectId, \"Child Subject\");\r\n\r\n definitionModelId = DefinitionModel.insert(iModel, jobSubjectId, \"Definition\");\r\n spatialCategoryId = SpatialCategory.insert(iModel, definitionModelId, \"SpatialCategory\", new SubCategoryAppearance());\r\n drawingDefinitionModelId = DefinitionModel.insert(iModel, jobSubjectId, \"DrawingDefinition\");\r\n drawingCategoryId = DrawingCategory.insert(iModel, drawingDefinitionModelId, \"DrawingCategory\", new SubCategoryAppearance());\r\n drawingSubCategory1Id = SubCategory.insert(iModel, drawingCategoryId, \"SubCategory1\", new SubCategoryAppearance());\r\n drawingSubCategory2Id = SubCategory.insert(iModel, drawingCategoryId, \"SubCategory2\", new SubCategoryAppearance());\r\n\r\n definitionContainerId = DefinitionContainer.insert(iModel, definitionModelId, Code.createEmpty());\r\n nestedSpatialCategoryId = SpatialCategory.insert(iModel, definitionContainerId, \"nested\", {});\r\n\r\n xsGroup = iModel.elements.insertElement({ classFullName: ExternalSourceGroup.classFullName, model: drawingDefinitionModelId, code: Code.createEmpty() });\r\n xsElement = iModel.elements.insertElement({ classFullName: ExternalSource.classFullName, model: drawingDefinitionModelId, parent: new ElementOwnsChildElements(xsGroup), code: Code.createEmpty() });\r\n\r\n documentListModelId = DocumentListModel.insert(iModel, jobSubjectId, \"Document\");\r\n assert.isTrue(Id64.isValidId64(documentListModelId));\r\n drawingModelId = Drawing.insert(iModel, documentListModelId, \"Drawing\");\r\n const drawingGraphicProps1: GeometricElement2dProps = {\r\n classFullName: DrawingGraphic.classFullName,\r\n model: drawingModelId,\r\n category: drawingCategoryId,\r\n code: Code.createEmpty(),\r\n userLabel: \"DrawingGraphic1\",\r\n geom: IModelTestUtils.createRectangle(Point2d.create(1, 1)),\r\n placement: { origin: Point2d.create(2, 2), angle: 0 },\r\n };\r\n drawingGraphicId1 = iModel.elements.insertElement(drawingGraphicProps1);\r\n\r\n [, physicalModelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(iModel, PhysicalPartition.createCode(iModel, childSubject, \"Physical\"), false, childSubject);\r\n const elementProps: GeometricElementProps = {\r\n classFullName: \"TestBim:TestPhysicalObject\",\r\n model: physicalModelId,\r\n category: spatialCategoryId,\r\n code: Code.createEmpty(),\r\n };\r\n const elementProps2: GeometricElementProps = {\r\n classFullName: \"TestBim:TestPhysicalObject\",\r\n model: physicalModelId,\r\n category: nestedSpatialCategoryId,\r\n code: Code.createEmpty(),\r\n };\r\n physicalObjectId1 = iModel.elements.insertElement(iModel.elements.createElement(elementProps).toJSON());\r\n physicalObjectId2 = iModel.elements.insertElement(iModel.elements.createElement(elementProps2).toJSON());\r\n physicalObjectId3 = iModel.elements.insertElement(iModel.elements.createElement(elementProps).toJSON());\r\n ElementGroupsMembers.create(iModel, physicalObjectId1, physicalObjectId2).insert();\r\n ElementGroupsMembers.create(iModel, physicalObjectId1, physicalObjectId3).insert();\r\n\r\n assert.isTrue(doesElementExist(iModel, repositoryLinkId));\r\n assert.equal(iModel.elements.getElement(jobSubjectId).parent?.id, IModel.rootSubjectId);\r\n assert.equal(iModel.elements.getElement(definitionModelId).parent?.id, jobSubjectId);\r\n assert.equal(iModel.elements.getElement(definitionContainerId).model, definitionModelId);\r\n assert.equal(iModel.elements.getElement(spatialCategoryId).model, definitionModelId);\r\n assert.equal(iModel.elements.getElement(nestedSpatialCategoryId).model, definitionContainerId);\r\n assert.equal(iModel.elements.getElement(drawingDefinitionModelId).parent?.id, jobSubjectId);\r\n assert.equal(iModel.elements.getElement(drawingCategoryId).model, drawingDefinitionModelId);\r\n assert.equal(iModel.elements.getElement(drawingSubCategory1Id).parent?.id, drawingCategoryId);\r\n assert.equal(iModel.elements.getElement(drawingSubCategory2Id).parent?.id, drawingCategoryId);\r\n assert.equal(iModel.elements.getElement(xsGroup).model, drawingDefinitionModelId);\r\n assert.equal(iModel.elements.getElement(xsElement).parent?.id, xsGroup);\r\n assert.equal(iModel.elements.getElement(documentListModelId).parent?.id, jobSubjectId);\r\n assert.equal(iModel.elements.getElement(drawingModelId).model, documentListModelId);\r\n assert.equal(iModel.elements.getElement(drawingGraphicId1).model, drawingModelId);\r\n assert.equal(iModel.elements.getElement(physicalModelId).parent?.id, childSubject);\r\n assert.equal(iModel.elements.getElement(physicalObjectId1).model, physicalModelId);\r\n assert.equal(iModel.elements.getElement(physicalObjectId2).model, physicalModelId);\r\n assert.equal(iModel.elements.getElement(physicalObjectId3).model, physicalModelId);\r\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\r\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\r\n assert.isTrue(doesModelExist(iModel, definitionModelId));\r\n assert.isTrue(doesModelExist(iModel, definitionContainerId));\r\n assert.isTrue(doesModelExist(iModel, drawingDefinitionModelId));\r\n assert.isTrue(doesModelExist(iModel, drawingModelId));\r\n assert.isTrue(doesModelExist(iModel, physicalModelId));\r\n });\r\n\r\n afterEach(() => {\r\n sinon.restore();\r\n iModel.close();\r\n });\r\n\r\n it(\"DFS search and deleteElementTree\", () => {\r\n // First, check that DFS search visits elements and models in expected bottom-up order\r\n {\r\n const collector1 = new ElementTreeCollector(iModel);\r\n collector1.collect(jobSubjectId);\r\n assert.isTrue(collector1.subModels.includes(physicalModelId));\r\n assert.isTrue(collector1.subModels.includes(drawingModelId));\r\n assert.isTrue(collector1.subModels.includes(documentListModelId));\r\n assert.isTrue(collector1.subModels.indexOf(drawingModelId) < collector1.subModels.indexOf(documentListModelId), \"in bottom-up search, a child model should be visited before its parent model\");\r\n assert.isFalse(collector1.subModels.includes(definitionModelId));\r\n assert.isTrue(collector1.definitionModels.includes(definitionModelId));\r\n assert.isFalse(collector1.subModels.includes(definitionContainerId));\r\n assert.isTrue(collector1.definitionModels.includes(definitionContainerId));\r\n assert.isFalse(collector1.subModels.includes(drawingDefinitionModelId));\r\n assert.isTrue(collector1.definitionModels.includes(drawingDefinitionModelId));\r\n assert.isTrue(collector1.definitions.includes(drawingCategoryId));\r\n assert.isTrue(collector1.definitions.includes(spatialCategoryId));\r\n assert.isTrue(collector1.definitions.includes(nestedSpatialCategoryId));\r\n assert.isFalse(collector1.elements.includes(drawingCategoryId));\r\n assert.isFalse(collector1.elements.includes(spatialCategoryId));\r\n assert.isFalse(collector1.elements.includes(nestedSpatialCategoryId));\r\n assert.isTrue(collector1.elements.indexOf(physicalObjectId1) < collector1.elements.indexOf(physicalModelId), \"in bottom-up search, an element in a model should be visited before its model's element\");\r\n assert.isTrue(collector1.elements.indexOf(drawingGraphicId1) < collector1.elements.indexOf(drawingModelId), \"in bottom-up search, an element in a model should be visited before its model's element\");\r\n assert.isTrue(collector1.elements.indexOf(drawingModelId) < collector1.elements.indexOf(documentListModelId), \"in bottom-up search, an element in a model should be visited before its model's element\");\r\n assert.isTrue(collector1.elements.indexOf(documentListModelId) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\r\n assert.isTrue(collector1.elements.indexOf(definitionModelId) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\r\n assert.isTrue(collector1.elements.indexOf(definitionContainerId) < collector1.elements.indexOf(definitionModelId), \"in bottom-up search, a child element should be visited before its parent element\");\r\n assert.isTrue(collector1.elements.indexOf(drawingDefinitionModelId) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\r\n assert.isTrue(collector1.elements.indexOf(childSubject) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\r\n assert.isTrue(collector1.elements.indexOf(physicalModelId) < collector1.elements.indexOf(childSubject), \"in bottom-up search, a child element should be visited before its parent element\");\r\n }\r\n\r\n // Exercise the search filters\r\n {\r\n const collector2 = new SelectedElementCollector(iModel, [drawingGraphicId1, spatialCategoryId, nestedSpatialCategoryId, physicalObjectId3]);\r\n collector2.collect(jobSubjectId);\r\n assert.isTrue(collector2.definitions.length === 2);\r\n assert.isTrue(collector2.definitions.includes(spatialCategoryId));\r\n assert.isTrue(collector2.definitions.includes(nestedSpatialCategoryId));\r\n assert.isTrue(collector2.elements.length === 2);\r\n assert.isTrue(collector2.elements.includes(drawingGraphicId1));\r\n assert.isTrue(collector2.elements.includes(physicalObjectId3));\r\n }\r\n\r\n // Test the deleteElementTree function\r\n deleteElementTree(iModel, jobSubjectId);\r\n\r\n assert.isTrue(doesModelExist(iModel, IModel.repositoryModelId));\r\n assert.isTrue(doesModelExist(iModel, IModel.dictionaryId));\r\n assert.isTrue(doesElementExist(iModel, repositoryLinkId), \"RepositoryLink should not have been deleted, since it is not under Job Subject\");\r\n assert.isFalse(doesElementExist(iModel, definitionModelId));\r\n assert.isFalse(doesElementExist(iModel, definitionContainerId));\r\n assert.isFalse(doesElementExist(iModel, drawingDefinitionModelId));\r\n assert.isFalse(doesElementExist(iModel, spatialCategoryId));\r\n assert.isFalse(doesElementExist(iModel, nestedSpatialCategoryId));\r\n assert.isFalse(doesElementExist(iModel, drawingCategoryId));\r\n assert.isFalse(doesElementExist(iModel, xsGroup));\r\n assert.isFalse(doesElementExist(iModel, xsElement));\r\n assert.isFalse(doesElementExist(iModel, documentListModelId));\r\n assert.isFalse(doesElementExist(iModel, drawingModelId));\r\n assert.isFalse(doesElementExist(iModel, drawingGraphicId1));\r\n assert.isFalse(doesElementExist(iModel, physicalModelId));\r\n assert.isFalse(doesElementExist(iModel, physicalObjectId1));\r\n assert.isFalse(doesElementExist(iModel, physicalObjectId2));\r\n assert.isFalse(doesElementExist(iModel, physicalObjectId3));\r\n assert.isFalse(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\r\n assert.isFalse(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\r\n assert.isFalse(doesElementExist(iModel, jobSubjectId));\r\n assert.isFalse(doesModelExist(iModel, definitionModelId));\r\n assert.isFalse(doesModelExist(iModel, drawingDefinitionModelId));\r\n assert.isFalse(doesModelExist(iModel, drawingModelId));\r\n assert.isFalse(doesModelExist(iModel, physicalModelId));\r\n });\r\n\r\n it(\"deleteElementSubTrees\", () => {\r\n /*\r\n [RepositoryModel]\r\n RepositoryLink\r\n Job Subject\r\n +- DefinitionParitition -- [DefinitionModel]\r\n | DrawingCategory <-- PRUNE\r\n | default SubCategory + 2 non-default SubCategories\r\n | ExternalSourceGroup\r\n | ExternalSource child1\r\n +- DefinitionParitition -- [DefinitionModel]\r\n | SpatialCategory\r\n | DefinitionContainer\r\n | SpatialCategory\r\n |\r\n +- DocumentList -- [DocumentListModel]\r\n | Drawing -- [DrawingModel] <-- PRUNE\r\n | DrawingGraphic \"\r\n +- Child Subject\r\n |\r\n +- PhysicalPartition -- [PhysicalModel]\r\n PhysicalObject, PhysicalObject, PhysicalObject (grouped)\r\n ^-- PRUNE\r\n */\r\n\r\n const toPrune = new Set<string>();\r\n toPrune.add(drawingModelId);\r\n toPrune.add(drawingCategoryId);\r\n toPrune.add(physicalObjectId3);\r\n\r\n deleteElementSubTrees(iModel, jobSubjectId, (elementId) => toPrune.has(elementId));\r\n\r\n assert.isFalse(doesElementExist(iModel, drawingCategoryId));\r\n assert.isFalse(doesElementExist(iModel, drawingSubCategory1Id));\r\n assert.isFalse(doesElementExist(iModel, drawingSubCategory2Id));\r\n assert.isFalse(doesElementExist(iModel, drawingModelId));\r\n assert.isFalse(doesModelExist(iModel, drawingModelId));\r\n assert.isFalse(doesElementExist(iModel, drawingGraphicId1)); // contents of drawing model should be gone\r\n assert.isFalse(doesElementExist(iModel, physicalObjectId3));\r\n assert.isFalse(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\r\n\r\n assert.isTrue(doesElementExist(iModel, repositoryLinkId));\r\n assert.isTrue(doesElementExist(iModel, definitionModelId));\r\n assert.isTrue(doesElementExist(iModel, definitionContainerId));\r\n assert.isTrue(doesElementExist(iModel, drawingDefinitionModelId));\r\n assert.equal(iModel.elements.getElement(xsGroup).model, drawingDefinitionModelId);\r\n assert.equal(iModel.elements.getElement(xsElement).parent?.id, xsGroup);\r\n assert.isTrue(doesElementExist(iModel, spatialCategoryId));\r\n assert.isTrue(doesElementExist(iModel, nestedSpatialCategoryId));\r\n assert.isTrue(doesElementExist(iModel, documentListModelId));\r\n assert.isTrue(doesElementExist(iModel, physicalModelId));\r\n assert.isTrue(doesElementExist(iModel, physicalObjectId1));\r\n assert.isTrue(doesElementExist(iModel, physicalObjectId2));\r\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\r\n assert.isTrue(doesElementExist(iModel, jobSubjectId));\r\n assert.isTrue(doesModelExist(iModel, definitionModelId));\r\n assert.isTrue(doesModelExist(iModel, definitionContainerId));\r\n assert.isTrue(doesModelExist(iModel, drawingDefinitionModelId));\r\n assert.isTrue(doesModelExist(iModel, physicalModelId));\r\n assert.isTrue(doesModelExist(iModel, IModel.repositoryModelId));\r\n assert.isTrue(doesModelExist(iModel, IModel.dictionaryId));\r\n });\r\n\r\n it(\"deleteDefinitionPartition\", () => {\r\n /*\r\n [RepositoryModel]\r\n RepositoryLink\r\n Job Subject\r\n +- DefinitionParitition -- [DefinitionModel] <-- PRUNE\r\n | DrawingCategory\r\n | default SubCategory + 2 non-default SubCategories\r\n | ExternalSourceGroup\r\n | ExternalSource child1\r\n +- DefinitionParitition -- [DefinitionModel]\r\n | SpatialCategory\r\n | DefinitionContainer\r\n | SpatialCategory |\r\n +- DocumentList -- [DocumentListModel]\r\n | Drawing -- [DrawingModel]\r\n | DrawingGraphic\r\n +- Child Subject\r\n |\r\n +- PhysicalPartition -- [PhysicalModel]\r\n PhysicalObject, PhysicalObject, PhysicalObject (grouped)\r\n */\r\n\r\n const toPrune = new Set<string>();\r\n toPrune.add(drawingDefinitionModelId);\r\n toPrune.add(documentListModelId); // (also get rid of the elements that use the definitions)\r\n\r\n deleteElementSubTrees(iModel, jobSubjectId, (elementId) => toPrune.has(elementId));\r\n\r\n assert.isFalse(doesElementExist(iModel, drawingDefinitionModelId));\r\n assert.isFalse(doesModelExist(iModel, drawingDefinitionModelId));\r\n assert.isFalse(doesElementExist(iModel, drawingCategoryId));\r\n assert.isFalse(doesElementExist(iModel, drawingSubCategory1Id));\r\n assert.isFalse(doesElementExist(iModel, drawingSubCategory2Id));\r\n assert.isFalse(doesElementExist(iModel, xsGroup));\r\n assert.isFalse(doesElementExist(iModel, xsElement));\r\n assert.isFalse(doesElementExist(iModel, documentListModelId));\r\n assert.isFalse(doesModelExist(iModel, documentListModelId));\r\n assert.isFalse(doesElementExist(iModel, drawingModelId));\r\n assert.isFalse(doesModelExist(iModel, drawingModelId));\r\n assert.isFalse(doesElementExist(iModel, drawingGraphicId1));\r\n\r\n assert.isTrue(doesElementExist(iModel, repositoryLinkId));\r\n assert.isTrue(doesElementExist(iModel, definitionModelId));\r\n assert.isTrue(doesElementExist(iModel, definitionContainerId));\r\n assert.isTrue(doesElementExist(iModel, spatialCategoryId));\r\n assert.isTrue(doesElementExist(iModel, nestedSpatialCategoryId));\r\n assert.isTrue(doesElementExist(iModel, physicalModelId));\r\n assert.isTrue(doesElementExist(iModel, physicalObjectId1));\r\n assert.isTrue(doesElementExist(iModel, physicalObjectId2));\r\n assert.isTrue(doesElementExist(iModel, physicalObjectId3));\r\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\r\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\r\n assert.isTrue(doesElementExist(iModel, jobSubjectId));\r\n assert.isTrue(doesModelExist(iModel, definitionModelId));\r\n assert.isTrue(doesModelExist(iModel, definitionContainerId));\r\n assert.isTrue(doesModelExist(iModel, physicalModelId));\r\n assert.isTrue(doesModelExist(iModel, IModel.repositoryModelId));\r\n assert.isTrue(doesModelExist(iModel, IModel.dictionaryId));\r\n });\r\n});\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetTextureImage.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/GetTextureImage.test.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAG9B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAI,MAAkB,CAAC;IAEvB,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,eAAe,CAAC,sBAAsB,CAAC,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5K,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAE5B,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAiC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,0CAA0C,CAAC,CAAC;YACxI,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,0CAA0C,CAAC,CAAC;YACpH,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,0CAA0C,CAAC,CAAC;QAC5H,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAiC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,mDAAmD,CAAC,CAAC;YACtL,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,mDAAmD,CAAC,CAAC;YACpJ,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,mDAAmD,CAAC,CAAC;QACvJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { expect } from \"chai\";\nimport { TextureLoadProps } from \"@itwin/core-common\";\nimport { SnapshotDb } from \"../../IModelDb\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\n\ndescribe(\"IModelDb.queryTextureData\", () => {\n let imodel: SnapshotDb;\n\n before(() => {\n imodel = IModelTestUtils.createSnapshotFromSeed(IModelTestUtils.prepareOutputFile(\"ElementGraphics\", \"mirukuru.ibim\"), IModelTestUtils.resolveAssetFile(\"mirukuru.ibim\"));\n });\n\n after(() => imodel.close());\n\n it(\"returns undefined if texture not found\", async () => {\n expect(await imodel.queryTextureData({ name: \"0x123\" })).to.be.undefined;\n });\n\n describe(\"throws\", () => {\n it(\"if name is not a valid Id\", async () => {\n await expect(imodel.queryTextureData({} as unknown as TextureLoadProps)).to.be.rejectedWith(\"name property must be a valid Id64String\");\n await expect(imodel.queryTextureData({ name: \"0\" })).to.be.rejectedWith(\"name property must be a valid Id64String\");\n await expect(imodel.queryTextureData({ name: \"NotAnId\" })).to.be.rejectedWith(\"name property must be a valid Id64String\");\n });\n\n it(\"if max size is not a positive number\", async () => {\n await expect(imodel.queryTextureData({ name: \"0x123\", maxTextureSize: \"25\" } as unknown as TextureLoadProps)).to.be.rejectedWith(\"maxTextureSize property must be a positive number\");\n await expect(imodel.queryTextureData({ name: \"0x123\", maxTextureSize: 0 })).to.be.rejectedWith(\"maxTextureSize property must be a positive number\");\n await expect(imodel.queryTextureData({ name: \"0x123\", maxTextureSize: -1 })).to.be.rejectedWith(\"maxTextureSize property must be a positive number\");\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"GetTextureImage.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/GetTextureImage.test.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAG9B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAI,MAAkB,CAAC;IAEvB,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,eAAe,CAAC,sBAAsB,CAAC,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5K,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAE5B,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAiC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,0CAA0C,CAAC,CAAC;YACxI,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,0CAA0C,CAAC,CAAC;YACpH,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,0CAA0C,CAAC,CAAC;QAC5H,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAiC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,mDAAmD,CAAC,CAAC;YACtL,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,mDAAmD,CAAC,CAAC;YACpJ,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,mDAAmD,CAAC,CAAC;QACvJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { expect } from \"chai\";\r\nimport { TextureLoadProps } from \"@itwin/core-common\";\r\nimport { SnapshotDb } from \"../../IModelDb\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\n\r\ndescribe(\"IModelDb.queryTextureData\", () => {\r\n let imodel: SnapshotDb;\r\n\r\n before(() => {\r\n imodel = IModelTestUtils.createSnapshotFromSeed(IModelTestUtils.prepareOutputFile(\"ElementGraphics\", \"mirukuru.ibim\"), IModelTestUtils.resolveAssetFile(\"mirukuru.ibim\"));\r\n });\r\n\r\n after(() => imodel.close());\r\n\r\n it(\"returns undefined if texture not found\", async () => {\r\n expect(await imodel.queryTextureData({ name: \"0x123\" })).to.be.undefined;\r\n });\r\n\r\n describe(\"throws\", () => {\r\n it(\"if name is not a valid Id\", async () => {\r\n await expect(imodel.queryTextureData({} as unknown as TextureLoadProps)).to.be.rejectedWith(\"name property must be a valid Id64String\");\r\n await expect(imodel.queryTextureData({ name: \"0\" })).to.be.rejectedWith(\"name property must be a valid Id64String\");\r\n await expect(imodel.queryTextureData({ name: \"NotAnId\" })).to.be.rejectedWith(\"name property must be a valid Id64String\");\r\n });\r\n\r\n it(\"if max size is not a positive number\", async () => {\r\n await expect(imodel.queryTextureData({ name: \"0x123\", maxTextureSize: \"25\" } as unknown as TextureLoadProps)).to.be.rejectedWith(\"maxTextureSize property must be a positive number\");\r\n await expect(imodel.queryTextureData({ name: \"0x123\", maxTextureSize: 0 })).to.be.rejectedWith(\"maxTextureSize property must be a positive number\");\r\n await expect(imodel.queryTextureData({ name: \"0x123\", maxTextureSize: -1 })).to.be.rejectedWith(\"maxTextureSize property must be a positive number\");\r\n });\r\n });\r\n});\r\n"]}
|
|
@@ -2811,50 +2811,50 @@ describe("iModel", () => {
|
|
|
2811
2811
|
IModelJsFs.unlinkSync(imodelPath);
|
|
2812
2812
|
const testImodel = SnapshotDb.createEmpty(imodelPath, { rootSubject: { name: "invalidRelationshipClass" } });
|
|
2813
2813
|
await testImodel.importSchemaStrings([
|
|
2814
|
-
`<?xml version="1.0" encoding="UTF-8"?>
|
|
2815
|
-
<ECSchema schemaName="TestRelationSchema" alias="trs" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
2816
|
-
<ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
|
|
2817
|
-
<ECEntityClass typeName="TestElement">
|
|
2818
|
-
<BaseClass>bis:PhysicalElement</BaseClass>
|
|
2819
|
-
<ECProperty propertyName="Name" typeName="string" />
|
|
2820
|
-
</ECEntityClass>
|
|
2821
|
-
|
|
2822
|
-
<ECEntityClass typeName="ChildA" >
|
|
2823
|
-
<BaseClass>TestElement</BaseClass>
|
|
2824
|
-
<ECNavigationProperty propertyName="NavPropChildB" relationshipName="ADrivesB" direction="Forward" readOnly="True">
|
|
2825
|
-
</ECNavigationProperty>
|
|
2826
|
-
</ECEntityClass>
|
|
2827
|
-
|
|
2828
|
-
<ECEntityClass typeName="ChildB" >
|
|
2829
|
-
<BaseClass>TestElement</BaseClass>
|
|
2830
|
-
</ECEntityClass>
|
|
2831
|
-
|
|
2832
|
-
<ECRelationshipClass typeName="ADrivesB" strengthDirection="Backward" strength="referencing" modifier="Sealed">
|
|
2833
|
-
<Source multiplicity="(0..*)" polymorphic="true" roleLabel="drives">
|
|
2834
|
-
<Class class="ChildA"/>
|
|
2835
|
-
</Source>
|
|
2836
|
-
<Target multiplicity="(0..1)" polymorphic="true" roleLabel="is driven by">
|
|
2837
|
-
<Class class="ChildB"/>
|
|
2838
|
-
</Target>
|
|
2839
|
-
</ECRelationshipClass>
|
|
2840
|
-
|
|
2841
|
-
<ECEntityClass typeName="ChildC">
|
|
2842
|
-
<BaseClass>TestElement</BaseClass>
|
|
2843
|
-
</ECEntityClass>
|
|
2844
|
-
|
|
2845
|
-
<ECEntityClass typeName="ChildD">
|
|
2846
|
-
<BaseClass>TestElement</BaseClass>
|
|
2847
|
-
</ECEntityClass>
|
|
2848
|
-
|
|
2849
|
-
<ECRelationshipClass typeName="CIsRelatedToD" strength="referencing" modifier="Sealed">
|
|
2850
|
-
<BaseClass>bis:ElementRefersToElements</BaseClass>
|
|
2851
|
-
<Source multiplicity="(0..*)" roleLabel="IsRelatedTo" polymorphic="true">
|
|
2852
|
-
<Class class="ChildC"/>
|
|
2853
|
-
</Source>
|
|
2854
|
-
<Target multiplicity="(0..*)" roleLabel="IsRelatedTo (Reversed)" polymorphic="true">
|
|
2855
|
-
<Class class="ChildD"/>
|
|
2856
|
-
</Target>
|
|
2857
|
-
</ECRelationshipClass>
|
|
2814
|
+
`<?xml version="1.0" encoding="UTF-8"?>
|
|
2815
|
+
<ECSchema schemaName="TestRelationSchema" alias="trs" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
2816
|
+
<ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
|
|
2817
|
+
<ECEntityClass typeName="TestElement">
|
|
2818
|
+
<BaseClass>bis:PhysicalElement</BaseClass>
|
|
2819
|
+
<ECProperty propertyName="Name" typeName="string" />
|
|
2820
|
+
</ECEntityClass>
|
|
2821
|
+
|
|
2822
|
+
<ECEntityClass typeName="ChildA" >
|
|
2823
|
+
<BaseClass>TestElement</BaseClass>
|
|
2824
|
+
<ECNavigationProperty propertyName="NavPropChildB" relationshipName="ADrivesB" direction="Forward" readOnly="True">
|
|
2825
|
+
</ECNavigationProperty>
|
|
2826
|
+
</ECEntityClass>
|
|
2827
|
+
|
|
2828
|
+
<ECEntityClass typeName="ChildB" >
|
|
2829
|
+
<BaseClass>TestElement</BaseClass>
|
|
2830
|
+
</ECEntityClass>
|
|
2831
|
+
|
|
2832
|
+
<ECRelationshipClass typeName="ADrivesB" strengthDirection="Backward" strength="referencing" modifier="Sealed">
|
|
2833
|
+
<Source multiplicity="(0..*)" polymorphic="true" roleLabel="drives">
|
|
2834
|
+
<Class class="ChildA"/>
|
|
2835
|
+
</Source>
|
|
2836
|
+
<Target multiplicity="(0..1)" polymorphic="true" roleLabel="is driven by">
|
|
2837
|
+
<Class class="ChildB"/>
|
|
2838
|
+
</Target>
|
|
2839
|
+
</ECRelationshipClass>
|
|
2840
|
+
|
|
2841
|
+
<ECEntityClass typeName="ChildC">
|
|
2842
|
+
<BaseClass>TestElement</BaseClass>
|
|
2843
|
+
</ECEntityClass>
|
|
2844
|
+
|
|
2845
|
+
<ECEntityClass typeName="ChildD">
|
|
2846
|
+
<BaseClass>TestElement</BaseClass>
|
|
2847
|
+
</ECEntityClass>
|
|
2848
|
+
|
|
2849
|
+
<ECRelationshipClass typeName="CIsRelatedToD" strength="referencing" modifier="Sealed">
|
|
2850
|
+
<BaseClass>bis:ElementRefersToElements</BaseClass>
|
|
2851
|
+
<Source multiplicity="(0..*)" roleLabel="IsRelatedTo" polymorphic="true">
|
|
2852
|
+
<Class class="ChildC"/>
|
|
2853
|
+
</Source>
|
|
2854
|
+
<Target multiplicity="(0..*)" roleLabel="IsRelatedTo (Reversed)" polymorphic="true">
|
|
2855
|
+
<Class class="ChildD"/>
|
|
2856
|
+
</Target>
|
|
2857
|
+
</ECRelationshipClass>
|
|
2858
2858
|
</ECSchema>`
|
|
2859
2859
|
]);
|
|
2860
2860
|
// Enable ECSQL write validation and verify it's set
|