@itwin/core-backend 5.0.0-dev.97 → 5.0.0-dev.99

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.
Files changed (173) hide show
  1. package/lib/cjs/BackendHubAccess.d.ts +2 -8
  2. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  3. package/lib/cjs/BackendHubAccess.js.map +1 -1
  4. package/lib/cjs/ChangeSummaryManager.d.ts.map +1 -1
  5. package/lib/cjs/ChangeSummaryManager.js +12 -5
  6. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  7. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  8. package/lib/cjs/ChangesetECAdaptor.js +1 -0
  9. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  10. package/lib/cjs/CheckpointManager.d.ts +8 -15
  11. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  12. package/lib/cjs/CheckpointManager.js +23 -54
  13. package/lib/cjs/CheckpointManager.js.map +1 -1
  14. package/lib/cjs/ECDb.d.ts +37 -1
  15. package/lib/cjs/ECDb.d.ts.map +1 -1
  16. package/lib/cjs/ECDb.js +81 -0
  17. package/lib/cjs/ECDb.js.map +1 -1
  18. package/lib/cjs/ECSqlStatement.d.ts +181 -2
  19. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  20. package/lib/cjs/ECSqlStatement.js +224 -5
  21. package/lib/cjs/ECSqlStatement.js.map +1 -1
  22. package/lib/cjs/Element.d.ts +16 -4
  23. package/lib/cjs/Element.d.ts.map +1 -1
  24. package/lib/cjs/Element.js +40 -2
  25. package/lib/cjs/Element.js.map +1 -1
  26. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  27. package/lib/cjs/ElementAspect.js +1 -0
  28. package/lib/cjs/ElementAspect.js.map +1 -1
  29. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  30. package/lib/cjs/ElementTreeWalker.js +4 -0
  31. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  32. package/lib/cjs/HubMock.d.ts +1 -1
  33. package/lib/cjs/HubMock.d.ts.map +1 -1
  34. package/lib/cjs/HubMock.js +13 -2
  35. package/lib/cjs/HubMock.js.map +1 -1
  36. package/lib/cjs/IModelDb.d.ts +4 -0
  37. package/lib/cjs/IModelDb.d.ts.map +1 -1
  38. package/lib/cjs/IModelDb.js +33 -3
  39. package/lib/cjs/IModelDb.js.map +1 -1
  40. package/lib/cjs/Relationship.d.ts.map +1 -1
  41. package/lib/cjs/Relationship.js +2 -0
  42. package/lib/cjs/Relationship.js.map +1 -1
  43. package/lib/cjs/ViewStore.d.ts.map +1 -1
  44. package/lib/cjs/ViewStore.js +2 -1
  45. package/lib/cjs/ViewStore.js.map +1 -1
  46. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
  47. package/lib/cjs/internal/ChannelAdmin.js +2 -0
  48. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  49. package/lib/cjs/internal/Symbols.d.ts +2 -0
  50. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  51. package/lib/cjs/internal/Symbols.js +3 -1
  52. package/lib/cjs/internal/Symbols.js.map +1 -1
  53. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
  54. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +1 -0
  55. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  56. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  57. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +11 -22
  58. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  59. package/lib/esm/BackendHubAccess.d.ts +2 -8
  60. package/lib/esm/BackendHubAccess.d.ts.map +1 -1
  61. package/lib/esm/BackendHubAccess.js.map +1 -1
  62. package/lib/esm/ChangeSummaryManager.d.ts.map +1 -1
  63. package/lib/esm/ChangeSummaryManager.js +12 -5
  64. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  65. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  66. package/lib/esm/ChangesetECAdaptor.js +1 -0
  67. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  68. package/lib/esm/CheckpointManager.d.ts +8 -15
  69. package/lib/esm/CheckpointManager.d.ts.map +1 -1
  70. package/lib/esm/CheckpointManager.js +22 -52
  71. package/lib/esm/CheckpointManager.js.map +1 -1
  72. package/lib/esm/ECDb.d.ts +37 -1
  73. package/lib/esm/ECDb.d.ts.map +1 -1
  74. package/lib/esm/ECDb.js +82 -1
  75. package/lib/esm/ECDb.js.map +1 -1
  76. package/lib/esm/ECSqlStatement.d.ts +181 -2
  77. package/lib/esm/ECSqlStatement.d.ts.map +1 -1
  78. package/lib/esm/ECSqlStatement.js +222 -4
  79. package/lib/esm/ECSqlStatement.js.map +1 -1
  80. package/lib/esm/Element.d.ts +16 -4
  81. package/lib/esm/Element.d.ts.map +1 -1
  82. package/lib/esm/Element.js +40 -2
  83. package/lib/esm/Element.js.map +1 -1
  84. package/lib/esm/ElementAspect.d.ts.map +1 -1
  85. package/lib/esm/ElementAspect.js +1 -0
  86. package/lib/esm/ElementAspect.js.map +1 -1
  87. package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
  88. package/lib/esm/ElementTreeWalker.js +4 -0
  89. package/lib/esm/ElementTreeWalker.js.map +1 -1
  90. package/lib/esm/HubMock.d.ts +1 -1
  91. package/lib/esm/HubMock.d.ts.map +1 -1
  92. package/lib/esm/HubMock.js +13 -2
  93. package/lib/esm/HubMock.js.map +1 -1
  94. package/lib/esm/IModelDb.d.ts +4 -0
  95. package/lib/esm/IModelDb.d.ts.map +1 -1
  96. package/lib/esm/IModelDb.js +33 -3
  97. package/lib/esm/IModelDb.js.map +1 -1
  98. package/lib/esm/Relationship.d.ts.map +1 -1
  99. package/lib/esm/Relationship.js +2 -0
  100. package/lib/esm/Relationship.js.map +1 -1
  101. package/lib/esm/ViewStore.d.ts.map +1 -1
  102. package/lib/esm/ViewStore.js +2 -1
  103. package/lib/esm/ViewStore.js.map +1 -1
  104. package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
  105. package/lib/esm/internal/ChannelAdmin.js +2 -0
  106. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  107. package/lib/esm/internal/Symbols.d.ts +2 -0
  108. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  109. package/lib/esm/internal/Symbols.js +2 -0
  110. package/lib/esm/internal/Symbols.js.map +1 -1
  111. package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
  112. package/lib/esm/rpc-impl/IModelReadRpcImpl.js +1 -0
  113. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  114. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  115. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js +13 -24
  116. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  117. package/lib/esm/test/CloudSqliteMock.d.ts +37 -0
  118. package/lib/esm/test/CloudSqliteMock.d.ts.map +1 -0
  119. package/lib/esm/test/CloudSqliteMock.js +117 -0
  120. package/lib/esm/test/CloudSqliteMock.js.map +1 -0
  121. package/lib/esm/test/IModelTestUtils.d.ts +1 -1
  122. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  123. package/lib/esm/test/IModelTestUtils.js +16 -4
  124. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  125. package/lib/esm/test/PrintElementTree.js +1 -0
  126. package/lib/esm/test/PrintElementTree.js.map +1 -1
  127. package/lib/esm/test/SchemaUtils.test.js +2 -0
  128. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  129. package/lib/esm/test/ecdb/ECDb.test.js +12 -1
  130. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  131. package/lib/esm/test/ecdb/ECSqlAst.test.js +1 -0
  132. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  133. package/lib/esm/test/ecdb/ECSqlQuery.test.js +6 -0
  134. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  135. package/lib/esm/test/ecdb/ECSqlReader.test.js +1 -1
  136. package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
  137. package/lib/esm/test/ecdb/ECSqlStatement.test.js +253 -163
  138. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  139. package/lib/esm/test/ecdb/SqliteStatement.test.js +2 -0
  140. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  141. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +1 -0
  142. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  143. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js +5 -1
  144. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  145. package/lib/esm/test/element/ElementRoundTrip.test.js +10 -0
  146. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  147. package/lib/esm/test/font/IModelDbFonts.test.js +3 -1
  148. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  149. package/lib/esm/test/hubaccess/BriefcaseManager.test.js +18 -7
  150. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  151. package/lib/esm/test/hubaccess/CheckpointManager.test.js +5 -91
  152. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  153. package/lib/esm/test/imodel/ElementTreeWalker.test.js +1 -0
  154. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  155. package/lib/esm/test/imodel/IModel.test.js +14 -0
  156. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  157. package/lib/esm/test/schema/GenericDomain.test.js +1 -0
  158. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  159. package/lib/esm/test/standalone/ChangeMerge.test.js +0 -4
  160. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  161. package/lib/esm/test/standalone/ChangesetReader.test.js +1 -0
  162. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  163. package/lib/esm/test/standalone/Drawing.test.d.ts +2 -0
  164. package/lib/esm/test/standalone/Drawing.test.d.ts.map +1 -0
  165. package/lib/esm/test/standalone/Drawing.test.js +120 -0
  166. package/lib/esm/test/standalone/Drawing.test.js.map +1 -0
  167. package/lib/esm/test/standalone/IModelWrite.test.js +22 -6
  168. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  169. package/lib/esm/test/standalone/RenderMaterialElement.test.js +1 -0
  170. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  171. package/lib/esm/test/standalone/SnapshotDb.test.js +4 -3
  172. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  173. package/package.json +13 -12
@@ -1 +1 @@
1
- {"version":3,"file":"ECSqlReader.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECSqlReader.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from \"chai\";\n/*---------------------------------------------------------------------------------------------\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 { DbResult } from \"@itwin/core-bentley\";\nimport { ECSqlReader, QueryBinder, QueryOptionsBuilder, QueryRowFormat } from \"@itwin/core-common\";\nimport { SnapshotDb } from \"../../core-backend\";\nimport { ECSqlStatement } from \"../../ECSqlStatement\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\nimport { ECDbTestHelper } from \"./ECDbTestHelper\";\n\ndescribe(\"ECSqlReader\", (() => {\n let iModel: SnapshotDb;\n let reader: ECSqlReader;\n\n before(async () => {\n iModel = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"test.bim\"));\n });\n\n after(async () => {\n iModel.close();\n });\n\n describe(\"bind Id64 enumerable\", async () => {\n const outDir = KnownTestLocations.outputDir;\n\n it(\"ecsql reader simple\", async () => {\n using ecdb = ECDbTestHelper.createECDb(outDir, \"test.ecdb\",\n `<ECSchema schemaName=\"Test\" alias=\"ts\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Foo\" modifier=\"Sealed\">\n <ECProperty propertyName=\"n\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(ecdb.isOpen);\n ecdb.saveChanges();\n const params = new QueryBinder();\n params.bindIdSet(1, [\"0x32\"]);\n const optionBuilder = new QueryOptionsBuilder();\n optionBuilder.setRowFormat(QueryRowFormat.UseJsPropertyNames);\n reader = ecdb.createQueryReader(\"SELECT ECInstanceId, Name FROM meta.ECClassDef WHERE InVirtualSet(?, ECInstanceId)\", params, optionBuilder.getOptions());\n const rows = await reader.toArray();\n assert.equal(rows[0].id, \"0x32\");\n assert.equal(rows.length, 1);\n });\n\n it(\"ecsql reader simple for IdSet\", async () => {\n using ecdb = ECDbTestHelper.createECDb(outDir, \"test.ecdb\",\n `<ECSchema schemaName=\"Test\" alias=\"ts\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Foo\" modifier=\"Sealed\">\n <ECProperty propertyName=\"n\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(ecdb.isOpen);\n ecdb.saveChanges();\n const params = new QueryBinder();\n params.bindIdSet(1, [\"0x32\"]);\n const optionBuilder = new QueryOptionsBuilder();\n optionBuilder.setRowFormat(QueryRowFormat.UseJsPropertyNames);\n reader = ecdb.createQueryReader(\"SELECT ECInstanceId, Name FROM meta.ECClassDef, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\", params, optionBuilder.getOptions());\n const rows = await reader.toArray();\n assert.equal(rows[0].id, \"0x32\");\n assert.equal(rows.length, 1);\n });\n\n it(\"bindIdSet not working with integer Ids\", async () => {\n using ecdb = ECDbTestHelper.createECDb(outDir, \"test.ecdb\",\n `<ECSchema schemaName=\"Test\" alias=\"ts\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Foo\" modifier=\"Sealed\">\n <ECProperty propertyName=\"n\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`)\n assert.isTrue(ecdb.isOpen);\n ecdb.saveChanges();\n const params = new QueryBinder();\n params.bindIdSet(1, [\"50\"]);\n const optionBuilder = new QueryOptionsBuilder();\n optionBuilder.setRowFormat(QueryRowFormat.UseJsPropertyNames);\n reader = ecdb.createQueryReader(\"SELECT ECInstanceId, Name FROM meta.ECClassDef WHERE InVirtualSet(?, ECInstanceId)\", params, optionBuilder.getOptions());\n const rows = await reader.toArray();\n assert.equal(rows.length, 0);\n });\n\n it(\"ecsql reader simple using query reader\", async () => {\n using ecdb = ECDbTestHelper.createECDb(outDir, \"test.ecdb\",\n `<ECSchema schemaName=\"Test\" alias=\"ts\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Foo\" modifier=\"Sealed\">\n <ECProperty propertyName=\"n\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(ecdb.isOpen);\n\n const r = await ecdb.withStatement(\"INSERT INTO ts.Foo(n) VALUES(20)\", async (stmt: ECSqlStatement) => {\n return stmt.stepForInsert();\n });\n ecdb.saveChanges();\n assert.equal(r.status, DbResult.BE_SQLITE_DONE);\n assert.equal(r.id, \"0x1\");\n\n const params = new QueryBinder();\n params.bindId(\"firstId\", r.id!);\n\n reader = ecdb.createQueryReader(\"SELECT ECInstanceId, n FROM ts.Foo WHERE ECInstanceId=:firstId\", params, { limit: { count: 1 } });\n assert.isTrue(await reader.step());\n assert.equal(reader.current.id, \"0x1\");\n assert.equal(reader.current.ecinstanceid, \"0x1\");\n assert.equal(reader.current.n, 20);\n assert.equal(reader.current.ID, \"0x1\");\n assert.equal(reader.current.ECINSTANCEID, \"0x1\");\n assert.equal(reader.current[0], \"0x1\");\n assert.equal(reader.current[1], 20);\n\n const row0 = reader.current.toRow();\n assert.equal(row0.ECInstanceId, \"0x1\");\n assert.equal(row0.n, 20);\n\n assert.isFalse(await reader.step());\n });\n });\n\n describe(\"Works as iterable iterator\", () => {\n\n it(\"iterable in for loop\", async () => {\n let actualRowCount = 0;\n const expectedRowCount = 46; // 46 Elements in test.bim\n for await (const row of iModel.createQueryReader(\"SELECT * FROM bis.Element\")) {\n actualRowCount++;\n assert.isDefined(row[0]);\n }\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"iterable with .next()\", async () => {\n let row: any;\n let actualRowCount = 0;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 } });\n while ((row = await reader.next()).done === false) {\n actualRowCount++;\n assert.equal(row.value[0], `0x${actualRowCount}`);\n }\n assert.equal(actualRowCount, 5);\n });\n });\n\n describe(\"Common usages\", () => {\n let actualRowCount: number;\n\n beforeEach(async () => {\n actualRowCount = 0;\n });\n\n describe(\"Get all rows\", () => {\n const expectedRowCount = 46; // 46 Elements in test.bim\n\n beforeEach(async () => {\n reader = iModel.createQueryReader(\"SELECT * FROM bis.Element\");\n });\n\n it(\"Get all rows using iterable iterator\", async () => {\n for await (const _row of reader) {\n actualRowCount++;\n }\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get all rows using step\", async () => {\n while (await reader.step()) {\n actualRowCount++;\n }\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get all rows using toArray\", async () => {\n const rows = await reader.toArray();\n actualRowCount = rows.length;\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n });\n\n describe(\"Get id from each row\", () => {\n\n it(\"Get id using iterable iterator with unspecified rowFormat\", async () => {\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 } })) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get id using iterable iterator with UseJsPropertyNames rowFormat\", async () => {\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().id, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get id using iterable iterator with UseECSqlPropertyNames rowFormat\", async () => {\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyNames })) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get id using iterable iterator with UseECSqlPropertyIndexes rowFormat\", async () => {\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyIndexes })) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get id using step with unspecified rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 } });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get id using step with UseJsPropertyNames rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseJsPropertyNames });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().id, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get id using step with UseECSqlPropertyNames rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyNames });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get id using step with UseECSqlPropertyIndexes rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n });\n\n describe(\"Get duplicate property names\", () => {\n\n it(\"Get duplicate property names using iterable iterator with unspecified rowFormat\", async () => {\n const expectedIds = [\"0x1\", \"0xe\", \"0x10\", \"0x11\", \"0x12\"];\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId\", undefined, { limit: { count: 5 } })) {\n const currentExpectedId = expectedIds[counter - 1];\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get duplicate property names using iterable iterator with UseJsPropertyNames rowFormat\", async () => {\n const expectedIds = [\"0x1\", \"0xe\", \"0x10\", \"0x11\", \"0x12\"];\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n const currentExpectedId = expectedIds[counter - 1];\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().id, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get duplicate property names using iterable iterator with UseECSqlPropertyNames rowFormat\", async () => {\n const expectedIds = [\"0x1\", \"0xe\", \"0x10\", \"0x11\", \"0x12\"];\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyNames })) {\n const currentExpectedId = expectedIds[counter - 1];\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get duplicate property names using iterable iterator with UseECSqlPropertyIndexes rowFormat\", async () => {\n const expectedIds = [\"0x1\", \"0xe\", \"0x10\", \"0x11\", \"0x12\"];\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyIndexes })) {\n const currentExpectedId = expectedIds[counter - 1];\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n });\n\n describe(\"Get specific values\", () => {\n\n it(\"Get only ECInstanceId with unspecified rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 } });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get only ECInstanceId with UseJsPropertyNames rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseJsPropertyNames });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().id, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get only ECInstanceId with UseECSqlPropertyNames rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyNames });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get only ECInstanceId with UseECSqlPropertyIndexes rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get one column with custom name with unspecified rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 } });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.customColumnName, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().customColumnName, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get one column with custom name with UseJsPropertyNames rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseJsPropertyNames });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.customColumnName, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().customColumnName, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get one column with custom name with UseECSqlPropertyNames rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyNames });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.customColumnName, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().customColumnName, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get one column with custom name with UseECSqlPropertyIndexes rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.customColumnName, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().customColumnName, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n });\n\n describe(\"Get count of results\", () => {\n const expectedRowCount = 46; // 46 Elements in test.bim\n\n beforeEach(async () => {\n reader = iModel.createQueryReader(\"SELECT COUNT(*) numResults FROM (SELECT * FROM bis.Element)\");\n });\n\n it(\"Get count of rows using current index\", async () => {\n await reader.step();\n actualRowCount = reader.current[0] as number;\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get count of rows using current column name\", async () => {\n await reader.step();\n actualRowCount = reader.current.numResults as number;\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get count of rows using current and toRow\", async () => {\n await reader.step();\n actualRowCount = reader.current.toRow().numResults as number;\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get count of rows using toArray result itself\", async () => {\n await reader.step();\n actualRowCount = reader.current.toArray()[0] as number;\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get count of rows using iterable iterator and index\", async () => {\n for await (const row of reader) {\n actualRowCount = row[0] as number;\n }\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get count of rows using iterable iterator and column name\", async () => {\n for await (const row of reader) {\n actualRowCount = row.numResults as number;\n }\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get count of rows using iterable iterator and toRow\", async () => {\n for await (const row of reader) {\n actualRowCount = row.toRow().numResults;\n }\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n });\n\n describe(\"Tests for extendedType and extendType property behaviour of QueryPropertyMetaData\", () => {\n\n it(\"Id type column with alias\", async () => {\n reader = iModel.createQueryReader(\"SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\");\n const metaData = await reader.getMetaData();\n assert.equal(\"Id\", metaData[0].extendedType);\n assert.equal(\"Id\", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n });\n\n it(\"Id type column without alias\", async () => {\n reader = iModel.createQueryReader(\"SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\");\n const metaData = await reader.getMetaData();\n assert.equal(\"Id\", metaData[0].extendedType);\n assert.equal(\"Id\", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n });\n\n it(\"ClassId type column\", async () => {\n reader = iModel.createQueryReader(\"SELECT ECClassId FROM bis.Element ORDER BY ECClassId ASC\");\n const metaData = await reader.getMetaData();\n assert.equal(\"ClassId\", metaData[0].extendedType);\n assert.equal(\"ClassId\", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n });\n\n it(\"Column without extended type\", async () => {\n reader = iModel.createQueryReader(\"SELECT s.Name FROM meta.ECSchemaDef s ORDER BY s.Name ASC\");\n const metaData = await reader.getMetaData();\n assert.equal(undefined, metaData[0].extendedType);\n assert.equal(\"\", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n });\n\n it(\"Column without extended type with alias\", async () => {\n reader = iModel.createQueryReader(\"SELECT s.Name a FROM meta.ECSchemaDef s ORDER BY a ASC\");\n const metaData = await reader.getMetaData();\n assert.equal(undefined, metaData[0].extendedType);\n assert.equal(\"\", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n });\n\n it(\"Geometric type column with alias\", async () => {\n reader = iModel.createQueryReader(\"select GeometryStream A from bis.GeometricElement3d LIMIT 1\");\n const metaData = await reader.getMetaData();\n assert.equal(\"GeometryStream\", metaData[0].extendedType);\n assert.equal(\"GeometryStream\", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n });\n\n it(\"Geometric type column without alias\", async () => {\n reader = iModel.createQueryReader(\"select GeometryStream from bis.GeometricElement3d LIMIT 1\");\n const metaData = await reader.getMetaData();\n assert.equal(\"GeometryStream\", metaData[0].extendedType);\n assert.equal(\"GeometryStream\", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n });\n\n });\n });\n}));\n"]}
1
+ {"version":3,"file":"ECSqlReader.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECSqlReader.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from \"chai\";\n/*---------------------------------------------------------------------------------------------\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 { DbResult } from \"@itwin/core-bentley\";\nimport { ECSqlReader, QueryBinder, QueryOptionsBuilder, QueryRowFormat } from \"@itwin/core-common\";\nimport { SnapshotDb } from \"../../core-backend\";\nimport { ECSqlWriteStatement } from \"../../ECSqlStatement\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\nimport { ECDbTestHelper } from \"./ECDbTestHelper\";\n\ndescribe(\"ECSqlReader\", (() => {\n let iModel: SnapshotDb;\n let reader: ECSqlReader;\n\n before(async () => {\n iModel = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"test.bim\"));\n });\n\n after(async () => {\n iModel.close();\n });\n\n describe(\"bind Id64 enumerable\", async () => {\n const outDir = KnownTestLocations.outputDir;\n\n it(\"ecsql reader simple\", async () => {\n using ecdb = ECDbTestHelper.createECDb(outDir, \"test.ecdb\",\n `<ECSchema schemaName=\"Test\" alias=\"ts\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Foo\" modifier=\"Sealed\">\n <ECProperty propertyName=\"n\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(ecdb.isOpen);\n ecdb.saveChanges();\n const params = new QueryBinder();\n params.bindIdSet(1, [\"0x32\"]);\n const optionBuilder = new QueryOptionsBuilder();\n optionBuilder.setRowFormat(QueryRowFormat.UseJsPropertyNames);\n reader = ecdb.createQueryReader(\"SELECT ECInstanceId, Name FROM meta.ECClassDef WHERE InVirtualSet(?, ECInstanceId)\", params, optionBuilder.getOptions());\n const rows = await reader.toArray();\n assert.equal(rows[0].id, \"0x32\");\n assert.equal(rows.length, 1);\n });\n\n it(\"ecsql reader simple for IdSet\", async () => {\n using ecdb = ECDbTestHelper.createECDb(outDir, \"test.ecdb\",\n `<ECSchema schemaName=\"Test\" alias=\"ts\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Foo\" modifier=\"Sealed\">\n <ECProperty propertyName=\"n\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(ecdb.isOpen);\n ecdb.saveChanges();\n const params = new QueryBinder();\n params.bindIdSet(1, [\"0x32\"]);\n const optionBuilder = new QueryOptionsBuilder();\n optionBuilder.setRowFormat(QueryRowFormat.UseJsPropertyNames);\n reader = ecdb.createQueryReader(\"SELECT ECInstanceId, Name FROM meta.ECClassDef, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\", params, optionBuilder.getOptions());\n const rows = await reader.toArray();\n assert.equal(rows[0].id, \"0x32\");\n assert.equal(rows.length, 1);\n });\n\n it(\"bindIdSet not working with integer Ids\", async () => {\n using ecdb = ECDbTestHelper.createECDb(outDir, \"test.ecdb\",\n `<ECSchema schemaName=\"Test\" alias=\"ts\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Foo\" modifier=\"Sealed\">\n <ECProperty propertyName=\"n\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`)\n assert.isTrue(ecdb.isOpen);\n ecdb.saveChanges();\n const params = new QueryBinder();\n params.bindIdSet(1, [\"50\"]);\n const optionBuilder = new QueryOptionsBuilder();\n optionBuilder.setRowFormat(QueryRowFormat.UseJsPropertyNames);\n reader = ecdb.createQueryReader(\"SELECT ECInstanceId, Name FROM meta.ECClassDef WHERE InVirtualSet(?, ECInstanceId)\", params, optionBuilder.getOptions());\n const rows = await reader.toArray();\n assert.equal(rows.length, 0);\n });\n\n it(\"ecsql reader simple using query reader\", async () => {\n using ecdb = ECDbTestHelper.createECDb(outDir, \"test.ecdb\",\n `<ECSchema schemaName=\"Test\" alias=\"ts\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Foo\" modifier=\"Sealed\">\n <ECProperty propertyName=\"n\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(ecdb.isOpen);\n\n const r = await ecdb.withCachedWriteStatement(\"INSERT INTO ts.Foo(n) VALUES(20)\", async (stmt: ECSqlWriteStatement) => {\n return stmt.stepForInsert();\n });\n ecdb.saveChanges();\n assert.equal(r.status, DbResult.BE_SQLITE_DONE);\n assert.equal(r.id, \"0x1\");\n\n const params = new QueryBinder();\n params.bindId(\"firstId\", r.id!);\n\n reader = ecdb.createQueryReader(\"SELECT ECInstanceId, n FROM ts.Foo WHERE ECInstanceId=:firstId\", params, { limit: { count: 1 } });\n assert.isTrue(await reader.step());\n assert.equal(reader.current.id, \"0x1\");\n assert.equal(reader.current.ecinstanceid, \"0x1\");\n assert.equal(reader.current.n, 20);\n assert.equal(reader.current.ID, \"0x1\");\n assert.equal(reader.current.ECINSTANCEID, \"0x1\");\n assert.equal(reader.current[0], \"0x1\");\n assert.equal(reader.current[1], 20);\n\n const row0 = reader.current.toRow();\n assert.equal(row0.ECInstanceId, \"0x1\");\n assert.equal(row0.n, 20);\n\n assert.isFalse(await reader.step());\n });\n });\n\n describe(\"Works as iterable iterator\", () => {\n\n it(\"iterable in for loop\", async () => {\n let actualRowCount = 0;\n const expectedRowCount = 46; // 46 Elements in test.bim\n for await (const row of iModel.createQueryReader(\"SELECT * FROM bis.Element\")) {\n actualRowCount++;\n assert.isDefined(row[0]);\n }\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"iterable with .next()\", async () => {\n let row: any;\n let actualRowCount = 0;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 } });\n while ((row = await reader.next()).done === false) {\n actualRowCount++;\n assert.equal(row.value[0], `0x${actualRowCount}`);\n }\n assert.equal(actualRowCount, 5);\n });\n });\n\n describe(\"Common usages\", () => {\n let actualRowCount: number;\n\n beforeEach(async () => {\n actualRowCount = 0;\n });\n\n describe(\"Get all rows\", () => {\n const expectedRowCount = 46; // 46 Elements in test.bim\n\n beforeEach(async () => {\n reader = iModel.createQueryReader(\"SELECT * FROM bis.Element\");\n });\n\n it(\"Get all rows using iterable iterator\", async () => {\n for await (const _row of reader) {\n actualRowCount++;\n }\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get all rows using step\", async () => {\n while (await reader.step()) {\n actualRowCount++;\n }\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get all rows using toArray\", async () => {\n const rows = await reader.toArray();\n actualRowCount = rows.length;\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n });\n\n describe(\"Get id from each row\", () => {\n\n it(\"Get id using iterable iterator with unspecified rowFormat\", async () => {\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 } })) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get id using iterable iterator with UseJsPropertyNames rowFormat\", async () => {\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().id, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get id using iterable iterator with UseECSqlPropertyNames rowFormat\", async () => {\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyNames })) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get id using iterable iterator with UseECSqlPropertyIndexes rowFormat\", async () => {\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyIndexes })) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get id using step with unspecified rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 } });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get id using step with UseJsPropertyNames rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseJsPropertyNames });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().id, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get id using step with UseECSqlPropertyNames rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyNames });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get id using step with UseECSqlPropertyIndexes rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT * FROM meta.ECSchemaDef\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n });\n\n describe(\"Get duplicate property names\", () => {\n\n it(\"Get duplicate property names using iterable iterator with unspecified rowFormat\", async () => {\n const expectedIds = [\"0x1\", \"0xe\", \"0x10\", \"0x11\", \"0x12\"];\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId\", undefined, { limit: { count: 5 } })) {\n const currentExpectedId = expectedIds[counter - 1];\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get duplicate property names using iterable iterator with UseJsPropertyNames rowFormat\", async () => {\n const expectedIds = [\"0x1\", \"0xe\", \"0x10\", \"0x11\", \"0x12\"];\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n const currentExpectedId = expectedIds[counter - 1];\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().id, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get duplicate property names using iterable iterator with UseECSqlPropertyNames rowFormat\", async () => {\n const expectedIds = [\"0x1\", \"0xe\", \"0x10\", \"0x11\", \"0x12\"];\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyNames })) {\n const currentExpectedId = expectedIds[counter - 1];\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get duplicate property names using iterable iterator with UseECSqlPropertyIndexes rowFormat\", async () => {\n const expectedIds = [\"0x1\", \"0xe\", \"0x10\", \"0x11\", \"0x12\"];\n let counter = 1;\n for await (const row of iModel.createQueryReader(\"SELECT * FROM bis.Element c JOIN bis.Element p ON p.ECInstanceId = c.ECInstanceId\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyIndexes })) {\n const currentExpectedId = expectedIds[counter - 1];\n assert.equal(row[0], currentExpectedId);\n assert.equal(row.id, currentExpectedId);\n assert.equal(row.ecinstanceid, currentExpectedId);\n assert.equal(row.ECINSTANCEID, currentExpectedId);\n assert.equal(row.ECInstanceId, currentExpectedId);\n assert.equal(row.toArray()[0], currentExpectedId);\n assert.equal(row.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n });\n\n describe(\"Get specific values\", () => {\n\n it(\"Get only ECInstanceId with unspecified rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 } });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get only ECInstanceId with UseJsPropertyNames rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseJsPropertyNames });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().id, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get only ECInstanceId with UseECSqlPropertyNames rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyNames });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get only ECInstanceId with UseECSqlPropertyIndexes rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.id, currentExpectedId);\n assert.equal(reader.current.ecinstanceid, currentExpectedId);\n assert.equal(reader.current.ECINSTANCEID, currentExpectedId);\n assert.equal(reader.current.ECInstanceId, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().ECInstanceId, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get one column with custom name with unspecified rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 } });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.customColumnName, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().customColumnName, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get one column with custom name with UseJsPropertyNames rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseJsPropertyNames });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.customColumnName, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().customColumnName, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get one column with custom name with UseECSqlPropertyNames rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyNames });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.customColumnName, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().customColumnName, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n\n it(\"Get one column with custom name with UseECSqlPropertyIndexes rowFormat\", async () => {\n let counter = 1;\n reader = iModel.createQueryReader(\"SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\", undefined, { limit: { count: 5 }, rowFormat: QueryRowFormat.UseECSqlPropertyIndexes });\n while (await reader.step()) {\n const currentExpectedId = `0x${counter}`;\n assert.equal(reader.current[0], currentExpectedId);\n assert.equal(reader.current.customColumnName, currentExpectedId);\n assert.equal(reader.current.toArray()[0], currentExpectedId);\n assert.equal(reader.current.toRow().customColumnName, currentExpectedId);\n counter++;\n actualRowCount++;\n }\n assert.equal(actualRowCount, 5);\n });\n });\n\n describe(\"Get count of results\", () => {\n const expectedRowCount = 46; // 46 Elements in test.bim\n\n beforeEach(async () => {\n reader = iModel.createQueryReader(\"SELECT COUNT(*) numResults FROM (SELECT * FROM bis.Element)\");\n });\n\n it(\"Get count of rows using current index\", async () => {\n await reader.step();\n actualRowCount = reader.current[0] as number;\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get count of rows using current column name\", async () => {\n await reader.step();\n actualRowCount = reader.current.numResults as number;\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get count of rows using current and toRow\", async () => {\n await reader.step();\n actualRowCount = reader.current.toRow().numResults as number;\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get count of rows using toArray result itself\", async () => {\n await reader.step();\n actualRowCount = reader.current.toArray()[0] as number;\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get count of rows using iterable iterator and index\", async () => {\n for await (const row of reader) {\n actualRowCount = row[0] as number;\n }\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get count of rows using iterable iterator and column name\", async () => {\n for await (const row of reader) {\n actualRowCount = row.numResults as number;\n }\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n it(\"Get count of rows using iterable iterator and toRow\", async () => {\n for await (const row of reader) {\n actualRowCount = row.toRow().numResults;\n }\n assert.equal(actualRowCount, expectedRowCount);\n });\n\n });\n\n describe(\"Tests for extendedType and extendType property behaviour of QueryPropertyMetaData\", () => {\n\n it(\"Id type column with alias\", async () => {\n reader = iModel.createQueryReader(\"SELECT ECInstanceId customColumnName FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\");\n const metaData = await reader.getMetaData();\n assert.equal(\"Id\", metaData[0].extendedType);\n assert.equal(\"Id\", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n });\n\n it(\"Id type column without alias\", async () => {\n reader = iModel.createQueryReader(\"SELECT ECInstanceId FROM meta.ECSchemaDef ORDER BY ECInstanceId ASC\");\n const metaData = await reader.getMetaData();\n assert.equal(\"Id\", metaData[0].extendedType);\n assert.equal(\"Id\", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n });\n\n it(\"ClassId type column\", async () => {\n reader = iModel.createQueryReader(\"SELECT ECClassId FROM bis.Element ORDER BY ECClassId ASC\");\n const metaData = await reader.getMetaData();\n assert.equal(\"ClassId\", metaData[0].extendedType);\n assert.equal(\"ClassId\", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n });\n\n it(\"Column without extended type\", async () => {\n reader = iModel.createQueryReader(\"SELECT s.Name FROM meta.ECSchemaDef s ORDER BY s.Name ASC\");\n const metaData = await reader.getMetaData();\n assert.equal(undefined, metaData[0].extendedType);\n assert.equal(\"\", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n });\n\n it(\"Column without extended type with alias\", async () => {\n reader = iModel.createQueryReader(\"SELECT s.Name a FROM meta.ECSchemaDef s ORDER BY a ASC\");\n const metaData = await reader.getMetaData();\n assert.equal(undefined, metaData[0].extendedType);\n assert.equal(\"\", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n });\n\n it(\"Geometric type column with alias\", async () => {\n reader = iModel.createQueryReader(\"select GeometryStream A from bis.GeometricElement3d LIMIT 1\");\n const metaData = await reader.getMetaData();\n assert.equal(\"GeometryStream\", metaData[0].extendedType);\n assert.equal(\"GeometryStream\", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n });\n\n it(\"Geometric type column without alias\", async () => {\n reader = iModel.createQueryReader(\"select GeometryStream from bis.GeometricElement3d LIMIT 1\");\n const metaData = await reader.getMetaData();\n assert.equal(\"GeometryStream\", metaData[0].extendedType);\n assert.equal(\"GeometryStream\", metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n assert.equal(metaData[0].extendedType, metaData[0].extendType); // eslint-disable-line @typescript-eslint/no-deprecated\n });\n\n });\n });\n}));\n"]}