@ohos-cpf/3rdloop 0.0.2 → 0.0.3

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 (393) hide show
  1. package/README.md +244 -244
  2. package/bin/3rdloop.mjs +46 -46
  3. package/lib/cli.js +781 -781
  4. package/lib/config-cmd.js +451 -451
  5. package/lib/config.js +318 -318
  6. package/lib/doctor.js +113 -113
  7. package/lib/exit-codes.js +30 -30
  8. package/lib/opencode.js +155 -155
  9. package/lib/orch.js +426 -426
  10. package/lib/queries.js +263 -263
  11. package/lib/step.js +325 -325
  12. package/lib/ui.js +222 -222
  13. package/lib/update.js +279 -279
  14. package/lib/workflow.js +308 -308
  15. package/lib/workflows.js +131 -131
  16. package/package.json +50 -50
  17. package/vendor/Server/Agent/SkillSelector/README.md +343 -343
  18. package/vendor/Server/Agent/SkillSelector/core/Agent.js +207 -207
  19. package/vendor/Server/Agent/SkillSelector/index.js +14 -14
  20. package/vendor/Server/Agent/SkillSelector/llm/llmClient.js +313 -313
  21. package/vendor/Server/Agent/SkillSelector/llm/prompts.js +161 -161
  22. package/vendor/Server/Agent/SkillSelector/llm/reactSteps.js +144 -144
  23. package/vendor/Server/Agent/SkillSelector/matcher/fuzzyMatcher.js +433 -433
  24. package/vendor/Server/Agent/SkillSelector/scanner/skillScanner.js +382 -382
  25. package/vendor/Server/Agent/SkillSelector/utils/actionWords.js +59 -59
  26. package/vendor/Server/Brain/AnalysisStrategies.js +422 -422
  27. package/vendor/Server/Brain/Brain.js +686 -686
  28. package/vendor/Server/Brain/DecompositionStrategies.js +621 -621
  29. package/vendor/Server/Brain/PlanPersistence.js +196 -196
  30. package/vendor/Server/Brain/SkillExecutor.js +251 -251
  31. package/vendor/Server/Brain/index.js +11 -11
  32. package/vendor/Server/CLI/cli.js +275 -275
  33. package/vendor/Server/CLI/deveco-code/index.js +71 -71
  34. package/vendor/Server/CLI/deveco-code.js +5 -5
  35. package/vendor/Server/CLI/opencode/index.js +817 -818
  36. package/vendor/Server/CLI/opencode.js +5 -5
  37. package/vendor/Server/DbUse/MessageArchive.js +61 -61
  38. package/vendor/Server/DbUse/StorageManager.js +107 -107
  39. package/vendor/Server/DbUse/adapters/BaseAdapter.js +94 -94
  40. package/vendor/Server/DbUse/adapters/FileAdapter.js +138 -138
  41. package/vendor/Server/DbUse/adapters/JsonAdapter.js +138 -138
  42. package/vendor/Server/DbUse/adapters/JsonlAdapter.js +114 -114
  43. package/vendor/Server/DbUse/adapters/SqliteAdapter.js +157 -157
  44. package/vendor/Server/DbUse/index.js +160 -160
  45. package/vendor/Server/DbUse/stores/SessionStore.js +279 -279
  46. package/vendor/Server/DbUse/stores/TaskExecutionStore.js +133 -133
  47. package/vendor/Server/DbUse/stores/TaskRegistryStore.js +262 -262
  48. package/vendor/Server/DbUse/stores/TaskStepStore.js +279 -279
  49. package/vendor/Server/FlexRunner/FlexRunner.js +1759 -1759
  50. package/vendor/Server/FlexRunner/index.js +12 -12
  51. package/vendor/Server/Knowledge/KnowledgeImporter.js +523 -523
  52. package/vendor/Server/Knowledge/KnowledgeManager.js +341 -341
  53. package/vendor/Server/Knowledge/index.js +33 -33
  54. package/vendor/Server/LoopEngine/LoopEngine.js +1133 -1133
  55. package/vendor/Server/LoopEngine/index.js +11 -11
  56. package/vendor/Server/Orchestrator/Orchestrator.js +0 -3
  57. package/vendor/Server/Orchestrator/StepNode.js +312 -312
  58. package/vendor/Server/Orchestrator/index.js +13 -13
  59. package/vendor/Server/Routes/controllers/BrainController.js +241 -241
  60. package/vendor/Server/Routes/controllers/FlexRunnerController.js +1125 -1125
  61. package/vendor/Server/Routes/controllers/HealthController.js +44 -44
  62. package/vendor/Server/Routes/controllers/KnowledgeImportController.js +355 -355
  63. package/vendor/Server/Routes/controllers/LoopEngineController.js +788 -788
  64. package/vendor/Server/Routes/controllers/StatsController.js +57 -57
  65. package/vendor/Server/Routes/controllers/StreamController.js +67 -67
  66. package/vendor/Server/Routes/library/logger.js +179 -179
  67. package/vendor/Server/Routes/library/zipArchive.js +172 -172
  68. package/vendor/Server/Routes/router/Router.js +204 -204
  69. package/vendor/Server/Routes/routes/brain.js +47 -47
  70. package/vendor/Server/Routes/routes/flexrunner.js +72 -72
  71. package/vendor/Server/Routes/routes/health.js +28 -28
  72. package/vendor/Server/Routes/routes/index.js +57 -57
  73. package/vendor/Server/Routes/routes/knowledge.js +55 -55
  74. package/vendor/Server/Routes/routes/loopengine.js +58 -58
  75. package/vendor/Server/Routes/routes/orchestrator.js +61 -61
  76. package/vendor/Server/Routes/routes/registry.js +97 -97
  77. package/vendor/Server/Routes/routes/stats.js +23 -23
  78. package/vendor/Server/Routes/routes/stream.js +30 -30
  79. package/vendor/Server/Routes/server.js +203 -203
  80. package/vendor/Server/Routes/sse/SseHub.js +308 -308
  81. package/vendor/Server/Skills/acceptance-check/SKILL.md +191 -191
  82. package/vendor/Server/Skills/acceptance-check/references/PHASE1_ARTIFACT_COLLECTION.md +52 -52
  83. package/vendor/Server/Skills/acceptance-check/references/PHASE2_CRITERIA_EVALUATION.md +77 -77
  84. package/vendor/Server/Skills/acceptance-check/references/PHASE2_EVIDENCE_VERIFICATION.md +70 -70
  85. package/vendor/Server/Skills/arkts-code-check/SKILL.md +320 -320
  86. package/vendor/Server/Skills/arkts-code-check/references/CODE_CHECK_GUIDE.md +210 -210
  87. package/vendor/Server/Skills/arkts-code-check/references/FILE_TYPE_GUIDE.md +28 -28
  88. package/vendor/Server/Skills/arkts-code-check/references/PHASE1_INFO_COLLECTION.md +233 -233
  89. package/vendor/Server/Skills/arkts-code-check/references/REPORT_TEMPLATE.md +219 -219
  90. package/vendor/Server/Skills/arkts-library-compile-validate/SKILL.md +328 -328
  91. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/build.ps1 +93 -93
  92. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/code-linter.cjs +432 -432
  93. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/migrate.cjs +851 -851
  94. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/ohpm-switch.cjs +788 -788
  95. package/vendor/Server/Skills/arkts-library-demo-code/SKILL.md +291 -291
  96. package/vendor/Server/Skills/arkts-library-demo-code/references/API_SIGNATURE_CHECKS.md +68 -68
  97. package/vendor/Server/Skills/arkts-library-demo-code/references/BUILD_VALIDATION.md +184 -184
  98. package/vendor/Server/Skills/arkts-library-demo-code/references/CODE_STANDARDS.md +337 -337
  99. package/vendor/Server/Skills/arkts-library-demo-code/references/EXAMPLES.md +400 -400
  100. package/vendor/Server/Skills/arkts-library-demo-code/references/SYSTEM_API_LOOKUP.md +98 -98
  101. package/vendor/Server/Skills/arkts-library-demo-code/references/TEMPLATE.md +544 -544
  102. package/vendor/Server/Skills/arkts-library-demo-code/scripts/build.ps1 +93 -93
  103. package/vendor/Server/Skills/arkts-library-demo-code/scripts/code-linter.cjs +432 -432
  104. package/vendor/Server/Skills/arkts-library-demo-code/scripts/migrate.cjs +851 -851
  105. package/vendor/Server/Skills/arkts-library-demo-code/scripts/ohpm-switch.cjs +788 -788
  106. package/vendor/Server/Skills/arkts-library-demo-coverage/SKILL.md +174 -174
  107. package/vendor/Server/Skills/arkts-library-demo-scenario/SKILL.md +321 -321
  108. package/vendor/Server/Skills/arkts-library-demo-scenario/references/EXAMPLES.md +100 -100
  109. package/vendor/Server/Skills/arkts-library-demo-scenario/references/TEMPLATE.md +185 -185
  110. package/vendor/Server/Skills/arkts-library-documentation-quality-check/SKILL.md +233 -233
  111. package/vendor/Server/Skills/arkts-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +102 -102
  112. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/CHECK_DIMENSIONS.md +89 -89
  113. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/COMPLIANCE_CHECKLIST.md +62 -62
  114. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/KB_QUERY_GUIDE.md +107 -107
  115. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/MCP_TOOL_DISCOVERY.md +124 -124
  116. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/REPORT_TEMPLATE.md +90 -90
  117. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/SCORING_FORMULA.md +57 -57
  118. package/vendor/Server/Skills/arkts-library-documentation-quality-check/scripts/validate-skill.cjs +259 -259
  119. package/vendor/Server/Skills/arkts-library-interface-spec/SKILL.md +97 -97
  120. package/vendor/Server/Skills/arkts-library-memory-leak-check/SKILL.md +391 -391
  121. package/vendor/Server/Skills/arkts-library-source-clone/SKILL.md +113 -113
  122. package/vendor/Server/Skills/arkts-library-stability-check/SKILL.md +312 -312
  123. package/vendor/Server/Skills/arkts-library-stability-check/assets/REPORT_TEMPLATE.md +154 -154
  124. package/vendor/Server/Skills/arkts-library-stability-check/references/CHECKLIST.md +165 -165
  125. package/vendor/Server/Skills/arkts-library-stability-check/references/CODE_EXAMPLES.md +308 -308
  126. package/vendor/Server/Skills/arkts-library-stability-check/references/SCORING_RULES.md +90 -90
  127. package/vendor/Server/Skills/arkts-library-stability-check/scripts/validate-skill.cjs +282 -282
  128. package/vendor/Server/Skills/arkts-library-test-coverage-check/SKILL.md +360 -360
  129. package/vendor/Server/Skills/arkts-library-test-coverage-check/assets/REPORT_TEMPLATE.md +145 -145
  130. package/vendor/Server/Skills/arkts-library-test-coverage-check/references/CHECKLIST.md +252 -252
  131. package/vendor/Server/Skills/arkts-library-test-coverage-check/references/MCP_TOOL_USAGE.md +114 -114
  132. package/vendor/Server/Skills/arkts-library-test-coverage-check/scripts/validate-skill.cjs +262 -262
  133. package/vendor/Server/Skills/arkts-library-xts-code/SKILL.md +455 -455
  134. package/vendor/Server/Skills/arkts-library-xts-code/assets/report-template.md +60 -60
  135. package/vendor/Server/Skills/arkts-library-xts-code/references/ACCESS_MODIFIER_PRECHECK.md +76 -76
  136. package/vendor/Server/Skills/arkts-library-xts-code/references/BUILD_VERIFICATION.md +200 -200
  137. package/vendor/Server/Skills/arkts-library-xts-code/references/CODE_STANDARDS.md +518 -518
  138. package/vendor/Server/Skills/arkts-library-xts-code/references/SUBAGENT_PROMPT_TEMPLATE.md +276 -276
  139. package/vendor/Server/Skills/arkts-library-xts-code/references/SYSTEM_API_LOOKUP.md +92 -92
  140. package/vendor/Server/Skills/arkts-library-xts-code/references/XTS_TEMPLATE.md +767 -767
  141. package/vendor/Server/Skills/arkts-library-xts-code/scripts/build.ps1 +93 -93
  142. package/vendor/Server/Skills/arkts-library-xts-code/scripts/code-linter.cjs +432 -432
  143. package/vendor/Server/Skills/arkts-library-xts-code/scripts/migrate.cjs +851 -851
  144. package/vendor/Server/Skills/arkts-library-xts-code/scripts/ohpm-switch.cjs +788 -788
  145. package/vendor/Server/Skills/arkts-library-xts-code/scripts/precheck-access-modifiers.cjs +221 -221
  146. package/vendor/Server/Skills/arkts-library-xts-code-fix/SKILL.md +228 -228
  147. package/vendor/Server/Skills/arkts-library-xts-coverage/SKILL.md +97 -97
  148. package/vendor/Server/Skills/arkts-library-xts-doc/SKILL.md +194 -194
  149. package/vendor/Server/Skills/arkts-library-xts-doc/references/EXAMPLES.md +575 -575
  150. package/vendor/Server/Skills/arkts-library-xts-doc/references/TEMPLATE.md +574 -574
  151. package/vendor/Server/Skills/arkts-library-xts-doc/references/TESTABILITY_GUIDE.md +182 -182
  152. package/vendor/Server/Skills/arkts-library-xts-execution/SKILL.md +490 -490
  153. package/vendor/Server/Skills/arkts-library-xts-execution/references/error-fixing-examples.md +217 -217
  154. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/build.ps1 +93 -93
  155. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/code-linter.cjs +432 -432
  156. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/migrate.cjs +851 -851
  157. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/ohpm-switch.cjs +788 -788
  158. package/vendor/Server/Skills/flutter-code-check/SKILL.md +299 -299
  159. package/vendor/Server/Skills/flutter-code-check/assets/OUTPUT_TEMPLATE.md +311 -311
  160. package/vendor/Server/Skills/flutter-code-check/references/CHECKLIST.md +190 -190
  161. package/vendor/Server/Skills/flutter-code-check/references/PLATFORMS.md +133 -133
  162. package/vendor/Server/Skills/flutter-code-check/scripts/validate-skill.cjs +259 -259
  163. package/vendor/Server/Skills/flutter-interface/README.md +75 -75
  164. package/vendor/Server/Skills/flutter-interface/SKILL.md +291 -291
  165. package/vendor/Server/Skills/flutter-interface/references/EXAMPLES.md +336 -336
  166. package/vendor/Server/Skills/flutter-interface/references/GIT_CLONE_GUIDE.md +190 -190
  167. package/vendor/Server/Skills/flutter-interface/references/SCRIPT_REFERENCE.md +258 -258
  168. package/vendor/Server/Skills/flutter-interface/references/TEMPLATE.md +254 -254
  169. package/vendor/Server/Skills/flutter-library-consistency-check/SKILL.md +517 -517
  170. package/vendor/Server/Skills/flutter-library-consistency-check/references/CHECKLIST.md +381 -381
  171. package/vendor/Server/Skills/flutter-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +341 -341
  172. package/vendor/Server/Skills/flutter-library-consistency-check/references/PLATFORM_LIMITATION_GUIDE.md +71 -71
  173. package/vendor/Server/Skills/flutter-library-documentation-quality-check/SKILL.md +518 -518
  174. package/vendor/Server/Skills/flutter-library-documentation-quality-check/references/CHECKLIST.md +406 -406
  175. package/vendor/Server/Skills/flutter-library-memory-leak-check/SKILL.md +652 -652
  176. package/vendor/Server/Skills/flutter-library-memory-leak-check/references/CHECKLIST.md +396 -396
  177. package/vendor/Server/Skills/flutter-library-stability-check/SKILL.md +744 -744
  178. package/vendor/Server/Skills/flutter-library-stability-check/references/CHECKLIST.md +720 -720
  179. package/vendor/Server/Skills/flutter-library-test-coverage-check/SKILL.md +414 -414
  180. package/vendor/Server/Skills/flutter-library-test-coverage-check/assets/REPORT_TEMPLATE.md +150 -150
  181. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/CHECKLIST.md +304 -304
  182. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCORING_RULES.md +265 -265
  183. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCRIPT_USAGE.md +286 -286
  184. package/vendor/Server/Skills/knowledge-import/SKILL.md +383 -383
  185. package/vendor/Server/Skills/knowledge-import/references/MCP_TOOL_USAGE.md +165 -165
  186. package/vendor/Server/Skills/knowledge-import/references/SKILL_LOCATOR_GUIDE.md +91 -91
  187. package/vendor/Server/Skills/knowledge-import/references/SKILL_OPTIMIZATION_GUIDE.md +127 -127
  188. package/vendor/Server/Skills/ohos-lib-pr-push/SKILL.md +453 -301
  189. package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_CHECKLIST.md +151 -0
  190. package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_ISSUE_TEMPLATE.md +257 -105
  191. package/vendor/Server/Skills/ohos-lib-pr-push/references/GITCODE_API.md +191 -127
  192. package/vendor/Server/Skills/ohos-lib-pr-push/scripts/gitcode-api.cjs +317 -208
  193. package/vendor/Server/Skills/rn-code-check/SKILL.md +320 -320
  194. package/vendor/Server/Skills/rn-code-check/references/API-GUIDE.md +234 -234
  195. package/vendor/Server/Skills/rn-code-check/references/CHECKLIST.md +188 -188
  196. package/vendor/Server/Skills/rn-code-check/references/REPORT-TEMPLATE.md +246 -246
  197. package/vendor/Server/Skills/rn-lib-add-example/SKILL.md +198 -198
  198. package/vendor/Server/Skills/rn-lib-add-example/references/APP_RENAME_GUIDE.md +40 -40
  199. package/vendor/Server/Skills/rn-lib-add-example/references/SHELL_ADAPTATION_CHECKLIST.md +78 -78
  200. package/vendor/Server/Skills/rn-lib-add-example/references/TEMPLATE_REPO_GUIDE.md +70 -70
  201. package/vendor/Server/Skills/rn-lib-add-example/references/VERIFICATION_GUIDE.md +47 -47
  202. package/vendor/Server/Skills/rn-lib-add-example/scripts/create-example.cjs +252 -252
  203. package/vendor/Server/Skills/rn-lib-update-doc/SKILL.md +176 -176
  204. package/vendor/Server/Skills/rn-lib-update-doc/config.json +5 -5
  205. package/vendor/Server/Skills/rn-lib-update-doc/references/changelog-template.md +35 -35
  206. package/vendor/Server/Skills/rn-lib-update-doc/references/format-diff.md +137 -137
  207. package/vendor/Server/Skills/rn-lib-update-doc/references/link-registry.json +33 -33
  208. package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2-overview.md +40 -40
  209. package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2.md +429 -429
  210. package/vendor/Server/Skills/rn-lib-update-doc/scripts/detect-readme-format.cjs +105 -105
  211. package/vendor/Server/Skills/rn-lib-update-doc/scripts/find-usage-doc.cjs +90 -90
  212. package/vendor/Server/Skills/rn-lib-update-doc/scripts/link-verify.cjs +213 -213
  213. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-changelog.cjs +73 -73
  214. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-package-meta.cjs +258 -258
  215. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-readme-links.cjs +341 -341
  216. package/vendor/Server/Skills/rn-lib-update-doc/scripts/resolve-usage-docs.cjs +67 -67
  217. package/vendor/Server/Skills/rn-library-consistency-check/SKILL.md +299 -299
  218. package/vendor/Server/Skills/rn-library-consistency-check/assets/REPORT_TEMPLATE.md +293 -293
  219. package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_COMPONENT_CHECK_GUIDE.md +857 -857
  220. package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_TURBOMODULE_CHECK_GUIDE.md +856 -856
  221. package/vendor/Server/Skills/rn-library-consistency-check/references/CHECKLIST.md +157 -157
  222. package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_COMPONENT_CHECK_GUIDE.md +801 -801
  223. package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_TURBOMODULE_CHECK_GUIDE.md +683 -683
  224. package/vendor/Server/Skills/rn-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +233 -233
  225. package/vendor/Server/Skills/rn-library-consistency-check/references/NATIVE_COMPONENT_IDENTIFICATION.md +1373 -1373
  226. package/vendor/Server/Skills/rn-library-consistency-check/references/SCORING_STANDARD.md +220 -220
  227. package/vendor/Server/Skills/rn-library-consistency-check/scripts/validate-skill.py +245 -245
  228. package/vendor/Server/Skills/rn-library-documentation-quality-check/SKILL.md +263 -263
  229. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL.md +414 -414
  230. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL_en.md +413 -413
  231. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +311 -311
  232. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CHECK_CHECKLIST.md +355 -355
  233. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CROSS_VALIDATION_GUIDE.md +115 -115
  234. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/DOC_COLLECTION_GUIDE.md +139 -139
  235. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/EXAMPLES.md +586 -586
  236. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/GOTCHAS.md +57 -57
  237. package/vendor/Server/Skills/rn-library-documentation-quality-check/scripts/validate-skill.py +259 -259
  238. package/vendor/Server/Skills/rn-library-interface-analyzer/SKILL.md +301 -301
  239. package/vendor/Server/Skills/rn-library-interface-analyzer/assets/REPORT_TEMPLATE.md +148 -148
  240. package/vendor/Server/Skills/rn-library-interface-analyzer/references/DOC_ANNOTATION_GUIDE.md +118 -118
  241. package/vendor/Server/Skills/rn-library-interface-analyzer/references/SCRIPT_USAGE_GUIDE.md +168 -168
  242. package/vendor/Server/Skills/rn-library-interface-analyzer/references/URL_PARSING_RULES.md +176 -176
  243. package/vendor/Server/Skills/rn-library-issue-generalizer/SKILL.md +274 -274
  244. package/vendor/Server/Skills/rn-library-issue-generalizer/assets/case-template.md +45 -45
  245. package/vendor/Server/Skills/rn-library-issue-generalizer/assets/rule-template.md +25 -25
  246. package/vendor/Server/Skills/rn-library-issue-generalizer/references/PR_FETCH_GUIDE.md +61 -61
  247. package/vendor/Server/Skills/rn-library-issue-generalizer/references/RULE_TEMPLATE_GUIDE.md +165 -165
  248. package/vendor/Server/Skills/rn-library-issue-generalizer/scripts/fetch-pr-info.py +239 -239
  249. package/vendor/Server/Skills/rn-library-known-issue-check/SKILL.md +263 -263
  250. package/vendor/Server/Skills/rn-library-known-issue-check/assets/REPORT_TEMPLATE.md +96 -96
  251. package/vendor/Server/Skills/rn-library-known-issue-check/references/COMPLIANCE_CHECKLIST.md +57 -57
  252. package/vendor/Server/Skills/rn-library-known-issue-check/references/INSPECTION_GUIDE.md +99 -99
  253. package/vendor/Server/Skills/rn-library-known-issue-check/references/PRESCREEN_GUIDE.md +64 -64
  254. package/vendor/Server/Skills/rn-library-known-issue-check/references/SOURCE_PREP_GUIDE.md +74 -74
  255. package/vendor/Server/Skills/rn-library-known-issue-check/scripts/validate-known-issue-report.py +164 -164
  256. package/vendor/Server/Skills/rn-library-memory-leak-check/SKILL.md +356 -339
  257. package/vendor/Server/Skills/rn-library-memory-leak-check/assets/REPORT_TEMPLATE.md +85 -83
  258. package/vendor/Server/Skills/rn-library-memory-leak-check/references/CHECKLIST.md +905 -859
  259. package/vendor/Server/Skills/rn-library-memory-leak-check/references/HARMONY_CODE_PATTERNS.md +124 -122
  260. package/vendor/Server/Skills/rn-library-memory-leak-check/scripts/scan_harmony_code.py +287 -279
  261. package/vendor/Server/Skills/rn-library-stability-check/SKILL.md +273 -273
  262. package/vendor/Server/Skills/rn-library-stability-check/assets/REPORT_TEMPLATE.md +129 -129
  263. package/vendor/Server/Skills/rn-library-stability-check/references/CHECKLIST.md +581 -581
  264. package/vendor/Server/Skills/rn-library-stability-check/references/SCORING_RULES.md +138 -138
  265. package/vendor/Server/Skills/rn-library-stability-check/scripts/scan-harmony-code.py +168 -168
  266. package/vendor/Server/Skills/rn-library-test-coverage-check/SKILL.md +526 -506
  267. package/vendor/Server/Skills/rn-library-test-coverage-check/references/CHECKLIST.md +321 -280
  268. package/vendor/Server/Skills/rn-library-test-coverage-check/references/DEMO_LOCATION.md +221 -221
  269. package/vendor/Server/Skills/rn-library-test-coverage-check/references/REPORT_TEMPLATE.md +220 -209
  270. package/vendor/Server/Skills/rn-library-test-coverage-check/references/SCRIPT_USAGE.md +325 -325
  271. package/vendor/Server/Skills/rn-ohos-xts-generator/SKILL.md +279 -279
  272. package/vendor/Server/Skills/rn-ohos-xts-generator/assets/TEST_FILE_TEMPLATES.md +404 -404
  273. package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_TROUBLESHOOTING.md +185 -185
  274. package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_WORKFLOW.md +265 -265
  275. package/vendor/Server/Skills/rn-ohos-xts-generator/references/COMMON_CONFIG.md +189 -189
  276. package/vendor/Server/Skills/rn-ohos-xts-generator/references/CONFIG_GUIDE.md +203 -203
  277. package/vendor/Server/Skills/rn-ohos-xts-generator/references/COVERAGE_ANALYZER.md +147 -147
  278. package/vendor/Server/Skills/rn-ohos-xts-generator/references/DESIGN_DOC_GUIDE.md +148 -148
  279. package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_FLOW.md +165 -165
  280. package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_STRATEGY.md +195 -195
  281. package/vendor/Server/Skills/rn-ohos-xts-generator/references/HARMONY_SCANNER.md +249 -249
  282. package/vendor/Server/Skills/rn-ohos-xts-generator/references/JEST_FRAMEWORK.md +235 -235
  283. package/vendor/Server/Skills/rn-ohos-xts-generator/references/PLATFORM_COMPAT.md +161 -161
  284. package/vendor/Server/Skills/rn-ohos-xts-generator/references/RN_TEST_PATTERNS.md +413 -413
  285. package/vendor/Server/Skills/rn-ohos-xts-generator/references/SOURCE_PARSER.md +235 -235
  286. package/vendor/Server/Skills/rn-ohos-xts-generator/references/TEST_CONVENTIONS.md +245 -245
  287. package/vendor/Server/Skills/rn-ohos-xts-generator/references/TROUBLESHOOTING.md +282 -282
  288. package/vendor/Server/Skills/rn-ohos-xts-generator/references/USAGE_GUIDE.md +251 -251
  289. package/vendor/Server/Skills/rnoh-cptf-api-test/SKILL.md +469 -469
  290. package/vendor/Server/Skills/rnoh-cptf-api-test/assets/CPTF_TEST_TEMPLATE.md +310 -310
  291. package/vendor/Server/Skills/rnoh-cptf-api-test/assets/DEMO_PAGE_TEMPLATE.md +303 -303
  292. package/vendor/Server/Skills/rnoh-cptf-api-test/references/CPTF_TEST_GENERATION_GUIDE.md +421 -421
  293. package/vendor/Server/Skills/rnoh-cptf-api-test/references/DEMO_GENERATION_GUIDE.md +358 -358
  294. package/vendor/Server/Skills/rnoh-cptf-api-test/references/QUALITY_CHECKLIST.md +114 -114
  295. package/vendor/Server/Skills/rnoh-cptf-api-test/references/SPEC_PARSING_GUIDE.md +274 -274
  296. package/vendor/Server/Skills/rnoh-cptf-api-test/scripts/validate-rnoh-cptf-api-test.sh +185 -185
  297. package/vendor/Server/Skills/rnoh-cptf-demo-test/SKILL.md +191 -191
  298. package/vendor/Server/Skills/rnoh-cptf-demo-test/assets/TEST_TEMPLATE.md +216 -216
  299. package/vendor/Server/Skills/rnoh-cptf-demo-test/references/CPTF_SETUP.md +107 -107
  300. package/vendor/Server/Skills/rnoh-cptf-demo-test/references/DEMO_ANALYSIS.md +120 -120
  301. package/vendor/Server/Skills/rnoh-cptf-demo-test/scripts/validate-rnoh-cptf-test.sh +108 -108
  302. package/vendor/Server/Skills/rnoh-cptf-test-run/SKILL.md +237 -237
  303. package/vendor/Server/Skills/rnoh-cptf-test-run/references/DEBUG_PLAYBOOK.md +261 -261
  304. package/vendor/Server/Skills/rnoh-cptf-test-run/scripts/validate-run-env.sh +112 -112
  305. package/vendor/Server/Skills/rnoh-lib-code-adapt/SKILL.md +497 -497
  306. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/adapt-checklist.md +270 -270
  307. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/api-migration-checklist.md +164 -164
  308. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/common-compile-errors.md +556 -556
  309. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/deveco-cli-tools.md +459 -459
  310. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/edge-cases.md +65 -65
  311. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/har-tgz-build.md +512 -512
  312. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/version-compat-matrix.md +132 -132
  313. package/vendor/Server/Skills/rnoh-lib-code-adapt/scripts/auto-integrate.sh +424 -424
  314. package/vendor/Server/Skills/rnoh-lib-demo-coverage/SKILL.md +137 -137
  315. package/vendor/Server/Skills/rnoh-lib-demo-create/SKILL.md +306 -306
  316. package/vendor/Server/Skills/rnoh-lib-demo-create/assets/DEMO_PAGE_TEMPLATE.md +485 -485
  317. package/vendor/Server/Skills/rnoh-lib-demo-create/assets/INDEX_TEMPLATE.md +172 -172
  318. package/vendor/Server/Skills/rnoh-lib-demo-create/references/DEMO_CODE_RULES.md +422 -422
  319. package/vendor/Server/Skills/rnoh-lib-demo-create/references/QUALITY_CHECKLIST.md +95 -95
  320. package/vendor/Server/Skills/rnoh-lib-demo-create/references/SOURCE_EXPLORATION.md +169 -169
  321. package/vendor/Server/Skills/rnoh-lib-demo-doc/SKILL.md +554 -554
  322. package/vendor/Server/Skills/rnoh-lib-demo-doc/assets/DEMO_DOC_TEMPLATE.md +106 -106
  323. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/COVERAGE_INCREMENTAL.md +216 -216
  324. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/DEMO_DESIGN_RULES.md +413 -413
  325. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/OUTPUT_FORMAT.md +269 -269
  326. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/QUALITY_CHECKLIST.md +98 -98
  327. package/vendor/Server/Skills/rnoh-lib-func-test/SKILL.md +337 -337
  328. package/vendor/Server/Skills/rnoh-lib-rnt-search/SKILL.md +722 -722
  329. package/vendor/Server/Skills/rnoh-lib-rnt-search/assets/PORT_REPORT_TEMPLATE.md +219 -219
  330. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/DEMO_PORTING_GUIDE.md +345 -345
  331. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/PORT_VERIFICATION.md +269 -269
  332. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/RNT_PROJECT_STRUCTURE.md +173 -173
  333. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/analyze-demo-deps.cjs +267 -267
  334. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/detect-rnoh-version.cjs +174 -174
  335. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/find-rnt-demo.sh +111 -111
  336. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/port-demo.sh +186 -186
  337. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/read-lib-meta.cjs +150 -150
  338. package/vendor/Server/Skills/rnoh-lib-test-align/SKILL.md +296 -296
  339. package/vendor/Server/Skills/rnoh-lib-test-align/references/jest-troubleshooting.md +371 -371
  340. package/vendor/Server/Skills/rnoh-lib-test-align/references/port-test-demo-guide.md +212 -212
  341. package/vendor/Server/Skills/rnoh-lib-test-align/references/runtime-troubleshooting.md +345 -345
  342. package/vendor/Server/Skills/rnoh-lib-test-align/references/unit-test-template.md +223 -223
  343. package/vendor/Server/Skills/rnoh-lib-test-align/scripts/port-test-demo.sh +1053 -1053
  344. package/vendor/Server/Skills/rnoh-lib-version-diff/SKILL.md +295 -255
  345. package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_ADAPTATION.md +82 -77
  346. package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_API_LOOKUP.md +224 -224
  347. package/vendor/Server/Skills/rnoh-lib-version-diff/references/script-reference.md +175 -174
  348. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/detect-upstream-version.js +967 -967
  349. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/generate-diff.js +1798 -1798
  350. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/package.json +5 -5
  351. package/vendor/Server/Skills/rnoh-lib-version-diff/templates/report-template.md +180 -137
  352. package/vendor/Server/Skills/rnoh-lib-xts-coverage/SKILL.md +145 -145
  353. package/vendor/Server/Skills/skill-generator/SKILL.md +365 -365
  354. package/vendor/Server/Skills/skill-generator/assets/SKILL_TEMPLATE.md +183 -183
  355. package/vendor/Server/Skills/skill-generator/references/COMPLIANCE_CHECKLIST.md +82 -82
  356. package/vendor/Server/Skills/skill-generator/references/KB_QUERY_GUIDE.md +110 -110
  357. package/vendor/Server/Skills/skill-generator/references/MCP_TOOL_DISCOVERY.md +122 -122
  358. package/vendor/Server/Skills/skill-generator/references/SKILL_SPEC.md +121 -121
  359. package/vendor/Server/Skills/skill-generator/scripts/validate-skill.cjs +259 -259
  360. package/vendor/Server/Skills/task-analysis/SKILL.md +234 -234
  361. package/vendor/Server/Skills/task-analysis/assets/OUTPUT_EXAMPLES.md +160 -160
  362. package/vendor/Server/Skills/task-analysis/references/ACCEPTANCE_CRITERIA_GUIDE.md +190 -190
  363. package/vendor/Server/Skills/task-analysis/references/ANALYSIS_SCHEMA.md +224 -224
  364. package/vendor/Server/Skills/task-analysis/references/INTEGRATION_CONTEXT.md +162 -162
  365. package/vendor/Server/Skills/task-analysis/references/LESSONS_LEARNED.md +55 -55
  366. package/vendor/Server/Skills/task-analysis/references/REPLAN_CONTEXT_GUIDE.md +126 -126
  367. package/vendor/Server/Skills/task-analysis/scripts/validate-analysis-output.sh +256 -256
  368. package/vendor/Server/Skills/task-decomposition/SKILL.md +528 -528
  369. package/vendor/Server/Skills/task-decomposition/assets/OUTPUT_EXAMPLES.md +451 -451
  370. package/vendor/Server/Skills/task-decomposition/references/ACCEPTANCE_CRITERIA_GUIDE.md +179 -179
  371. package/vendor/Server/Skills/task-decomposition/references/DEPENDENCY_GRAPH_GUIDE.md +152 -152
  372. package/vendor/Server/Skills/task-decomposition/references/INTEGRATION_CONTEXT.md +175 -175
  373. package/vendor/Server/Skills/task-decomposition/references/REPLAN_CONTEXT_GUIDE.md +195 -195
  374. package/vendor/Server/Skills/task-decomposition/references/TASK_DECOMPOSITION_TEMPLATES.md +226 -226
  375. package/vendor/Server/Skills/task-decomposition/scripts/list-available-skills.cjs +263 -263
  376. package/vendor/Server/Skills/task-decomposition/scripts/skill-blacklist.json +29 -29
  377. package/vendor/Server/Skills/task-decomposition/scripts/validate-decomposition-output.cjs +376 -376
  378. package/vendor/Server/Skills/task-decomposition/scripts/validate-param-consistency.cjs +259 -259
  379. package/vendor/Server/Skills/task-decomposition/scripts/validate-specified-skills.cjs +216 -216
  380. package/vendor/Server/Skills/task-decomposition/scripts/validate-step-graph.cjs +424 -424
  381. package/vendor/Server/Skills/tpc-cpp-check/SKILL.md +427 -427
  382. package/vendor/Server/Skills/tpc-cpp-check/references/CHECKLIST.md +214 -214
  383. package/vendor/Server/Skills/tpc-cpp-check/references/HPKBUILD_GUIDE.md +235 -235
  384. package/vendor/Server/Skills/tpc-cpp-check/references/REPORT_TEMPLATE.md +250 -250
  385. package/vendor/Server/TestCheck/TestCheck.js +775 -775
  386. package/vendor/Server/TestCheck/index.js +11 -11
  387. package/vendor/Server/library/McpToolGuide.js +280 -280
  388. package/vendor/Server/library/StatsService.js +126 -126
  389. package/vendor/Server/library/cstTime.js +16 -16
  390. package/vendor/VERSION +3 -3
  391. package/workflows/pr-check.mjs +105 -105
  392. package/workflows/pr-push.mjs +192 -192
  393. package/vendor/Server/Agent/SkillSelector/types.js +0 -63
@@ -1,576 +1,576 @@
1
- # XTS 用例生成示例
2
-
3
- 本文档展示基于 **lodash(工具函数库)** 的 ohos 化版本接口规格文档生成的完整 XTS 用例描述示例。
4
-
5
- > 说明:本示例假设已有 lodash ohos 化版本的接口规格文档,接口基于 lodash 的真实 API 设计。用例内容严格来源于接口规格文档,所有接口签名均为真实存在的接口。
6
-
7
- ---
8
-
9
- ## 一、接口规格文档摘要(输入示例)
10
-
11
- 以下是假设的 lodash ohos 化版本接口规格文档关键片段(本技能的输入):
12
-
13
- ```markdown
14
- # lodash ohos 化版本接口规格
15
-
16
- ## 核心接口
17
-
18
- ### _.chunk(array, size)
19
- - 参数:array: Array(必填);size: number(可选,默认 1)
20
- - 返回:Array<Array>
21
- - 功能:将数组拆分成多个 size 长度的块
22
-
23
- ### _.clamp(number, lower, upper)
24
- - 参数:number: number(必填);lower: number(必填);upper: number(必填)
25
- - 返回:number
26
- - 功能:将数值限制在 [lower, upper] 范围内
27
-
28
- ### _.clone(value)
29
- - 参数:value: any(必填)
30
- - 返回:any
31
- - 功能:创建值的浅拷贝
32
-
33
- ### _.cloneDeep(value)
34
- - 参数:value: any(必填)
35
- - 返回:any
36
- - 功能:创建值的深拷贝
37
-
38
- ### _.debounce(func, wait, options?)
39
- - 参数:func: Function(必填);wait: number(必填);options?: DebounceOptions(可选)
40
- - 返回:Function
41
- - 功能:创建防抖函数,在 wait 毫秒后执行
42
- - ⚠️ 注意:此接口涉及异步行为和时间控制,测试需设置合理等待时间
43
-
44
- ### _.defaults(object, ...sources)
45
- - 参数:object: Object(必填);sources: Object[](必填)
46
- - 返回:Object
47
- - 功能:将 sources 的属性填充到 object 的未定义属性中
48
-
49
- ### _.difference(array, ...values)
50
- - 参数:array: Array(必填);values: Array[](必填)
51
- - 返回:Array
52
- - 功能:返回 array 中不在 values 中的元素
53
-
54
- ### _.get(object, path, defaultValue?)
55
- - 参数:object: Object(必填);path: string | Array<string>(必填);defaultValue?: any(可选)
56
- - 返回:any
57
- - 功能:根据路径获取对象属性值
58
-
59
- ### _.set(object, path, value)
60
- - 参数:object: Object(必填);path: string | Array<string>(必填);value: any(必填)
61
- - 返回:Object
62
- - 功能:根据路径设置对象属性值
63
-
64
- ### _.throttle(func, wait, options?)
65
- - 参数:func: Function(必填);wait: number(必填);options?: ThrottleOptions(可选)
66
- - 返回:Function
67
- - 功能:创建节流函数,在 wait 毫秒内最多执行一次
68
- - ⚠️ 注意:此接口涉及异步行为和时间控制,测试需设置合理等待时间
69
-
70
- ## 辅助接口
71
-
72
- ### _.isPlainObject(value)
73
- - 参数:value: any(必填)
74
- - 返回:boolean
75
- - 功能:检查 value 是否为普通对象
76
-
77
- ### _.isArray(value)
78
- - 参数:value: any(必填)
79
- - 返回:boolean
80
- - 功能:检查 value 是否为数组
81
-
82
- ### _.isNumber(value)
83
- - 参数:value: any(必填)
84
- - 返回:boolean
85
- - 功能:检查 value 是否为数值
86
-
87
- ## UI 相关接口(不可测试)
88
-
89
- ### _.template(templateString, options?)
90
- - 参数:templateString: string(必填);options?: TemplateOptions(可选)
91
- - 返回:Function
92
- - 功能:创建模板编译函数,返回的函数用于生成 HTML 字符串
93
- - ❌ 不可测试原因:模板函数的输出主要用于 UI 渲染,需配合实际 UI 环境验证
94
-
95
- ## 错误处理
96
- - 参数类型不匹配:通常返回 undefined 或空值,不抛出异常
97
- - 空值输入:通常返回空数组/空对象,不抛出异常
98
- ```
99
-
100
- ---
101
-
102
- ## 二、生成的 XTS 用例描述示例
103
-
104
- 以下是本技能基于上述接口规格文档生成的 `ohos_lodashxts用例描述.md` 完整内容示例:
105
-
106
- ---
107
-
108
- ```markdown
109
- # ohos_lodash XTS 用例描述
110
-
111
- ## 概述
112
-
113
- - **库名称**:lodash(ohos 化版本)
114
- - **文档生成时间**:2026-05-16
115
- - **基于文档**:lodash规格文档.md
116
- - **用例总数**:15
117
- - **可测试接口数**:11
118
- - **不可测试接口数**:1
119
- - **功能覆盖模块**:数组操作、数值处理、对象拷贝、对象属性访问、对象属性设置、类型判断
120
-
121
- ## 接口可测试性分析
122
-
123
- ### 可测试接口列表
124
-
125
- | 接口名称 | 接口签名 | 可测试原因 |
126
- |---------|---------|-----------|
127
- | _.chunk | _.chunk(array: Array, size?: number): Array<Array> | 纯函数,返回值可预测验证 |
128
- | _.clamp | _.clamp(number: number, lower: number, upper: number): number | 纯函数,返回值可预测验证 |
129
- | _.clone | _.clone(value: any): any | 纯函数,返回值可与原值对比验证 |
130
- | _.cloneDeep | _.cloneDeep(value: any): any | 纯函数,返回值可与原值深度对比验证 |
131
- | _.defaults | _.defaults(object: Object, ...sources: Object[]): Object | 纯函数,返回值属性可验证 |
132
- | _.difference | _.difference(array: Array, ...values: Array[]): Array | 纯函数,返回值数组内容可验证 |
133
- | _.get | _.get(object: Object, path: string | Array<string>, defaultValue?: any): any | 纯函数,返回值可验证 |
134
- | _.set | _.set(object: Object, path: string | Array<string>, value: any): Object | 纯函数,对象属性变化可验证 |
135
- | _.isPlainObject | _.isPlainObject(value: any): boolean | 纯函数,返回布尔值可验证 |
136
- | _.isArray | _.isArray(value: any): boolean | 纯函数,返回布尔值可验证 |
137
- | _.isNumber | _.isNumber(value: any): boolean | 纯函数,返回布尔值可验证 |
138
-
139
- ### 不可测试接口列表
140
-
141
- | 接口名称 | 接口签名 | 不可测试原因 |
142
- |---------|---------|-------------|
143
- | _.template | _.template(templateString: string, options?: TemplateOptions): Function | 模板函数输出主要用于 UI 渲染,需配合实际 UI 环境验证,无法通过执行结果直接判断功能正确性 |
144
-
145
- ### 需额外条件的可测试接口
146
-
147
- | 接口名称 | 接口签名 | 额外条件 |
148
- |---------|---------|---------|
149
- | _.debounce | _.debounce(func: Function, wait: number, options?: DebounceOptions): Function | 需设置合理等待时间验证异步行为 |
150
- | _.throttle | _.throttle(func: Function, wait: number, options?: ThrottleOptions): Function | 需设置合理等待时间验证异步行为 |
151
-
152
- > 注:`_.debounce` 和 `_.throttle` 涉及异步行为,可在 XTS 测试中通过设置合理的等待时间和调用次数进行验证,故列为"可测试"但需注明额外条件。
153
-
154
- ---
155
-
156
- ## 用例索引表
157
-
158
- | 用例序号 | 用例名称 | 涉及接口 | 模块归属 |
159
- |---------|---------|---------|---------|
160
- | 001 | 数组分块基础功能验证 | _.chunk | 数组操作 |
161
- | 002 | 数值范围限制功能验证 | _.clamp | 数值处理 |
162
- | 003 | 对象浅拷贝功能验证 | _.clone | 对象拷贝 |
163
- | 004 | 对象深拷贝功能验证 | _.cloneDeep | 对象拷贝 |
164
- | 005 | 对象默认属性填充功能验证 | _.defaults | 对象操作 |
165
- | 006 | 数组差异计算功能验证 | _.difference | 数组操作 |
166
- | 007 | 对象属性路径访问与设置验证 | _.get, _.set | 对象属性访问 |
167
- | 008 | 对象类型判断组合验证 | _.isPlainObject, _.isArray, _.isNumber | 类型判断 |
168
- | 009 | 数组分块边界条件验证 | _.chunk | 数组操作 |
169
- | 010 | 对象深拷贝嵌套结构验证 | _.cloneDeep | 对象拷贝 |
170
- | 011 | 对象属性路径非法输入验证 | _.get, _.set | 对象属性访问 |
171
- | 012 | 类型判断边界值验证 | _.isNumber | 类型判断 |
172
- | 013 | 空值输入处理验证 | _.chunk, _.get, _.clone | 数组操作/对象属性访问/对象拷贝 |
173
- | 014 | 异常参数与边界值输入验证 | _.chunk, _.clamp, _.difference | 数组操作/数值处理 |
174
- | 015 | 大数据量输入处理验证 | _.chunk, _.difference, _.cloneDeep, _.get | 数组操作/对象拷贝/对象属性访问 |
175
-
176
- ---
177
-
178
- ## XTS 用例详细描述
179
-
180
- ### 用例序号:001
181
-
182
- **用例名称**:数组分块基础功能验证
183
-
184
- **用例描述**:
185
- 验证 `_.chunk` 接口的基础分块功能是否正确实现。该用例通过传入不同长度和分块大小的数组,验证返回的分块结果是否符合预期,确保分块逻辑的正确性和准确性。测试覆盖常规数组分块、默认分块大小、自定义分块大小等场景。
186
-
187
- **用例预期结果**:
188
- 1. 调用 `_.chunk([1, 2, 3, 4, 5], 2)` 后,返回值应为 `[[1, 2], [3, 4], [5]]`
189
- 2. 调用 `_.chunk([1, 2, 3], 1)` 后,返回值应为 `[[1], [2], [3]]`(默认 size=1)
190
- 3. 调用 `_.chunk([1, 2, 3, 4], 3)` 后,返回值应为 `[[1, 2, 3], [4]]`
191
- 4. 所有返回值均为 Array<Array> 类型
192
-
193
- **对应的函数接口**:
194
- - `_.chunk(array: Array, size?: number): Array<Array>`
195
- - 功能:将数组拆分成多个 size 长度的块
196
- - 在本用例中的作用:验证分块逻辑的正确性
197
-
198
- ---
199
-
200
- ### 用例序号:002
201
-
202
- **用例名称**:数值范围限制功能验证
203
-
204
- **用例描述**:
205
- 验证 `_.clamp` 接口的数值范围限制功能是否正确实现。该用例通过传入不同位置的数值(在范围内、超出下限、超出上限),验证返回值是否被正确限制在 [lower, upper] 范围内,确保范围限制逻辑的正确性。
206
-
207
- **用例预期结果**:
208
- 1. 调用 `_.clamp(10, 5, 15)` 后,返回值应为 `10`(在范围内,返回原值)
209
- 2. 调用 `_.clamp(3, 5, 15)` 后,返回值应为 `5`(超出下限,返回下限值)
210
- 3. 调用 `_.clamp(20, 5, 15)` 后,返回值应为 `15`(超出上限,返回上限值)
211
- 4. 调用 `_.clamp(-5, 0, 10)` 后,返回值应为 `0`(负值超出下限)
212
- 5. 所有返回值均为 number 类型
213
-
214
- **对应的函数接口**:
215
- - `_.clamp(number: number, lower: number, upper: number): number`
216
- - 功能:将数值限制在 [lower, upper] 范围内
217
- - 在本用例中的作用:验证范围限制逻辑的正确性
218
-
219
- ---
220
-
221
- ### 用例序号:003
222
-
223
- **用例名称**:对象浅拷贝功能验证
224
-
225
- **用例描述**:
226
- 验证 `_.clone` 接口的浅拷贝功能是否正确实现。该用例通过传入不同类型的值(对象、数组、原始值),验证返回的拷贝值是否与原值相等但非同一引用,确保浅拷贝逻辑的正确性。特别验证浅拷贝特性:嵌套对象仍为同一引用。
227
-
228
- **用例预期结果**:
229
- 1. 调用 `_.clone({ a: 1, b: 2 })` 后,返回值应与原对象结构相等:`{ a: 1, b: 2 }`
230
- 2. 返回对象与原对象非同一引用:`cloneObj !== originalObj` 应为 `true`
231
- 3. 调用 `_.clone([1, 2, 3])` 后,返回值应为 `[1, 2, 3]`
232
- 4. 返回数组与原数组非同一引用:`cloneArr !== originalArr` 应为 `true`
233
- 5. 浅拷贝特性验证:拷贝嵌套对象后,嵌套对象仍为同一引用
234
-
235
- **对应的函数接口**:
236
- - `_.clone(value: any): any`
237
- - 功能:创建值的浅拷贝
238
- - 在本用例中的作用:验证浅拷贝逻辑的正确性
239
-
240
- ---
241
-
242
- ### 用例序号:004
243
-
244
- **用例名称**:对象深拷贝功能验证
245
-
246
- **用例描述**:
247
- 验证 `_.cloneDeep` 接口的深拷贝功能是否正确实现。该用例通过传入嵌套结构的对象,验证返回的拷贝值是否与原值结构完全相等,且所有嵌套层级均为新引用,确保深拷贝逻辑的正确性。与浅拷贝对比,验证深拷贝的核心特性:嵌套对象也为新引用。
248
-
249
- **用例预期结果**:
250
- 1. 调用 `_.cloneDeep({ a: { b: { c: 1 } } })` 后,返回值应与原对象结构相等
251
- 2. 返回对象与原对象非同一引用:`cloneObj !== originalObj` 应为 `true`
252
- 3. 嵌套对象也为新引用:`cloneObj.a !== originalObj.a` 应为 `true`
253
- 4. 深层嵌套也为新引用:`cloneObj.a.b !== originalObj.a.b` 应为 `true`
254
- 5. 拷贝后修改嵌套对象不影响原对象:修改 cloneObj.a.b.c 后,originalObj.a.b.c 应保持原值
255
-
256
- **对应的函数接口**:
257
- - `_.cloneDeep(value: any): any`
258
- - 功能:创建值的深拷贝
259
- - 在本用例中的作用:验证深拷贝逻辑的正确性,特别是嵌套结构的独立拷贝特性
260
-
261
- ---
262
-
263
- ### 用例序号:005
264
-
265
- **用例名称**:对象默认属性填充功能验证
266
-
267
- **用例描述**:
268
- 验证 `_.defaults` 接口的属性填充功能是否正确实现。该用例通过传入目标对象和源对象,验证返回的对象中未定义属性是否被源对象的属性填充,已定义属性是否保持原值,确保属性填充逻辑的正确性。
269
-
270
- **用例预期结果**:
271
- 1. 调用 `_.defaults({ a: 1 }, { a: 2, b: 2 })` 后,返回值应为 `{ a: 1, b: 2 }`(a 保持原值,b 被填充)
272
- 2. 调用 `_.defaults({}, { a: 1, b: 2 })` 后,返回值应为 `{ a: 1, b: 2 }`(空对象被完全填充)
273
- 3. 调用 `_.defaults({ a: undefined }, { a: 1 })` 后,返回值应为 `{ a: 1 }`(undefined 属性被填充)
274
- 4. 调用 `_.defaults({ a: null }, { a: 1 })` 后,返回值应为 `{ a: null }`(null 不视为未定义,保持原值)
275
- 5. 多源对象填充验证:`_.defaults({}, { a: 1 }, { b: 2 })` 应返回 `{ a: 1, b: 2 }`
276
-
277
- **对应的函数接口**:
278
- - `_.defaults(object: Object, ...sources: Object[]): Object`
279
- - 功能:将 sources 的属性填充到 object 的未定义属性中
280
- - 在本用例中的作用:验证属性填充逻辑的正确性
281
-
282
- ---
283
-
284
- ### 用例序号:006
285
-
286
- **用例名称**:数组差异计算功能验证
287
-
288
- **用例描述**:
289
- 验证 `_.difference` 接口的数组差异计算功能是否正确实现。该用例通过传入主数组和排除数组,验证返回的数组是否仅包含主数组中不存在于排除数组的元素,确保差异计算逻辑的正确性。
290
-
291
- **用例预期结果**:
292
- 1. 调用 `_.difference([1, 2, 3, 4], [2, 4])` 后,返回值应为 `[1, 3]`
293
- 2. 调用 `_.difference([1, 2, 3], [])` 后,返回值应为 `[1, 2, 3]`(空排除数组)
294
- 3. 调用 `_.difference([], [1, 2, 3])` 后,返回值应为 `[]`(空主数组)
295
- 4. 调用 `_.difference([1, 2, 3], [1, 2, 3])` 后,返回值应为 `[]`(完全重叠)
296
- 5. 多排除数组验证:`_.difference([1, 2, 3, 4], [2], [4])` 应返回 `[1, 3]`
297
-
298
- **对应的函数接口**:
299
- - `_.difference(array: Array, ...values: Array[]): Array`
300
- - 功能:返回 array 中不在 values 中的元素
301
- - 在本用例中的作用:验证差异计算逻辑的正确性
302
-
303
- ---
304
-
305
- ### 用例序号:007
306
-
307
- **用例名称**:对象属性路径访问与设置验证
308
-
309
- **用例描述**:
310
- 验证 `_.get` 和 `_.set` 接口的属性路径访问与设置功能是否正确实现。该用例通过协同调用两个接口,先使用 `_.set` 设置嵌套属性,再使用 `_.get` 获取该属性,验证两个接口的协同工作是否正确,确保属性路径操作的一致性和准确性。
311
-
312
- **用例预期结果**:
313
- 1. 调用 `_.set({}, 'a.b.c', 1)` 后,对象应变为 `{ a: { b: { c: 1 } } }`
314
- 2. 调用 `_.get({ a: { b: { c: 1 } } }, 'a.b.c')` 后,返回值应为 `1`
315
- 3. 协同验证:set 设置属性后,get 应能正确获取设置的值
316
- 4. 调用 `_.get({ a: { b: {} } }, 'a.b.c', 'default')` 后,返回值应为 `'default'`(路径不存在返回默认值)
317
- 5. 数组路径验证:`_.get({ a: [{ b: 1 }] }, ['a', 0, 'b'])` 应返回 `1`
318
-
319
- **对应的函数接口**:
320
- - `_.set(object: Object, path: string | Array<string>, value: any): Object`
321
- - 功能:根据路径设置对象属性值
322
- - 在本用例中的作用:作为流程第一步,设置嵌套属性值
323
- - `_.get(object: Object, path: string | Array<string>, defaultValue?: any): any`
324
- - 功能:根据路径获取对象属性值
325
- - 在本用例中的作用:验证 _.set 设置的属性值是否正确
326
- - 与其他接口的关联:与 _.set 协同验证属性路径操作的一致性
327
-
328
- ---
329
-
330
- ### 用例序号:008
331
-
332
- **用例名称**:对象类型判断组合验证
333
-
334
- **用例描述**:
335
- 验证 `_.isPlainObject`、`_.isArray`、`_.isNumber` 接口的类型判断功能是否正确实现。该用例通过协同调用三个接口,传入不同类型的值,验证每个接口的判断结果是否符合预期,确保类型判断逻辑的正确性和一致性。
336
-
337
- **用例预期结果**:
338
- 1. 调用 `_.isPlainObject({ a: 1 })` 后,返回值应为 `true`
339
- 2. 调用 `_.isPlainObject([1, 2])` 后,返回值应为 `false`(数组非普通对象)
340
- 3. 调用 `_.isArray([1, 2, 3])` 后,返回值应为 `true`
341
- 4. 调用 `_.isArray({ length: 3 })` 后,返回值应为 `false`(类数组对象非真实数组)
342
- 5. 调用 `_.isNumber(123)` 后,返回值应为 `true`
343
- 6. 调用 `_.isNumber('123')` 后,返回值应为 `false`(字符串非数值)
344
- 7. 协同验证:对同一值 `{ a: 1 }`,`_.isPlainObject` 为 `true`,`_.isArray` 为 `false`,`_.isNumber` 为 `false`
345
-
346
- **对应的函数接口**:
347
- - `_.isPlainObject(value: any): boolean`
348
- - 功能:检查 value 是否为普通对象
349
- - 在本用例中的作用:验证普通对象判断的正确性
350
- - `_.isArray(value: any): boolean`
351
- - 功能:检查 value 是否为数组
352
- - 在本用例中的作用:验证数组判断的正确性
353
- - 与其他接口的关联:与 _.isPlainObject 对比验证类型判断的一致性
354
- - `_.isNumber(value: any): boolean`
355
- - 功能:检查 value 是否为数值
356
- - 在本用例中的作用:验证数值判断的正确性
357
- - 与其他接口的关联:与其他类型判断接口协同验证类型识别的准确性
358
-
359
- ---
360
-
361
- ### 用例序号:009
362
-
363
- **用例名称**:数组分块边界条件验证
364
-
365
- **用例描述**:
366
- 验证 `_.chunk` 接口在边界条件下的行为是否正确。该用例通过传入边界值(空数组、size 为 0、size 大于数组长度),验证返回值是否符合预期,确保边界条件处理的健壮性。
367
-
368
- **用例预期结果**:
369
- 1. 调用 `_.chunk([], 2)` 后,返回值应为 `[]`(空数组)
370
- 2. 调用 `_.chunk([1, 2, 3], 0)` 后,返回值应为 `[]` 或抛出异常(根据库实现)
371
- 3. 调用 `_.chunk([1, 2], 5)` 后,返回值应为 `[[1, 2]]`(size 大于数组长度)
372
- 4. 调用 `_.chunk([1, 2, 3], -1)` 后,返回值应为 `[]` 或抛出异常(负值 size)
373
- 5. 所有返回值均为 Array<Array> 类型
374
-
375
- **对应的函数接口**:
376
- - `_.chunk(array: Array, size?: number): Array<Array>`
377
- - 功能:将数组拆分成多个 size 长度的块
378
- - 在本用例中的作用:验证边界条件处理的健壮性
379
-
380
- ---
381
-
382
- ### 用例序号:010
383
-
384
- **用例名称**:对象深拷贝嵌套结构验证
385
-
386
- **用例描述**:
387
- 验证 `_.cloneDeep` 接口对复杂嵌套结构的深拷贝能力。该用例通过传入多层嵌套、包含数组、包含函数引用的复杂对象,验证返回的拷贝值是否完整拷贝所有层级和结构,确保深拷贝对复杂结构的处理能力。
388
-
389
- **用例预期结果**:
390
- 1. 调用 `_.cloneDeep({ a: [1, { b: 2 }], c: { d: { e: 3 } } })` 后,返回值应与原对象结构相等
391
- 2. 嵌套数组也为新引用:`cloneObj.a !== originalObj.a` 应为 `true`
392
- 3. 数组内的对象也为新引用:`cloneObj.a[1] !== originalObj.a[1]` 应为 `true`
393
- 4. 深层嵌套也为新引用:`cloneObj.c.d !== originalObj.c.d` 应为 `true`
394
- 5. 修改拷贝对象的任何层级不应影响原对象的对应层级
395
-
396
- **对应的函数接口**:
397
- - `_.cloneDeep(value: any): any`
398
- - 功能:创建值的深拷贝
399
- - 在本用例中的作用:验证对复杂嵌套结构的深拷贝能力
400
-
401
- ---
402
-
403
- ### 用例序号:011
404
-
405
- **用例名称**:对象属性路径非法输入验证
406
-
407
- **用例描述**:
408
- 验证 `_.get` 和 `_.set` 接口对非法输入的处理能力。该用例通过传入非法路径、空对象、null 值等边界条件,验证接口是否能正确处理或返回合理的默认值,确保接口的健壮性。
409
-
410
- **用例预期结果**:
411
- 1. 调用 `_.get({}, '')` 后,返回值应为 `undefined`(空路径)
412
- 2. 调用 `_.get(null, 'a.b')` 后,返回值应为 `undefined`(null 对象)
413
- 3. 调用 `_.get({ a: 1 }, '...', 'default')` 后,返回值应为 `'default'`(非法路径)
414
- 4. 调用 `_.set(null, 'a.b', 1)` 后,不应抛出异常,应返回 `null` 或新对象(根据库实现)
415
- 5. 调用 `_.set({}, '', 1)` 后,不应抛出异常,应返回原对象或新对象(根据库实现)
416
-
417
- **对应的函数接口**:
418
- - `_.get(object: Object, path: string | Array<string>, defaultValue?: any): any`
419
- - 功能:根据路径获取对象属性值
420
- - 在本用例中的作用:验证对非法输入的处理能力
421
- - `_.set(object: Object, path: string | Array<string>, value: any): Object`
422
- - 功能:根据路径设置对象属性值
423
- - 在本用例中的作用:验证对非法输入的处理能力
424
- - 与其他接口的关联:与 _.get 协同验证边界条件的一致性
425
-
426
- ---
427
-
428
- ### 用例序号:012
429
-
430
- **用例名称**:类型判断边界值验证
431
-
432
- **用例描述**:
433
- 验证 `_.isNumber` 接口对数值边界值的判断能力。该用例通过传入各种数值类型(整数、浮点数、NaN、Infinity、负数),验证判断结果是否符合预期,确保类型判断的准确性和完整性。
434
-
435
- **用例预期结果**:
436
- 1. 调用 `_.isNumber(0)` 后,返回值应为 `true`(零值)
437
- 2. 调用 `_.isNumber(-1)` 后,返回值应为 `true`(负数)
438
- 3. 调用 `_.isNumber(3.14)` 后,返回值应为 `true`(浮点数)
439
- 4. 调用 `_.isNumber(NaN)` 后,返回值应为 `true`(NaN 也视为数值类型)
440
- 5. 调用 `_.isNumber(Infinity)` 后,返回值应为 `true`(Infinity 也视为数值类型)
441
- 6. 调用 `_.isNumber(Number.MAX_VALUE)` 后,返回值应为 `true`(最大数值)
442
- 7. 调用 `_.isNumber(new Number(1))` 后,返回值应为 `false`(Number 对象非原始数值)
443
-
444
- **对应的函数接口**:
445
- - `_.isNumber(value: any): boolean`
446
- - 功能:检查 value 是否为数值
447
- - 在本用例中的作用:验证对数值边界值的判断能力
448
-
449
- ---
450
-
451
- ### 用例序号:013
452
-
453
- **用例名称**:空值输入处理验证
454
-
455
- **用例描述**:
456
- 验证 `_.chunk`、`_.get`、`_.clone` 接口对空值输入的处理能力。该用例通过传入 `null`、`undefined`、空数组、空对象等空值,验证接口是否能正确处理空值输入并返回安全的默认值,确保接口的健壮性和空值处理机制的正确性。不应因空值输入导致崩溃或产生不可预期行为。
457
-
458
- **用例预期结果**:
459
- 1. 调用 `_.chunk(null, 2)` 后,应返回 `[]` 或抛出异常(null 数组输入处理)
460
- 2. 调用 `_.chunk(undefined, 2)` 后,应返回 `[]` 或抛出异常(undefined 数组输入处理)
461
- 3. 调用 `_.chunk([], 2)` 后,返回值应为 `[]`(空数组安全处理)
462
- 4. 调用 `_.get(null, 'a.b')` 后,返回值应为 `undefined`(null 对象安全返回 undefined)
463
- 5. 调用 `_.get({}, 'a.b')` 后,返回值应为 `undefined`(空对象路径不存在)
464
- 6. 调用 `_.clone(null)` 后,返回值应为 `null`(null 输入返回 null)
465
- 7. 所有空值输入不应导致崩溃或不可预期行为
466
-
467
- **对应的函数接口**:
468
- - `_.chunk(array: Array, size?: number): Array<Array>`
469
- - 功能:将数组拆分成多个 size 长度的块
470
- - 在本用例中的作用:验证对 null/undefined/空数组 输入的处理能力
471
- - `_.get(object: Object, path: string | Array<string>, defaultValue?: any): any`
472
- - 功能:根据路径获取对象属性值
473
- - 在本用例中的作用:验证对 null/空对象 输入的处理能力
474
- - `_.clone(value: any): any`
475
- - 功能:创建值的浅拷贝
476
- - 在本用例中的作用:验证对 null 输入的处理能力
477
-
478
- ---
479
-
480
- ### 用例序号:014
481
-
482
- **用例名称**:异常参数与边界值输入验证
483
-
484
- **用例描述**:
485
- 验证 `_.chunk`、`_.clamp`、`_.difference` 接口对异常参数和边界值的处理能力。该用例通过传入类型不匹配参数、负值、零值、NaN、Infinity 等异常和边界输入,验证接口是否能正确处理或抛出预期异常,确保接口在各种极端输入下的健壮性。
486
-
487
- **用例预期结果**:
488
- 1. 调用 `_.chunk([1, 2, 3], -1)` 后,应返回 `[]` 或抛出异常(负值 size)
489
- 2. 调用 `_.chunk([1, 2, 3], 0)` 后,应返回 `[]` 或抛出异常(零值 size)
490
- 3. 调用 `_.chunk([1, 2, 3], NaN)` 后,应返回 `[]` 或抛出异常(NaN size)
491
- 4. 调用 `_.chunk([1, 2, 3], Infinity)` 后,应返回 `[[1, 2, 3]]` 或抛出异常(Infinity size)
492
- 5. 调用 `_.clamp(NaN, 0, 10)` 后,应返回 `NaN` 或合理处理(NaN 输入处理)
493
- 6. 调用 `_.clamp(5, 10, 1)` 后,应合理处理 lower > upper 的冲突情况
494
- 7. 调用 `_.difference([1, 2, 3], null)` 后,应返回 `[1, 2, 3]` 或抛出异常(null 排除数组)
495
- 8. 所有异常处理不应导致崩溃,异常信息应明确可定位
496
-
497
- **对应的函数接口**:
498
- - `_.chunk(array: Array, size?: number): Array<Array>`
499
- - 功能:将数组拆分成多个 size 长度的块
500
- - 在本用例中的作用:验证对负值、零值、NaN、Infinity 等异常 size 的处理
501
- - `_.clamp(number: number, lower: number, upper: number): number`
502
- - 功能:将数值限制在范围内
503
- - 在本用例中的作用:验证对 NaN 输入和 lower > upper 冲突的处理
504
- - `_.difference(array: Array, ...values: Array[]): Array`
505
- - 功能:返回数组差异
506
- - 在本用例中的作用:验证对 null 排除数组的处理
507
-
508
- ---
509
-
510
- ### 用例序号:015
511
-
512
- **用例名称**:大数据量输入处理验证
513
-
514
- **用例描述**:
515
- 验证 `_.chunk`、`_.difference`、`_.cloneDeep`、`_.get` 接口在大数据量输入下的处理能力和性能表现。该用例通过传入大数组(10000+ 元素)、深度嵌套对象(10+ 层)、大量属性对象(1000+ 属性),验证接口在大数据量场景下是否能正确处理且不发生内存溢出、栈溢出或超时,确保接口的数据处理能力和稳定性。
516
-
517
- **用例预期结果**:
518
- 1. 调用 `_.chunk(largeArray_10000, 100)` 后,应正确返回 100 个分块且不发生内存溢出
519
- 2. 调用 `_.difference(largeArray_10000, excludeArray_5000)` 后,应正确计算差异且在 5 秒内完成
520
- 3. 调用 `_.cloneDeep(deepNestedObj_10_levels)` 后,应完整拷贝所有层级且不发生栈溢出
521
- 4. 调用 `_.get(wideObj_1000_props, 'key_500')` 后,应正确获取属性值且在合理时间内完成
522
- 5. 调用 `_.clone(largeArray_10000)` 后,应正确浅拷贝且内存使用合理
523
- 6. 所有大数据量操作不应导致应用崩溃或系统资源耗尽
524
-
525
- **对应的函数接口**:
526
- - `_.chunk(array: Array, size?: number): Array<Array>`
527
- - 功能:将数组拆分成多个 size 长度的块
528
- - 在本用例中的作用:验证大数组分块处理的正确性和性能
529
- - `_.difference(array: Array, ...values: Array[]): Array`
530
- - 功能:返回数组差异
531
- - 在本用例中的作用:验证大数据量差异计算的正确性和性能
532
- - `_.cloneDeep(value: any): any`
533
- - 功能:创建值的深拷贝
534
- - 在本用例中的作用:验证深度嵌套结构深拷贝的正确性和稳定性
535
- - `_.get(object: Object, path: string, defaultValue?: any): any`
536
- - 功能:根据路径获取对象属性值
537
- - 在本用例中的作用:验证大量属性对象的路径访问性能
538
- - `_.clone(value: any): any`
539
- - 功能:创建值的浅拷贝
540
- - 在本用例中的作用:验证大数组浅拷贝的正确性和性能
541
-
542
- ---
543
-
544
- ## 附录:测试实施建议
545
-
546
- ### 测试框架建议
547
- - 使用 OpenHarmony XTS 测试框架(`@ohos/hypium`)
548
- - 测试文件命名:`lodashXtsTest.ts`
549
- - 测试类命名:`LodashXtsTest`
550
-
551
- ### 测试代码结构建议
552
- ```typescript
553
- import { describe, it, expect } from '@ohos/hypium';
554
- import _ from '@ohos/lodash';
555
-
556
- export default function lodashXtsTest() {
557
- describe('LodashXtsTest', () => {
558
- // 用例 001:数组分块基础功能验证
559
- it('chunk_basic_001', () => {
560
- const result = _.chunk([1, 2, 3, 4, 5], 2);
561
- expect(result).toEqual([[1, 2], [3, 4], [5]]);
562
- });
563
-
564
- // 更多用例...
565
- });
566
- }
567
- ```
568
-
569
- ### Mock 建议
570
- - 本库接口均为纯函数,无需 Mock 外部依赖
571
- - 异步接口(`_.debounce`、`_.throttle`)需在测试中设置合理的等待时间(建议 100ms 以上)
572
-
573
- ### 测试覆盖率目标
574
- - 功能覆盖率:≥ 90%(覆盖所有可测试接口)
575
- - 用例覆盖率:≥ 80%(每个接口至少包含正向和反向用例)
1
+ # XTS 用例生成示例
2
+
3
+ 本文档展示基于 **lodash(工具函数库)** 的 ohos 化版本接口规格文档生成的完整 XTS 用例描述示例。
4
+
5
+ > 说明:本示例假设已有 lodash ohos 化版本的接口规格文档,接口基于 lodash 的真实 API 设计。用例内容严格来源于接口规格文档,所有接口签名均为真实存在的接口。
6
+
7
+ ---
8
+
9
+ ## 一、接口规格文档摘要(输入示例)
10
+
11
+ 以下是假设的 lodash ohos 化版本接口规格文档关键片段(本技能的输入):
12
+
13
+ ```markdown
14
+ # lodash ohos 化版本接口规格
15
+
16
+ ## 核心接口
17
+
18
+ ### _.chunk(array, size)
19
+ - 参数:array: Array(必填);size: number(可选,默认 1)
20
+ - 返回:Array<Array>
21
+ - 功能:将数组拆分成多个 size 长度的块
22
+
23
+ ### _.clamp(number, lower, upper)
24
+ - 参数:number: number(必填);lower: number(必填);upper: number(必填)
25
+ - 返回:number
26
+ - 功能:将数值限制在 [lower, upper] 范围内
27
+
28
+ ### _.clone(value)
29
+ - 参数:value: any(必填)
30
+ - 返回:any
31
+ - 功能:创建值的浅拷贝
32
+
33
+ ### _.cloneDeep(value)
34
+ - 参数:value: any(必填)
35
+ - 返回:any
36
+ - 功能:创建值的深拷贝
37
+
38
+ ### _.debounce(func, wait, options?)
39
+ - 参数:func: Function(必填);wait: number(必填);options?: DebounceOptions(可选)
40
+ - 返回:Function
41
+ - 功能:创建防抖函数,在 wait 毫秒后执行
42
+ - ⚠️ 注意:此接口涉及异步行为和时间控制,测试需设置合理等待时间
43
+
44
+ ### _.defaults(object, ...sources)
45
+ - 参数:object: Object(必填);sources: Object[](必填)
46
+ - 返回:Object
47
+ - 功能:将 sources 的属性填充到 object 的未定义属性中
48
+
49
+ ### _.difference(array, ...values)
50
+ - 参数:array: Array(必填);values: Array[](必填)
51
+ - 返回:Array
52
+ - 功能:返回 array 中不在 values 中的元素
53
+
54
+ ### _.get(object, path, defaultValue?)
55
+ - 参数:object: Object(必填);path: string | Array<string>(必填);defaultValue?: any(可选)
56
+ - 返回:any
57
+ - 功能:根据路径获取对象属性值
58
+
59
+ ### _.set(object, path, value)
60
+ - 参数:object: Object(必填);path: string | Array<string>(必填);value: any(必填)
61
+ - 返回:Object
62
+ - 功能:根据路径设置对象属性值
63
+
64
+ ### _.throttle(func, wait, options?)
65
+ - 参数:func: Function(必填);wait: number(必填);options?: ThrottleOptions(可选)
66
+ - 返回:Function
67
+ - 功能:创建节流函数,在 wait 毫秒内最多执行一次
68
+ - ⚠️ 注意:此接口涉及异步行为和时间控制,测试需设置合理等待时间
69
+
70
+ ## 辅助接口
71
+
72
+ ### _.isPlainObject(value)
73
+ - 参数:value: any(必填)
74
+ - 返回:boolean
75
+ - 功能:检查 value 是否为普通对象
76
+
77
+ ### _.isArray(value)
78
+ - 参数:value: any(必填)
79
+ - 返回:boolean
80
+ - 功能:检查 value 是否为数组
81
+
82
+ ### _.isNumber(value)
83
+ - 参数:value: any(必填)
84
+ - 返回:boolean
85
+ - 功能:检查 value 是否为数值
86
+
87
+ ## UI 相关接口(不可测试)
88
+
89
+ ### _.template(templateString, options?)
90
+ - 参数:templateString: string(必填);options?: TemplateOptions(可选)
91
+ - 返回:Function
92
+ - 功能:创建模板编译函数,返回的函数用于生成 HTML 字符串
93
+ - ❌ 不可测试原因:模板函数的输出主要用于 UI 渲染,需配合实际 UI 环境验证
94
+
95
+ ## 错误处理
96
+ - 参数类型不匹配:通常返回 undefined 或空值,不抛出异常
97
+ - 空值输入:通常返回空数组/空对象,不抛出异常
98
+ ```
99
+
100
+ ---
101
+
102
+ ## 二、生成的 XTS 用例描述示例
103
+
104
+ 以下是本技能基于上述接口规格文档生成的 `ohos_lodashxts用例描述.md` 完整内容示例:
105
+
106
+ ---
107
+
108
+ ```markdown
109
+ # ohos_lodash XTS 用例描述
110
+
111
+ ## 概述
112
+
113
+ - **库名称**:lodash(ohos 化版本)
114
+ - **文档生成时间**:2026-05-16
115
+ - **基于文档**:lodash规格文档.md
116
+ - **用例总数**:15
117
+ - **可测试接口数**:11
118
+ - **不可测试接口数**:1
119
+ - **功能覆盖模块**:数组操作、数值处理、对象拷贝、对象属性访问、对象属性设置、类型判断
120
+
121
+ ## 接口可测试性分析
122
+
123
+ ### 可测试接口列表
124
+
125
+ | 接口名称 | 接口签名 | 可测试原因 |
126
+ |---------|---------|-----------|
127
+ | _.chunk | _.chunk(array: Array, size?: number): Array<Array> | 纯函数,返回值可预测验证 |
128
+ | _.clamp | _.clamp(number: number, lower: number, upper: number): number | 纯函数,返回值可预测验证 |
129
+ | _.clone | _.clone(value: any): any | 纯函数,返回值可与原值对比验证 |
130
+ | _.cloneDeep | _.cloneDeep(value: any): any | 纯函数,返回值可与原值深度对比验证 |
131
+ | _.defaults | _.defaults(object: Object, ...sources: Object[]): Object | 纯函数,返回值属性可验证 |
132
+ | _.difference | _.difference(array: Array, ...values: Array[]): Array | 纯函数,返回值数组内容可验证 |
133
+ | _.get | _.get(object: Object, path: string | Array<string>, defaultValue?: any): any | 纯函数,返回值可验证 |
134
+ | _.set | _.set(object: Object, path: string | Array<string>, value: any): Object | 纯函数,对象属性变化可验证 |
135
+ | _.isPlainObject | _.isPlainObject(value: any): boolean | 纯函数,返回布尔值可验证 |
136
+ | _.isArray | _.isArray(value: any): boolean | 纯函数,返回布尔值可验证 |
137
+ | _.isNumber | _.isNumber(value: any): boolean | 纯函数,返回布尔值可验证 |
138
+
139
+ ### 不可测试接口列表
140
+
141
+ | 接口名称 | 接口签名 | 不可测试原因 |
142
+ |---------|---------|-------------|
143
+ | _.template | _.template(templateString: string, options?: TemplateOptions): Function | 模板函数输出主要用于 UI 渲染,需配合实际 UI 环境验证,无法通过执行结果直接判断功能正确性 |
144
+
145
+ ### 需额外条件的可测试接口
146
+
147
+ | 接口名称 | 接口签名 | 额外条件 |
148
+ |---------|---------|---------|
149
+ | _.debounce | _.debounce(func: Function, wait: number, options?: DebounceOptions): Function | 需设置合理等待时间验证异步行为 |
150
+ | _.throttle | _.throttle(func: Function, wait: number, options?: ThrottleOptions): Function | 需设置合理等待时间验证异步行为 |
151
+
152
+ > 注:`_.debounce` 和 `_.throttle` 涉及异步行为,可在 XTS 测试中通过设置合理的等待时间和调用次数进行验证,故列为"可测试"但需注明额外条件。
153
+
154
+ ---
155
+
156
+ ## 用例索引表
157
+
158
+ | 用例序号 | 用例名称 | 涉及接口 | 模块归属 |
159
+ |---------|---------|---------|---------|
160
+ | 001 | 数组分块基础功能验证 | _.chunk | 数组操作 |
161
+ | 002 | 数值范围限制功能验证 | _.clamp | 数值处理 |
162
+ | 003 | 对象浅拷贝功能验证 | _.clone | 对象拷贝 |
163
+ | 004 | 对象深拷贝功能验证 | _.cloneDeep | 对象拷贝 |
164
+ | 005 | 对象默认属性填充功能验证 | _.defaults | 对象操作 |
165
+ | 006 | 数组差异计算功能验证 | _.difference | 数组操作 |
166
+ | 007 | 对象属性路径访问与设置验证 | _.get, _.set | 对象属性访问 |
167
+ | 008 | 对象类型判断组合验证 | _.isPlainObject, _.isArray, _.isNumber | 类型判断 |
168
+ | 009 | 数组分块边界条件验证 | _.chunk | 数组操作 |
169
+ | 010 | 对象深拷贝嵌套结构验证 | _.cloneDeep | 对象拷贝 |
170
+ | 011 | 对象属性路径非法输入验证 | _.get, _.set | 对象属性访问 |
171
+ | 012 | 类型判断边界值验证 | _.isNumber | 类型判断 |
172
+ | 013 | 空值输入处理验证 | _.chunk, _.get, _.clone | 数组操作/对象属性访问/对象拷贝 |
173
+ | 014 | 异常参数与边界值输入验证 | _.chunk, _.clamp, _.difference | 数组操作/数值处理 |
174
+ | 015 | 大数据量输入处理验证 | _.chunk, _.difference, _.cloneDeep, _.get | 数组操作/对象拷贝/对象属性访问 |
175
+
176
+ ---
177
+
178
+ ## XTS 用例详细描述
179
+
180
+ ### 用例序号:001
181
+
182
+ **用例名称**:数组分块基础功能验证
183
+
184
+ **用例描述**:
185
+ 验证 `_.chunk` 接口的基础分块功能是否正确实现。该用例通过传入不同长度和分块大小的数组,验证返回的分块结果是否符合预期,确保分块逻辑的正确性和准确性。测试覆盖常规数组分块、默认分块大小、自定义分块大小等场景。
186
+
187
+ **用例预期结果**:
188
+ 1. 调用 `_.chunk([1, 2, 3, 4, 5], 2)` 后,返回值应为 `[[1, 2], [3, 4], [5]]`
189
+ 2. 调用 `_.chunk([1, 2, 3], 1)` 后,返回值应为 `[[1], [2], [3]]`(默认 size=1)
190
+ 3. 调用 `_.chunk([1, 2, 3, 4], 3)` 后,返回值应为 `[[1, 2, 3], [4]]`
191
+ 4. 所有返回值均为 Array<Array> 类型
192
+
193
+ **对应的函数接口**:
194
+ - `_.chunk(array: Array, size?: number): Array<Array>`
195
+ - 功能:将数组拆分成多个 size 长度的块
196
+ - 在本用例中的作用:验证分块逻辑的正确性
197
+
198
+ ---
199
+
200
+ ### 用例序号:002
201
+
202
+ **用例名称**:数值范围限制功能验证
203
+
204
+ **用例描述**:
205
+ 验证 `_.clamp` 接口的数值范围限制功能是否正确实现。该用例通过传入不同位置的数值(在范围内、超出下限、超出上限),验证返回值是否被正确限制在 [lower, upper] 范围内,确保范围限制逻辑的正确性。
206
+
207
+ **用例预期结果**:
208
+ 1. 调用 `_.clamp(10, 5, 15)` 后,返回值应为 `10`(在范围内,返回原值)
209
+ 2. 调用 `_.clamp(3, 5, 15)` 后,返回值应为 `5`(超出下限,返回下限值)
210
+ 3. 调用 `_.clamp(20, 5, 15)` 后,返回值应为 `15`(超出上限,返回上限值)
211
+ 4. 调用 `_.clamp(-5, 0, 10)` 后,返回值应为 `0`(负值超出下限)
212
+ 5. 所有返回值均为 number 类型
213
+
214
+ **对应的函数接口**:
215
+ - `_.clamp(number: number, lower: number, upper: number): number`
216
+ - 功能:将数值限制在 [lower, upper] 范围内
217
+ - 在本用例中的作用:验证范围限制逻辑的正确性
218
+
219
+ ---
220
+
221
+ ### 用例序号:003
222
+
223
+ **用例名称**:对象浅拷贝功能验证
224
+
225
+ **用例描述**:
226
+ 验证 `_.clone` 接口的浅拷贝功能是否正确实现。该用例通过传入不同类型的值(对象、数组、原始值),验证返回的拷贝值是否与原值相等但非同一引用,确保浅拷贝逻辑的正确性。特别验证浅拷贝特性:嵌套对象仍为同一引用。
227
+
228
+ **用例预期结果**:
229
+ 1. 调用 `_.clone({ a: 1, b: 2 })` 后,返回值应与原对象结构相等:`{ a: 1, b: 2 }`
230
+ 2. 返回对象与原对象非同一引用:`cloneObj !== originalObj` 应为 `true`
231
+ 3. 调用 `_.clone([1, 2, 3])` 后,返回值应为 `[1, 2, 3]`
232
+ 4. 返回数组与原数组非同一引用:`cloneArr !== originalArr` 应为 `true`
233
+ 5. 浅拷贝特性验证:拷贝嵌套对象后,嵌套对象仍为同一引用
234
+
235
+ **对应的函数接口**:
236
+ - `_.clone(value: any): any`
237
+ - 功能:创建值的浅拷贝
238
+ - 在本用例中的作用:验证浅拷贝逻辑的正确性
239
+
240
+ ---
241
+
242
+ ### 用例序号:004
243
+
244
+ **用例名称**:对象深拷贝功能验证
245
+
246
+ **用例描述**:
247
+ 验证 `_.cloneDeep` 接口的深拷贝功能是否正确实现。该用例通过传入嵌套结构的对象,验证返回的拷贝值是否与原值结构完全相等,且所有嵌套层级均为新引用,确保深拷贝逻辑的正确性。与浅拷贝对比,验证深拷贝的核心特性:嵌套对象也为新引用。
248
+
249
+ **用例预期结果**:
250
+ 1. 调用 `_.cloneDeep({ a: { b: { c: 1 } } })` 后,返回值应与原对象结构相等
251
+ 2. 返回对象与原对象非同一引用:`cloneObj !== originalObj` 应为 `true`
252
+ 3. 嵌套对象也为新引用:`cloneObj.a !== originalObj.a` 应为 `true`
253
+ 4. 深层嵌套也为新引用:`cloneObj.a.b !== originalObj.a.b` 应为 `true`
254
+ 5. 拷贝后修改嵌套对象不影响原对象:修改 cloneObj.a.b.c 后,originalObj.a.b.c 应保持原值
255
+
256
+ **对应的函数接口**:
257
+ - `_.cloneDeep(value: any): any`
258
+ - 功能:创建值的深拷贝
259
+ - 在本用例中的作用:验证深拷贝逻辑的正确性,特别是嵌套结构的独立拷贝特性
260
+
261
+ ---
262
+
263
+ ### 用例序号:005
264
+
265
+ **用例名称**:对象默认属性填充功能验证
266
+
267
+ **用例描述**:
268
+ 验证 `_.defaults` 接口的属性填充功能是否正确实现。该用例通过传入目标对象和源对象,验证返回的对象中未定义属性是否被源对象的属性填充,已定义属性是否保持原值,确保属性填充逻辑的正确性。
269
+
270
+ **用例预期结果**:
271
+ 1. 调用 `_.defaults({ a: 1 }, { a: 2, b: 2 })` 后,返回值应为 `{ a: 1, b: 2 }`(a 保持原值,b 被填充)
272
+ 2. 调用 `_.defaults({}, { a: 1, b: 2 })` 后,返回值应为 `{ a: 1, b: 2 }`(空对象被完全填充)
273
+ 3. 调用 `_.defaults({ a: undefined }, { a: 1 })` 后,返回值应为 `{ a: 1 }`(undefined 属性被填充)
274
+ 4. 调用 `_.defaults({ a: null }, { a: 1 })` 后,返回值应为 `{ a: null }`(null 不视为未定义,保持原值)
275
+ 5. 多源对象填充验证:`_.defaults({}, { a: 1 }, { b: 2 })` 应返回 `{ a: 1, b: 2 }`
276
+
277
+ **对应的函数接口**:
278
+ - `_.defaults(object: Object, ...sources: Object[]): Object`
279
+ - 功能:将 sources 的属性填充到 object 的未定义属性中
280
+ - 在本用例中的作用:验证属性填充逻辑的正确性
281
+
282
+ ---
283
+
284
+ ### 用例序号:006
285
+
286
+ **用例名称**:数组差异计算功能验证
287
+
288
+ **用例描述**:
289
+ 验证 `_.difference` 接口的数组差异计算功能是否正确实现。该用例通过传入主数组和排除数组,验证返回的数组是否仅包含主数组中不存在于排除数组的元素,确保差异计算逻辑的正确性。
290
+
291
+ **用例预期结果**:
292
+ 1. 调用 `_.difference([1, 2, 3, 4], [2, 4])` 后,返回值应为 `[1, 3]`
293
+ 2. 调用 `_.difference([1, 2, 3], [])` 后,返回值应为 `[1, 2, 3]`(空排除数组)
294
+ 3. 调用 `_.difference([], [1, 2, 3])` 后,返回值应为 `[]`(空主数组)
295
+ 4. 调用 `_.difference([1, 2, 3], [1, 2, 3])` 后,返回值应为 `[]`(完全重叠)
296
+ 5. 多排除数组验证:`_.difference([1, 2, 3, 4], [2], [4])` 应返回 `[1, 3]`
297
+
298
+ **对应的函数接口**:
299
+ - `_.difference(array: Array, ...values: Array[]): Array`
300
+ - 功能:返回 array 中不在 values 中的元素
301
+ - 在本用例中的作用:验证差异计算逻辑的正确性
302
+
303
+ ---
304
+
305
+ ### 用例序号:007
306
+
307
+ **用例名称**:对象属性路径访问与设置验证
308
+
309
+ **用例描述**:
310
+ 验证 `_.get` 和 `_.set` 接口的属性路径访问与设置功能是否正确实现。该用例通过协同调用两个接口,先使用 `_.set` 设置嵌套属性,再使用 `_.get` 获取该属性,验证两个接口的协同工作是否正确,确保属性路径操作的一致性和准确性。
311
+
312
+ **用例预期结果**:
313
+ 1. 调用 `_.set({}, 'a.b.c', 1)` 后,对象应变为 `{ a: { b: { c: 1 } } }`
314
+ 2. 调用 `_.get({ a: { b: { c: 1 } } }, 'a.b.c')` 后,返回值应为 `1`
315
+ 3. 协同验证:set 设置属性后,get 应能正确获取设置的值
316
+ 4. 调用 `_.get({ a: { b: {} } }, 'a.b.c', 'default')` 后,返回值应为 `'default'`(路径不存在返回默认值)
317
+ 5. 数组路径验证:`_.get({ a: [{ b: 1 }] }, ['a', 0, 'b'])` 应返回 `1`
318
+
319
+ **对应的函数接口**:
320
+ - `_.set(object: Object, path: string | Array<string>, value: any): Object`
321
+ - 功能:根据路径设置对象属性值
322
+ - 在本用例中的作用:作为流程第一步,设置嵌套属性值
323
+ - `_.get(object: Object, path: string | Array<string>, defaultValue?: any): any`
324
+ - 功能:根据路径获取对象属性值
325
+ - 在本用例中的作用:验证 _.set 设置的属性值是否正确
326
+ - 与其他接口的关联:与 _.set 协同验证属性路径操作的一致性
327
+
328
+ ---
329
+
330
+ ### 用例序号:008
331
+
332
+ **用例名称**:对象类型判断组合验证
333
+
334
+ **用例描述**:
335
+ 验证 `_.isPlainObject`、`_.isArray`、`_.isNumber` 接口的类型判断功能是否正确实现。该用例通过协同调用三个接口,传入不同类型的值,验证每个接口的判断结果是否符合预期,确保类型判断逻辑的正确性和一致性。
336
+
337
+ **用例预期结果**:
338
+ 1. 调用 `_.isPlainObject({ a: 1 })` 后,返回值应为 `true`
339
+ 2. 调用 `_.isPlainObject([1, 2])` 后,返回值应为 `false`(数组非普通对象)
340
+ 3. 调用 `_.isArray([1, 2, 3])` 后,返回值应为 `true`
341
+ 4. 调用 `_.isArray({ length: 3 })` 后,返回值应为 `false`(类数组对象非真实数组)
342
+ 5. 调用 `_.isNumber(123)` 后,返回值应为 `true`
343
+ 6. 调用 `_.isNumber('123')` 后,返回值应为 `false`(字符串非数值)
344
+ 7. 协同验证:对同一值 `{ a: 1 }`,`_.isPlainObject` 为 `true`,`_.isArray` 为 `false`,`_.isNumber` 为 `false`
345
+
346
+ **对应的函数接口**:
347
+ - `_.isPlainObject(value: any): boolean`
348
+ - 功能:检查 value 是否为普通对象
349
+ - 在本用例中的作用:验证普通对象判断的正确性
350
+ - `_.isArray(value: any): boolean`
351
+ - 功能:检查 value 是否为数组
352
+ - 在本用例中的作用:验证数组判断的正确性
353
+ - 与其他接口的关联:与 _.isPlainObject 对比验证类型判断的一致性
354
+ - `_.isNumber(value: any): boolean`
355
+ - 功能:检查 value 是否为数值
356
+ - 在本用例中的作用:验证数值判断的正确性
357
+ - 与其他接口的关联:与其他类型判断接口协同验证类型识别的准确性
358
+
359
+ ---
360
+
361
+ ### 用例序号:009
362
+
363
+ **用例名称**:数组分块边界条件验证
364
+
365
+ **用例描述**:
366
+ 验证 `_.chunk` 接口在边界条件下的行为是否正确。该用例通过传入边界值(空数组、size 为 0、size 大于数组长度),验证返回值是否符合预期,确保边界条件处理的健壮性。
367
+
368
+ **用例预期结果**:
369
+ 1. 调用 `_.chunk([], 2)` 后,返回值应为 `[]`(空数组)
370
+ 2. 调用 `_.chunk([1, 2, 3], 0)` 后,返回值应为 `[]` 或抛出异常(根据库实现)
371
+ 3. 调用 `_.chunk([1, 2], 5)` 后,返回值应为 `[[1, 2]]`(size 大于数组长度)
372
+ 4. 调用 `_.chunk([1, 2, 3], -1)` 后,返回值应为 `[]` 或抛出异常(负值 size)
373
+ 5. 所有返回值均为 Array<Array> 类型
374
+
375
+ **对应的函数接口**:
376
+ - `_.chunk(array: Array, size?: number): Array<Array>`
377
+ - 功能:将数组拆分成多个 size 长度的块
378
+ - 在本用例中的作用:验证边界条件处理的健壮性
379
+
380
+ ---
381
+
382
+ ### 用例序号:010
383
+
384
+ **用例名称**:对象深拷贝嵌套结构验证
385
+
386
+ **用例描述**:
387
+ 验证 `_.cloneDeep` 接口对复杂嵌套结构的深拷贝能力。该用例通过传入多层嵌套、包含数组、包含函数引用的复杂对象,验证返回的拷贝值是否完整拷贝所有层级和结构,确保深拷贝对复杂结构的处理能力。
388
+
389
+ **用例预期结果**:
390
+ 1. 调用 `_.cloneDeep({ a: [1, { b: 2 }], c: { d: { e: 3 } } })` 后,返回值应与原对象结构相等
391
+ 2. 嵌套数组也为新引用:`cloneObj.a !== originalObj.a` 应为 `true`
392
+ 3. 数组内的对象也为新引用:`cloneObj.a[1] !== originalObj.a[1]` 应为 `true`
393
+ 4. 深层嵌套也为新引用:`cloneObj.c.d !== originalObj.c.d` 应为 `true`
394
+ 5. 修改拷贝对象的任何层级不应影响原对象的对应层级
395
+
396
+ **对应的函数接口**:
397
+ - `_.cloneDeep(value: any): any`
398
+ - 功能:创建值的深拷贝
399
+ - 在本用例中的作用:验证对复杂嵌套结构的深拷贝能力
400
+
401
+ ---
402
+
403
+ ### 用例序号:011
404
+
405
+ **用例名称**:对象属性路径非法输入验证
406
+
407
+ **用例描述**:
408
+ 验证 `_.get` 和 `_.set` 接口对非法输入的处理能力。该用例通过传入非法路径、空对象、null 值等边界条件,验证接口是否能正确处理或返回合理的默认值,确保接口的健壮性。
409
+
410
+ **用例预期结果**:
411
+ 1. 调用 `_.get({}, '')` 后,返回值应为 `undefined`(空路径)
412
+ 2. 调用 `_.get(null, 'a.b')` 后,返回值应为 `undefined`(null 对象)
413
+ 3. 调用 `_.get({ a: 1 }, '...', 'default')` 后,返回值应为 `'default'`(非法路径)
414
+ 4. 调用 `_.set(null, 'a.b', 1)` 后,不应抛出异常,应返回 `null` 或新对象(根据库实现)
415
+ 5. 调用 `_.set({}, '', 1)` 后,不应抛出异常,应返回原对象或新对象(根据库实现)
416
+
417
+ **对应的函数接口**:
418
+ - `_.get(object: Object, path: string | Array<string>, defaultValue?: any): any`
419
+ - 功能:根据路径获取对象属性值
420
+ - 在本用例中的作用:验证对非法输入的处理能力
421
+ - `_.set(object: Object, path: string | Array<string>, value: any): Object`
422
+ - 功能:根据路径设置对象属性值
423
+ - 在本用例中的作用:验证对非法输入的处理能力
424
+ - 与其他接口的关联:与 _.get 协同验证边界条件的一致性
425
+
426
+ ---
427
+
428
+ ### 用例序号:012
429
+
430
+ **用例名称**:类型判断边界值验证
431
+
432
+ **用例描述**:
433
+ 验证 `_.isNumber` 接口对数值边界值的判断能力。该用例通过传入各种数值类型(整数、浮点数、NaN、Infinity、负数),验证判断结果是否符合预期,确保类型判断的准确性和完整性。
434
+
435
+ **用例预期结果**:
436
+ 1. 调用 `_.isNumber(0)` 后,返回值应为 `true`(零值)
437
+ 2. 调用 `_.isNumber(-1)` 后,返回值应为 `true`(负数)
438
+ 3. 调用 `_.isNumber(3.14)` 后,返回值应为 `true`(浮点数)
439
+ 4. 调用 `_.isNumber(NaN)` 后,返回值应为 `true`(NaN 也视为数值类型)
440
+ 5. 调用 `_.isNumber(Infinity)` 后,返回值应为 `true`(Infinity 也视为数值类型)
441
+ 6. 调用 `_.isNumber(Number.MAX_VALUE)` 后,返回值应为 `true`(最大数值)
442
+ 7. 调用 `_.isNumber(new Number(1))` 后,返回值应为 `false`(Number 对象非原始数值)
443
+
444
+ **对应的函数接口**:
445
+ - `_.isNumber(value: any): boolean`
446
+ - 功能:检查 value 是否为数值
447
+ - 在本用例中的作用:验证对数值边界值的判断能力
448
+
449
+ ---
450
+
451
+ ### 用例序号:013
452
+
453
+ **用例名称**:空值输入处理验证
454
+
455
+ **用例描述**:
456
+ 验证 `_.chunk`、`_.get`、`_.clone` 接口对空值输入的处理能力。该用例通过传入 `null`、`undefined`、空数组、空对象等空值,验证接口是否能正确处理空值输入并返回安全的默认值,确保接口的健壮性和空值处理机制的正确性。不应因空值输入导致崩溃或产生不可预期行为。
457
+
458
+ **用例预期结果**:
459
+ 1. 调用 `_.chunk(null, 2)` 后,应返回 `[]` 或抛出异常(null 数组输入处理)
460
+ 2. 调用 `_.chunk(undefined, 2)` 后,应返回 `[]` 或抛出异常(undefined 数组输入处理)
461
+ 3. 调用 `_.chunk([], 2)` 后,返回值应为 `[]`(空数组安全处理)
462
+ 4. 调用 `_.get(null, 'a.b')` 后,返回值应为 `undefined`(null 对象安全返回 undefined)
463
+ 5. 调用 `_.get({}, 'a.b')` 后,返回值应为 `undefined`(空对象路径不存在)
464
+ 6. 调用 `_.clone(null)` 后,返回值应为 `null`(null 输入返回 null)
465
+ 7. 所有空值输入不应导致崩溃或不可预期行为
466
+
467
+ **对应的函数接口**:
468
+ - `_.chunk(array: Array, size?: number): Array<Array>`
469
+ - 功能:将数组拆分成多个 size 长度的块
470
+ - 在本用例中的作用:验证对 null/undefined/空数组 输入的处理能力
471
+ - `_.get(object: Object, path: string | Array<string>, defaultValue?: any): any`
472
+ - 功能:根据路径获取对象属性值
473
+ - 在本用例中的作用:验证对 null/空对象 输入的处理能力
474
+ - `_.clone(value: any): any`
475
+ - 功能:创建值的浅拷贝
476
+ - 在本用例中的作用:验证对 null 输入的处理能力
477
+
478
+ ---
479
+
480
+ ### 用例序号:014
481
+
482
+ **用例名称**:异常参数与边界值输入验证
483
+
484
+ **用例描述**:
485
+ 验证 `_.chunk`、`_.clamp`、`_.difference` 接口对异常参数和边界值的处理能力。该用例通过传入类型不匹配参数、负值、零值、NaN、Infinity 等异常和边界输入,验证接口是否能正确处理或抛出预期异常,确保接口在各种极端输入下的健壮性。
486
+
487
+ **用例预期结果**:
488
+ 1. 调用 `_.chunk([1, 2, 3], -1)` 后,应返回 `[]` 或抛出异常(负值 size)
489
+ 2. 调用 `_.chunk([1, 2, 3], 0)` 后,应返回 `[]` 或抛出异常(零值 size)
490
+ 3. 调用 `_.chunk([1, 2, 3], NaN)` 后,应返回 `[]` 或抛出异常(NaN size)
491
+ 4. 调用 `_.chunk([1, 2, 3], Infinity)` 后,应返回 `[[1, 2, 3]]` 或抛出异常(Infinity size)
492
+ 5. 调用 `_.clamp(NaN, 0, 10)` 后,应返回 `NaN` 或合理处理(NaN 输入处理)
493
+ 6. 调用 `_.clamp(5, 10, 1)` 后,应合理处理 lower > upper 的冲突情况
494
+ 7. 调用 `_.difference([1, 2, 3], null)` 后,应返回 `[1, 2, 3]` 或抛出异常(null 排除数组)
495
+ 8. 所有异常处理不应导致崩溃,异常信息应明确可定位
496
+
497
+ **对应的函数接口**:
498
+ - `_.chunk(array: Array, size?: number): Array<Array>`
499
+ - 功能:将数组拆分成多个 size 长度的块
500
+ - 在本用例中的作用:验证对负值、零值、NaN、Infinity 等异常 size 的处理
501
+ - `_.clamp(number: number, lower: number, upper: number): number`
502
+ - 功能:将数值限制在范围内
503
+ - 在本用例中的作用:验证对 NaN 输入和 lower > upper 冲突的处理
504
+ - `_.difference(array: Array, ...values: Array[]): Array`
505
+ - 功能:返回数组差异
506
+ - 在本用例中的作用:验证对 null 排除数组的处理
507
+
508
+ ---
509
+
510
+ ### 用例序号:015
511
+
512
+ **用例名称**:大数据量输入处理验证
513
+
514
+ **用例描述**:
515
+ 验证 `_.chunk`、`_.difference`、`_.cloneDeep`、`_.get` 接口在大数据量输入下的处理能力和性能表现。该用例通过传入大数组(10000+ 元素)、深度嵌套对象(10+ 层)、大量属性对象(1000+ 属性),验证接口在大数据量场景下是否能正确处理且不发生内存溢出、栈溢出或超时,确保接口的数据处理能力和稳定性。
516
+
517
+ **用例预期结果**:
518
+ 1. 调用 `_.chunk(largeArray_10000, 100)` 后,应正确返回 100 个分块且不发生内存溢出
519
+ 2. 调用 `_.difference(largeArray_10000, excludeArray_5000)` 后,应正确计算差异且在 5 秒内完成
520
+ 3. 调用 `_.cloneDeep(deepNestedObj_10_levels)` 后,应完整拷贝所有层级且不发生栈溢出
521
+ 4. 调用 `_.get(wideObj_1000_props, 'key_500')` 后,应正确获取属性值且在合理时间内完成
522
+ 5. 调用 `_.clone(largeArray_10000)` 后,应正确浅拷贝且内存使用合理
523
+ 6. 所有大数据量操作不应导致应用崩溃或系统资源耗尽
524
+
525
+ **对应的函数接口**:
526
+ - `_.chunk(array: Array, size?: number): Array<Array>`
527
+ - 功能:将数组拆分成多个 size 长度的块
528
+ - 在本用例中的作用:验证大数组分块处理的正确性和性能
529
+ - `_.difference(array: Array, ...values: Array[]): Array`
530
+ - 功能:返回数组差异
531
+ - 在本用例中的作用:验证大数据量差异计算的正确性和性能
532
+ - `_.cloneDeep(value: any): any`
533
+ - 功能:创建值的深拷贝
534
+ - 在本用例中的作用:验证深度嵌套结构深拷贝的正确性和稳定性
535
+ - `_.get(object: Object, path: string, defaultValue?: any): any`
536
+ - 功能:根据路径获取对象属性值
537
+ - 在本用例中的作用:验证大量属性对象的路径访问性能
538
+ - `_.clone(value: any): any`
539
+ - 功能:创建值的浅拷贝
540
+ - 在本用例中的作用:验证大数组浅拷贝的正确性和性能
541
+
542
+ ---
543
+
544
+ ## 附录:测试实施建议
545
+
546
+ ### 测试框架建议
547
+ - 使用 OpenHarmony XTS 测试框架(`@ohos/hypium`)
548
+ - 测试文件命名:`lodashXtsTest.ts`
549
+ - 测试类命名:`LodashXtsTest`
550
+
551
+ ### 测试代码结构建议
552
+ ```typescript
553
+ import { describe, it, expect } from '@ohos/hypium';
554
+ import _ from '@ohos/lodash';
555
+
556
+ export default function lodashXtsTest() {
557
+ describe('LodashXtsTest', () => {
558
+ // 用例 001:数组分块基础功能验证
559
+ it('chunk_basic_001', () => {
560
+ const result = _.chunk([1, 2, 3, 4, 5], 2);
561
+ expect(result).toEqual([[1, 2], [3, 4], [5]]);
562
+ });
563
+
564
+ // 更多用例...
565
+ });
566
+ }
567
+ ```
568
+
569
+ ### Mock 建议
570
+ - 本库接口均为纯函数,无需 Mock 外部依赖
571
+ - 异步接口(`_.debounce`、`_.throttle`)需在测试中设置合理的等待时间(建议 100ms 以上)
572
+
573
+ ### 测试覆盖率目标
574
+ - 功能覆盖率:≥ 90%(覆盖所有可测试接口)
575
+ - 用例覆盖率:≥ 80%(每个接口至少包含正向和反向用例)
576
576
  ```