origen_testers 0.13.1 → 0.13.2

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 (258) hide show
  1. checksums.yaml +4 -4
  2. data/config/application.rb +151 -151
  3. data/config/boot.rb +13 -13
  4. data/config/commands.rb +85 -86
  5. data/config/users.rb +18 -18
  6. data/config/version.rb +8 -8
  7. data/lib/commands/build.rb +69 -69
  8. data/lib/commands/run.rb +48 -48
  9. data/lib/origen_testers.rb +47 -47
  10. data/lib/origen_testers/api.rb +381 -381
  11. data/lib/origen_testers/basic_test_setups.rb +105 -105
  12. data/lib/origen_testers/callback_handlers.rb +59 -59
  13. data/lib/origen_testers/command_based_tester.rb +45 -45
  14. data/lib/origen_testers/flow.rb +382 -382
  15. data/lib/origen_testers/generator.rb +283 -283
  16. data/lib/origen_testers/generator/identity_map.rb +23 -23
  17. data/lib/origen_testers/generator/placeholder.rb +11 -11
  18. data/lib/origen_testers/generator/test_numberer.rb +23 -23
  19. data/lib/origen_testers/igxl_based_tester.rb +12 -12
  20. data/lib/origen_testers/igxl_based_tester/base.rb +1100 -1099
  21. data/lib/origen_testers/igxl_based_tester/base/ac_specsets.rb +79 -79
  22. data/lib/origen_testers/igxl_based_tester/base/custom_test_instance.rb +169 -169
  23. data/lib/origen_testers/igxl_based_tester/base/dc_specsets.rb +98 -98
  24. data/lib/origen_testers/igxl_based_tester/base/edge.rb +60 -60
  25. data/lib/origen_testers/igxl_based_tester/base/edges.rb +24 -24
  26. data/lib/origen_testers/igxl_based_tester/base/edgeset.rb +39 -39
  27. data/lib/origen_testers/igxl_based_tester/base/edgesets.rb +130 -130
  28. data/lib/origen_testers/igxl_based_tester/base/flow.rb +460 -460
  29. data/lib/origen_testers/igxl_based_tester/base/flow_line.rb +276 -276
  30. data/lib/origen_testers/igxl_based_tester/base/generator.rb +607 -607
  31. data/lib/origen_testers/igxl_based_tester/base/global_specs.rb +83 -83
  32. data/lib/origen_testers/igxl_based_tester/base/job.rb +75 -75
  33. data/lib/origen_testers/igxl_based_tester/base/jobs.rb +44 -44
  34. data/lib/origen_testers/igxl_based_tester/base/level_io_se.rb +59 -59
  35. data/lib/origen_testers/igxl_based_tester/base/level_supply.rb +39 -39
  36. data/lib/origen_testers/igxl_based_tester/base/levels.rb +31 -31
  37. data/lib/origen_testers/igxl_based_tester/base/levelset.rb +110 -110
  38. data/lib/origen_testers/igxl_based_tester/base/patgroup.rb +109 -109
  39. data/lib/origen_testers/igxl_based_tester/base/patgroups.rb +38 -38
  40. data/lib/origen_testers/igxl_based_tester/base/patset.rb +68 -68
  41. data/lib/origen_testers/igxl_based_tester/base/patset_pattern.rb +56 -56
  42. data/lib/origen_testers/igxl_based_tester/base/patsets.rb +38 -38
  43. data/lib/origen_testers/igxl_based_tester/base/patsubr.rb +68 -68
  44. data/lib/origen_testers/igxl_based_tester/base/patsubr_pattern.rb +56 -56
  45. data/lib/origen_testers/igxl_based_tester/base/patsubrs.rb +38 -38
  46. data/lib/origen_testers/igxl_based_tester/base/pinmap.rb +93 -93
  47. data/lib/origen_testers/igxl_based_tester/base/references.rb +25 -25
  48. data/lib/origen_testers/igxl_based_tester/base/test_instance.rb +322 -322
  49. data/lib/origen_testers/igxl_based_tester/base/test_instance_group.rb +66 -66
  50. data/lib/origen_testers/igxl_based_tester/base/test_instances.rb +212 -212
  51. data/lib/origen_testers/igxl_based_tester/base/test_instances/custom_til.rb +37 -37
  52. data/lib/origen_testers/igxl_based_tester/base/timeset.rb +37 -37
  53. data/lib/origen_testers/igxl_based_tester/base/timesets.rb +49 -49
  54. data/lib/origen_testers/igxl_based_tester/base/timesets_basic.rb +49 -49
  55. data/lib/origen_testers/igxl_based_tester/files.rb +43 -43
  56. data/lib/origen_testers/igxl_based_tester/j750.rb +269 -269
  57. data/lib/origen_testers/igxl_based_tester/j750/custom_test_instance.rb +32 -32
  58. data/lib/origen_testers/igxl_based_tester/j750/flow.rb +10 -10
  59. data/lib/origen_testers/igxl_based_tester/j750/flow_line.rb +19 -19
  60. data/lib/origen_testers/igxl_based_tester/j750/generator.rb +19 -19
  61. data/lib/origen_testers/igxl_based_tester/j750/patgroup.rb +9 -9
  62. data/lib/origen_testers/igxl_based_tester/j750/patgroups.rb +10 -10
  63. data/lib/origen_testers/igxl_based_tester/j750/patset.rb +9 -9
  64. data/lib/origen_testers/igxl_based_tester/j750/patset_pattern.rb +18 -18
  65. data/lib/origen_testers/igxl_based_tester/j750/patsets.rb +10 -10
  66. data/lib/origen_testers/igxl_based_tester/j750/patsubr.rb +9 -9
  67. data/lib/origen_testers/igxl_based_tester/j750/patsubr_pattern.rb +18 -18
  68. data/lib/origen_testers/igxl_based_tester/j750/patsubrs.rb +10 -10
  69. data/lib/origen_testers/igxl_based_tester/j750/test_instance.rb +746 -746
  70. data/lib/origen_testers/igxl_based_tester/j750/test_instance_group.rb +9 -9
  71. data/lib/origen_testers/igxl_based_tester/j750/test_instances.rb +10 -10
  72. data/lib/origen_testers/igxl_based_tester/j750_hpt.rb +34 -34
  73. data/lib/origen_testers/igxl_based_tester/j750_hpt/custom_test_instance.rb +32 -32
  74. data/lib/origen_testers/igxl_based_tester/j750_hpt/flow.rb +9 -9
  75. data/lib/origen_testers/igxl_based_tester/j750_hpt/flow_line.rb +9 -9
  76. data/lib/origen_testers/igxl_based_tester/j750_hpt/generator.rb +19 -19
  77. data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroup.rb +9 -9
  78. data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroups.rb +9 -9
  79. data/lib/origen_testers/igxl_based_tester/j750_hpt/patset.rb +9 -9
  80. data/lib/origen_testers/igxl_based_tester/j750_hpt/patset_pattern.rb +9 -9
  81. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsets.rb +9 -9
  82. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr.rb +9 -9
  83. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr_pattern.rb +9 -9
  84. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubrs.rb +9 -9
  85. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance.rb +599 -599
  86. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance_group.rb +9 -9
  87. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instances.rb +9 -9
  88. data/lib/origen_testers/igxl_based_tester/parser.rb +102 -102
  89. data/lib/origen_testers/igxl_based_tester/parser/ac_spec.rb +9 -9
  90. data/lib/origen_testers/igxl_based_tester/parser/dc_spec.rb +33 -33
  91. data/lib/origen_testers/igxl_based_tester/parser/dc_specs.rb +48 -48
  92. data/lib/origen_testers/igxl_based_tester/parser/descriptions.rb +339 -339
  93. data/lib/origen_testers/igxl_based_tester/parser/flow.rb +109 -109
  94. data/lib/origen_testers/igxl_based_tester/parser/flow_line.rb +203 -203
  95. data/lib/origen_testers/igxl_based_tester/parser/flows.rb +21 -21
  96. data/lib/origen_testers/igxl_based_tester/parser/pattern_set.rb +92 -92
  97. data/lib/origen_testers/igxl_based_tester/parser/pattern_sets.rb +31 -31
  98. data/lib/origen_testers/igxl_based_tester/parser/test_instance.rb +420 -420
  99. data/lib/origen_testers/igxl_based_tester/parser/test_instances.rb +24 -24
  100. data/lib/origen_testers/igxl_based_tester/parser/timeset.rb +13 -13
  101. data/lib/origen_testers/igxl_based_tester/ultraflex.rb +798 -798
  102. data/lib/origen_testers/igxl_based_tester/ultraflex/ac_specsets.rb +10 -10
  103. data/lib/origen_testers/igxl_based_tester/ultraflex/ate_hardware.rb +949 -949
  104. data/lib/origen_testers/igxl_based_tester/ultraflex/custom_test_instance.rb +36 -36
  105. data/lib/origen_testers/igxl_based_tester/ultraflex/dc_specsets.rb +10 -10
  106. data/lib/origen_testers/igxl_based_tester/ultraflex/edge.rb +9 -9
  107. data/lib/origen_testers/igxl_based_tester/ultraflex/edges.rb +9 -9
  108. data/lib/origen_testers/igxl_based_tester/ultraflex/edgeset.rb +9 -9
  109. data/lib/origen_testers/igxl_based_tester/ultraflex/edgesets.rb +10 -10
  110. data/lib/origen_testers/igxl_based_tester/ultraflex/flow.rb +158 -158
  111. data/lib/origen_testers/igxl_based_tester/ultraflex/flow_line.rb +19 -19
  112. data/lib/origen_testers/igxl_based_tester/ultraflex/generator.rb +19 -19
  113. data/lib/origen_testers/igxl_based_tester/ultraflex/global_specs.rb +10 -10
  114. data/lib/origen_testers/igxl_based_tester/ultraflex/job.rb +9 -9
  115. data/lib/origen_testers/igxl_based_tester/ultraflex/jobs.rb +10 -10
  116. data/lib/origen_testers/igxl_based_tester/ultraflex/level_io_se.rb +9 -9
  117. data/lib/origen_testers/igxl_based_tester/ultraflex/level_supply.rb +9 -9
  118. data/lib/origen_testers/igxl_based_tester/ultraflex/levels.rb +9 -9
  119. data/lib/origen_testers/igxl_based_tester/ultraflex/levelset.rb +10 -10
  120. data/lib/origen_testers/igxl_based_tester/ultraflex/patgroup.rb +9 -9
  121. data/lib/origen_testers/igxl_based_tester/ultraflex/patgroups.rb +10 -10
  122. data/lib/origen_testers/igxl_based_tester/ultraflex/patset.rb +9 -9
  123. data/lib/origen_testers/igxl_based_tester/ultraflex/patset_pattern.rb +18 -18
  124. data/lib/origen_testers/igxl_based_tester/ultraflex/patsets.rb +10 -10
  125. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr.rb +9 -9
  126. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr_pattern.rb +18 -18
  127. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubrs.rb +10 -10
  128. data/lib/origen_testers/igxl_based_tester/ultraflex/pinmap.rb +10 -10
  129. data/lib/origen_testers/igxl_based_tester/ultraflex/references.rb +10 -10
  130. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/ac_specsets.txt.erb +0 -0
  131. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/dc_specsets.txt.erb +0 -0
  132. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/edgesets.txt.erb +0 -0
  133. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/global_specs.txt.erb +0 -0
  134. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/jobs.txt.erb +0 -0
  135. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/levelset.txt.erb +0 -0
  136. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/pinmap.txt.erb +0 -0
  137. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/references.txt.erb +0 -0
  138. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/timesets.txt.erb +0 -0
  139. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/timesets_basic.txt.erb +0 -0
  140. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb +315 -315
  141. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance_group.rb +9 -9
  142. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instances.rb +10 -10
  143. data/lib/origen_testers/igxl_based_tester/ultraflex/timeset.rb +9 -9
  144. data/lib/origen_testers/igxl_based_tester/ultraflex/timesets.rb +10 -10
  145. data/lib/origen_testers/igxl_based_tester/ultraflex/timesets_basic.rb +10 -10
  146. data/lib/origen_testers/interface.rb +345 -324
  147. data/lib/origen_testers/memory_style.rb +77 -77
  148. data/lib/origen_testers/no_interface.rb +7 -7
  149. data/lib/origen_testers/origen_ext/application/runner.rb +25 -25
  150. data/lib/origen_testers/origen_ext/generator.rb +54 -54
  151. data/lib/origen_testers/origen_ext/generator/flow.rb +91 -77
  152. data/lib/origen_testers/origen_ext/generator/resources.rb +21 -21
  153. data/lib/origen_testers/origen_ext/pins/pin.rb +78 -78
  154. data/lib/origen_testers/origen_ext/pins/pin_collection.rb +84 -84
  155. data/lib/origen_testers/parser.rb +22 -22
  156. data/lib/origen_testers/parser/description_lookup.rb +62 -62
  157. data/lib/origen_testers/parser/searchable_array.rb +30 -30
  158. data/lib/origen_testers/parser/searchable_hash.rb +30 -30
  159. data/lib/origen_testers/pattern_compilers.rb +116 -116
  160. data/lib/origen_testers/pattern_compilers/assembler.rb +88 -88
  161. data/lib/origen_testers/pattern_compilers/job.rb +96 -96
  162. data/lib/origen_testers/pattern_compilers/ultraflex_pattern_compiler.rb +599 -599
  163. data/lib/origen_testers/program_generators.rb +62 -62
  164. data/lib/origen_testers/smartest_based_tester.rb +8 -8
  165. data/lib/origen_testers/smartest_based_tester/base.rb +576 -567
  166. data/lib/origen_testers/smartest_based_tester/base/flow.rb +296 -291
  167. data/lib/origen_testers/smartest_based_tester/base/generator.rb +207 -194
  168. data/lib/origen_testers/smartest_based_tester/base/pattern_compiler.rb +32 -32
  169. data/lib/origen_testers/smartest_based_tester/base/pattern_master.rb +69 -69
  170. data/lib/origen_testers/smartest_based_tester/base/processors.rb +16 -16
  171. data/lib/origen_testers/smartest_based_tester/base/processors/adjacent_if_combiner.rb +106 -106
  172. data/lib/origen_testers/smartest_based_tester/base/processors/continue_implementer.rb +39 -39
  173. data/lib/origen_testers/smartest_based_tester/base/processors/empty_branch_cleaner.rb +21 -21
  174. data/lib/origen_testers/smartest_based_tester/base/processors/extract_run_flag_table.rb +33 -33
  175. data/lib/origen_testers/smartest_based_tester/base/processors/extract_set_variables.rb +22 -22
  176. data/lib/origen_testers/smartest_based_tester/base/processors/flag_optimizer.rb +188 -188
  177. data/lib/origen_testers/smartest_based_tester/base/processors/if_ran_cleaner.rb +34 -34
  178. data/lib/origen_testers/smartest_based_tester/base/test_method.rb +178 -164
  179. data/lib/origen_testers/smartest_based_tester/base/test_methods.rb +77 -73
  180. data/lib/origen_testers/smartest_based_tester/base/test_methods/ac_tml.rb +33 -33
  181. data/lib/origen_testers/smartest_based_tester/base/test_methods/base_tml.rb +38 -38
  182. data/lib/origen_testers/smartest_based_tester/base/test_methods/custom_tml.rb +19 -19
  183. data/lib/origen_testers/smartest_based_tester/base/test_methods/dc_tml.rb +147 -147
  184. data/lib/origen_testers/smartest_based_tester/base/test_methods/limits.rb +65 -65
  185. data/lib/origen_testers/smartest_based_tester/base/test_suite.rb +208 -193
  186. data/lib/origen_testers/smartest_based_tester/base/test_suites.rb +58 -54
  187. data/lib/origen_testers/smartest_based_tester/base/variables_file.rb +38 -38
  188. data/lib/origen_testers/smartest_based_tester/v93k.rb +8 -8
  189. data/lib/origen_testers/smartest_based_tester/v93k/builder.rb +89 -89
  190. data/lib/origen_testers/smartest_based_tester/v93k/builder/flow.rb +181 -181
  191. data/lib/origen_testers/smartest_based_tester/v93k/builder/pattern_master.rb +54 -54
  192. data/lib/origen_testers/smartest_based_tester/v93k/flow.rb +10 -10
  193. data/lib/origen_testers/smartest_based_tester/v93k/generator.rb +19 -19
  194. data/lib/origen_testers/smartest_based_tester/v93k/pattern_compiler.rb +10 -10
  195. data/lib/origen_testers/smartest_based_tester/v93k/pattern_master.rb +10 -10
  196. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.aiv.erb +17 -17
  197. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.pmfl.erb +13 -13
  198. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.tf.erb +236 -214
  199. data/lib/origen_testers/smartest_based_tester/v93k/templates/vars.tf.erb +48 -48
  200. data/lib/origen_testers/smartest_based_tester/v93k/test_method.rb +9 -9
  201. data/lib/origen_testers/smartest_based_tester/v93k/test_methods.rb +9 -9
  202. data/lib/origen_testers/smartest_based_tester/v93k/test_suite.rb +9 -9
  203. data/lib/origen_testers/smartest_based_tester/v93k/test_suites.rb +9 -9
  204. data/lib/origen_testers/smartest_based_tester/v93k/variables_file.rb +10 -10
  205. data/lib/origen_testers/test/basic_interface.rb +17 -17
  206. data/lib/origen_testers/test/block.rb +21 -21
  207. data/lib/origen_testers/test/custom_test_interface.rb +111 -111
  208. data/lib/origen_testers/test/dut.rb +295 -295
  209. data/lib/origen_testers/test/dut2.rb +76 -76
  210. data/lib/origen_testers/test/dut3.rb +244 -244
  211. data/lib/origen_testers/test/interface.rb +503 -503
  212. data/lib/origen_testers/test/nvm.rb +94 -94
  213. data/lib/origen_testers/timing.rb +368 -368
  214. data/lib/origen_testers/vector.rb +207 -207
  215. data/lib/origen_testers/vector_based_tester.rb +41 -41
  216. data/lib/origen_testers/vector_generator.rb +655 -655
  217. data/lib/origen_testers/vector_pipeline.rb +302 -302
  218. data/pattern/bitmap.rb +7 -7
  219. data/pattern/dc_instr.rb +7 -7
  220. data/pattern/delay.rb +7 -7
  221. data/pattern/freq_counter.rb +6 -6
  222. data/pattern/mem_test.rb +8 -8
  223. data/pattern/multi_vector.rb +122 -122
  224. data/pattern/multi_vector_plus1.rb +125 -125
  225. data/pattern/nvm/j750/add_late_pins.rb +3 -3
  226. data/pattern/nvm/j750/iterator_postfix_test_x_bx.rb +8 -8
  227. data/pattern/nvm/j750/iterator_test_x_bx.rb +8 -8
  228. data/pattern/nvm/j750/j750_halt.rb +159 -159
  229. data/pattern/nvm/j750/j750_workout.rb +209 -209
  230. data/pattern/nvm/j750/timing.rb +73 -73
  231. data/pattern/read_write_reg.rb +61 -61
  232. data/pattern/reset.rb +4 -4
  233. data/pattern/subroutines.rb +69 -69
  234. data/pattern/tester_overlay.rb +61 -52
  235. data/pattern/tester_store.rb +28 -28
  236. data/program/_additional_erase.rb +7 -7
  237. data/program/_efa_resources.rb +7 -7
  238. data/program/_erase.rb +25 -25
  239. data/program/_erase_vfy.rb +5 -5
  240. data/program/_iv_resources.rb +10 -10
  241. data/program/basic_interface.rb +5 -5
  242. data/program/components/_prb1_main.rb +222 -222
  243. data/program/components/_temp.rb +6 -6
  244. data/program/custom_tests.rb +10 -10
  245. data/program/flow_control.rb +422 -422
  246. data/program/prb1.rb +11 -11
  247. data/program/prb1_resources.rb +28 -28
  248. data/program/prb2.rb +27 -27
  249. data/program/test.rb +29 -29
  250. data/program/uflex_resources.rb +199 -199
  251. data/templates/example.txt.erb +53 -53
  252. data/templates/j750/program_sheet.txt.erb +9 -9
  253. data/templates/manifest/v93k.yaml.erb +22 -22
  254. data/templates/web/index.md.erb +51 -51
  255. data/templates/web/layouts/_basic.html.erb +15 -15
  256. data/templates/web/partials/_navbar.html.erb +22 -22
  257. data/templates/web/release_notes.md.erb +5 -5
  258. metadata +2 -2
@@ -1,6 +1,6 @@
1
- Flow.create do |options|
2
-
3
- meas :bgap_voltage_meas, tnum: 1050, bin: 119, soft_bin: 2, hi_limit: 45
4
- meas :bgap_voltage_meas1
5
-
6
- end
1
+ Flow.create do |options|
2
+
3
+ meas :bgap_voltage_meas, tnum: 1050, bin: 119, soft_bin: 2, hi_limit: 45
4
+ meas :bgap_voltage_meas1
5
+
6
+ end
@@ -1,10 +1,10 @@
1
- # This flow is used to test custom test method API
2
- Flow.create interface: 'OrigenTesters::Test::CustomTestInterface' do
3
-
4
- custom :test1
5
-
6
- custom :test2
7
-
8
- custom :test3
9
-
10
- end
1
+ # This flow is used to test custom test method API
2
+ Flow.create interface: 'OrigenTesters::Test::CustomTestInterface' do
3
+
4
+ custom :test1
5
+
6
+ custom :test2
7
+
8
+ custom :test3
9
+
10
+ end
@@ -1,422 +1,422 @@
1
- # Flow to exercise the Flow Control API
2
- #
3
- # Some of the other flows also cover the flow control API and those tests are used
4
- # to guarantee that the test ID references work when sub-flows are involved.
5
- # This flow provides a full checkout of all flow control methods.
6
- Flow.create interface: 'OrigenTesters::Test::Interface' do
7
-
8
- self.resources_filename = 'flow_control'
9
-
10
- log "Test that if_failed works"
11
- func :read1, id: :t1, bin: 10
12
- func :erase1, if_failed: :t1, bin: 12
13
-
14
- log "Test the block form of if_failed"
15
- func :read2, id: :t2, bin: 10
16
- if_failed :t2 do
17
- func :erase2
18
- func :erase2
19
- end
20
-
21
- log "Test that if_passed works"
22
- func :read1, id: :t3, bin: 10
23
- func :pgm1, if_passed: :t3
24
-
25
- log "Test the block form of if_passed"
26
- func :read2, id: :t4, bin: 10
27
- if_passed :t4 do
28
- func :pgm1
29
- func :pgm1
30
- end
31
-
32
- log "Test that if_ran works"
33
- func :pgm, id: :t5, bin: 10
34
- func :read0, if_ran: :t5
35
-
36
- log "Test the block form of if_ran"
37
- func :pgm, id: :t6, bin: 10
38
- if_ran :t6 do
39
- func :read0
40
- func :read0
41
- end
42
-
43
- log "Test that unless_ran works"
44
- func :pgm, id: :t7, bin: 10
45
- func :read0, unless_ran: :t7
46
-
47
- log "Test the block form of unless_ran"
48
- func :pgm, id: :t8, bin: 10
49
- unless_ran :t8 do
50
- func :read0
51
- func :read0
52
- end
53
-
54
- log "Test that if_job works"
55
- func :cold_test, if_job: :fc
56
-
57
- log "Test the block form of if_job"
58
- if_job [:prb1, :prb2] do
59
- func :probe_only_test1
60
- func :probe_only_test2
61
- end
62
-
63
- log "Test that the block form of if_job can be overridden, prb9 should be removed"
64
- if_job [:prb1, :prb2, :prb9] do
65
- func :probe_only_test1
66
- end
67
-
68
- log "Test that unless_job works"
69
- func :warmish_test, unless_job: :fc
70
-
71
- log "Test the block form of unless_job"
72
- unless_job [:prb1, :prb2] do
73
- func :ft_only_test1
74
- func :ft_only_test2
75
- end
76
-
77
- log "Test that if_enable works"
78
- func :extra_test, if_enable: :extras
79
-
80
- log "Test the block form of if_enable"
81
- if_enable :cz do
82
- func :cz_test1
83
- func :cz_test2
84
- end
85
-
86
- log "Test that unless_enable works"
87
- func :long_test, unless_enable: :quick
88
-
89
- log "Test the block form of unless_enable"
90
- unless_enable :quick do
91
- func :long_test1
92
- func :long_test2
93
- end
94
-
95
- log "Test that if_any_failed works"
96
- func :test1, id: :ifa1
97
- func :test2, id: :ifa2
98
- func :test3, if_any_failed: [:ifa1, :ifa2]
99
-
100
- log "Test the block form of if_any_failed"
101
- func :test1, id: :oof_passcode1
102
- func :test2, id: :oof_passcode2
103
- if_any_failed :oof_passcode1, :oof_passcode2 do
104
- func :test3
105
- func :test4
106
- end
107
-
108
- log "Test that if_all_failed works"
109
- func :test1, id: :ifall1
110
- func :test2, id: :ifall2
111
- func :test3, if_all_failed: [:ifall1, :ifall2]
112
-
113
- log "Test the block form of if_all_failed"
114
- func :test1, id: :ifallb1
115
- func :test2, id: :ifallb2
116
- if_all_failed [:ifallb1, :ifallb2] do
117
- func :test3
118
- func :test4
119
- end
120
-
121
- log "Test that if_any_passed works"
122
- func :test1, id: :ifap1
123
- func :test2, id: :ifap2
124
- func :test3, if_any_passed: [:ifap1, :ifap2]
125
-
126
- log "Test the block form of if_any_passed"
127
- func :test1, id: :ifapb1
128
- func :test2, id: :ifapb2
129
- if_any_passed :ifapb1, :ifapb2 do
130
- func :test3
131
- func :test4
132
- end
133
-
134
- log "Test that if_all_passed works"
135
- func :test1, id: :ifallp1
136
- func :test2, id: :ifallp2
137
- func :test3, if_all_passed: [:ifallp1, :ifallp2]
138
-
139
- log "Test the block form of if_all_passed"
140
- func :test1, id: :ifallpb1
141
- func :test2, id: :ifallpb2
142
- if_all_passed :ifallpb1, :ifallpb2 do
143
- func :test3
144
- func :test4
145
- end
146
-
147
- log "Test that group-level dependencies work"
148
- group "grp1", id: :grp1 do
149
- func :grp1_test1, bin: 5
150
- func :grp1_test2, bin: 5
151
- func :grp1_test3, bin: 5
152
- end
153
-
154
- group "grp2", if_failed: :grp1 do
155
- func :grp2_test1, bin: 5
156
- func :grp2_test2, bin: 5
157
- func :grp2_test3, bin: 5
158
- end
159
-
160
- log "Another group-level dependencies test based on a real life use case"
161
- func :gt1, bin: 90
162
- group "gt_grp1", id: :gt_grp1 do
163
- func :gt_grp1_test1, bin: 90, id: :gt_grp1
164
- func :gt_grp1_test2, bin: 90, id: :gt_grp1
165
- end
166
- func :gt2, bin: 90, if_failed: :gt_grp1
167
- group "gt_grp2", id: :gt_grp2, if_failed: :gt_grp1 do
168
- # The if_failed and IDs here are redundant, but it should still generate
169
- # valid output if an application were to do this
170
- func :gt_grp2_test1, bin: 90, id: :gt_grp2, if_failed: :gt_grp1
171
- func :gt_grp2_test2, bin: 90, id: :gt_grp2, if_failed: :gt_grp1
172
- end
173
- func :gt3, bin: 90, if_failed: :gt_grp2
174
-
175
- log "Test that nested groups work"
176
- group "level1" do
177
- func :lev1_test1, bin: 5
178
- func :lev1_test2, bin: 5
179
- func :lev1_test3, id: :l1t3, bin: 10
180
- func :lev1_test4, if_failed: :l1t3, bin: 12
181
- func :lev1_test5, id: :l1t5, bin: 12
182
- group "level2" do
183
- func :lev2_test1, bin: 5
184
- func :lev2_test2, bin: 5
185
- func :lev2_test3, id: :l2t3, bin: 10
186
- func :lev2_test4, if_failed: :l2t3, bin: 12
187
- # Test dependency on a test from another group
188
- func :lev2_test5, if_failed: :l1t5, bin: 12
189
- end
190
- end
191
-
192
- log "Test nested conditions on a group"
193
- func :nt1, bin: 10, id: :nt1
194
- if_failed :nt1 do
195
- func :nt2, bin: 11, id: :nt2
196
- group "ntg1", id: :ntg1, if_passed: :nt2 do
197
- func :nt3, bin: 12
198
- end
199
- group "ntg2", id: :ntg2, if_failed: :nt2 do
200
- func :nt4, bin: 13
201
- end
202
- end
203
-
204
- log "Embedded conditional tests 1"
205
- func :test1, id: :ect1_1
206
- if_failed :ect1_1 do
207
- func :test2
208
- func :test3, id: :ect1_3
209
- if_failed :ect1_3 do
210
- func :test4
211
- end
212
- end
213
-
214
- log "Embedded conditional tests 2"
215
- func :test1, id: :ect2_1
216
- func :test2, id: :ect2_2
217
- if_failed :ect2_1 do
218
- func :test3, if_failed: :ect2_2
219
- func :test4, if_enable: "en1"
220
- if_enable "en2" do
221
- func :test5
222
- func :test6
223
- end
224
- func :test7
225
- end
226
- func :test8
227
-
228
- log "Nested enable word test 1"
229
- if_enable "word1" do
230
- func :test1
231
- if_enable "word2" do
232
- func :test2
233
- end
234
- end
235
-
236
- log "Nested enable word test 2"
237
- if_enable "word1" do
238
- func :test1
239
- unless_enable "word2" do
240
- func :test2
241
- end
242
- end
243
-
244
- log "Nested enable word test 3"
245
- if_enable ["word1", "word2"] do
246
- func :test1
247
- if_enable "word3" do
248
- func :test2
249
- end
250
- end
251
-
252
- log "Conditional enable test"
253
- enable :nvm_minimum_ft, if_enable: "nvm_minimum_room", if_job: :fr
254
- enable :nvm_minimum_ft, if_enable: "nvm_minimum_cold", if_job: :fc
255
- disable :nvm_minimum_ft, if_enable: "nvm_minimum_hot", if_job: :fh
256
-
257
- log "Test enable words that wrap a lot of tests"
258
- if_enable :word1 do
259
- 5.times do
260
- func :test1
261
- end
262
- if_enable :word2 do
263
- 4.times do
264
- func :test1
265
- end
266
- func :test1, enable: :word3
267
- end
268
- end
269
-
270
- if tester.j750?
271
- log "This should generate an AND flag"
272
- func :test1, id: :at1
273
- func :test2, id: :at2
274
- if_failed :at1 do
275
- func :test3, if_failed: :at2
276
- # This should re-use the AND flag, rather than create a duplicate
277
- func :test4, if_failed: :at2
278
- end
279
- log "This should NOT generate an AND flag"
280
- # Creating an AND flag here is logically correct, but creates un-necessary flow lines. Since
281
- # the test at11 is already gated by the at21 condition, it does not need to be applied to any
282
- # tests that are dependent on at11.
283
- func :test1, id: :at11
284
- if_failed :at11 do
285
- func :test2, id: :at21
286
- func :test3, if_failed: :at21
287
- func :test4, if_failed: :at21
288
- end
289
- end
290
-
291
- log "Manual flag setting"
292
- test :test1, on_fail: { set_flag: :my_flag }, continue: true
293
- test :test2, if_flag: :my_flag
294
- unless_flag :my_flag do
295
- test :test3
296
- end
297
-
298
- log "Mixed-case manual flags"
299
- test :test1, on_fail: { set_flag: :$My_Mixed_Flag }, continue: true
300
- test :test2, if_flag: "$My_Mixed_Flag"
301
- unless_flag "$My_Mixed_Flag" do
302
- test :test3
303
- end
304
-
305
- log "Mixed-case enables"
306
- test :extra_test, if_enable: :$MCEn_extras
307
- unless_enable "$MCEn_test" do
308
- test :test1
309
- test :test2
310
- end
311
-
312
- if tester.v93k?
313
- log "This should retain the set-run-flag in the else conditional"
314
- func :test22, id: :at22
315
-
316
- if_failed :at22 do
317
- func :test22a
318
- func :test22b
319
- end
320
-
321
- func :test22c
322
- func :test22d
323
-
324
- if_failed :at22 do
325
- func :test22e
326
- func :test22f
327
- end
328
- end
329
-
330
- if tester.v93k?
331
- log "This should optimize away then/else branches that are empty"
332
- func :test36, continue: true
333
- func :test36b, bin: 12, continue:true
334
-
335
- log "Tests of render"
336
-
337
- render 'multi_bin;', if_flag: :my_flag
338
-
339
- func :test36, on_fail: { render: 'multi_bin;' }, if_flag: :my_flag
340
- end
341
-
342
- log 'An optimization test case, this should not generate a flag on V93K'
343
- func :test1, id: :t1a
344
-
345
- if_passed :t1a do
346
- func :test2
347
- end
348
-
349
- if_failed :t1a do
350
- func :test3
351
- bin 10
352
- end
353
-
354
- log 'The reverse optimization test case, this should not generate a flag on V93K'
355
- func :test1, id: :t1b
356
-
357
- if_failed :t1b do
358
- func :test3
359
- bin 10
360
- end
361
-
362
- if_passed :t1b do
363
- func :test2
364
- end
365
-
366
- if tester.v93k?
367
- log 'Nested optimization test case'
368
- func :outer_test, id: :ot
369
- if_failed :ot do
370
- unless_flag :flag1 do
371
- func :inner_test1, id: :it1
372
- render 'multi_bin;', if_failed: :it1
373
- end
374
- end
375
-
376
- log 'Nested flag optimization test case'
377
- if_flag :flag1 do
378
- func :test4, id: :nf_t4
379
- if_failed :nf_t4 do
380
- render 'multi_bin;', if_flag: :flag1
381
- end
382
- end
383
-
384
- log 'The setting of flags used in later OR conditions should be preserved'
385
- func :test2, id: :of1
386
- func :test3, if_failed: :of1
387
- func :test2, id: :of2
388
- func :test3, if_failed: :of2
389
- func :test4
390
- func :test4, if_any_failed: [:of1, :of2]
391
-
392
- log 'The setting of flags used in later AND conditions should be preserved'
393
- func :test2, id: :af1
394
- func :test3, if_failed: :af1
395
- func :test2, id: :af2
396
- func :test3, if_failed: :af2
397
- func :test4
398
- func :test4, if_all_failed: [:af1, :af2]
399
-
400
- log 'Adjacent tests that set a flag and then use it in an OR condition should be valid'
401
- func :test2, id: :of11
402
- func :test2, id: :of12
403
- func :test4, if_any_failed: [:of11, :of12]
404
-
405
- log 'Adjacent tests that set a flag and then use it in an AND condition should be valid'
406
- func :test2, id: :af11
407
- func :test2, id: :af12
408
- func :test4, if_all_failed: [:af11, :af12]
409
-
410
- log 'Adjacent if combiner test case 1'
411
- func :test1, if_enable: :my_enable_word
412
- func :test2, unless_enable: :my_enable_word
413
- func :test1, if_flag: :my_flag
414
- func :test2, unless_flag: :my_flag
415
-
416
- log 'Adjacent if combiner test case 2'
417
- func :test2, unless_enable: :my_enable_word
418
- func :test1, if_enable: :my_enable_word
419
- func :test2, unless_flag: :my_flag
420
- func :test1, if_flag: :my_flag
421
- end
422
- end
1
+ # Flow to exercise the Flow Control API
2
+ #
3
+ # Some of the other flows also cover the flow control API and those tests are used
4
+ # to guarantee that the test ID references work when sub-flows are involved.
5
+ # This flow provides a full checkout of all flow control methods.
6
+ Flow.create interface: 'OrigenTesters::Test::Interface', flow_name: "Flow Control Testing" do
7
+
8
+ self.resources_filename = 'flow_control'
9
+
10
+ log "Test that if_failed works"
11
+ func :read1, id: :t1, bin: 10
12
+ func :erase1, if_failed: :t1, bin: 12
13
+
14
+ log "Test the block form of if_failed"
15
+ func :read2, id: :t2, bin: 10
16
+ if_failed :t2 do
17
+ func :erase2
18
+ func :erase2
19
+ end
20
+
21
+ log "Test that if_passed works"
22
+ func :read1, id: :t3, bin: 10
23
+ func :pgm1, if_passed: :t3
24
+
25
+ log "Test the block form of if_passed"
26
+ func :read2, id: :t4, bin: 10
27
+ if_passed :t4 do
28
+ func :pgm1
29
+ func :pgm1
30
+ end
31
+
32
+ log "Test that if_ran works"
33
+ func :pgm, id: :t5, bin: 10
34
+ func :read0, if_ran: :t5
35
+
36
+ log "Test the block form of if_ran"
37
+ func :pgm, id: :t6, bin: 10
38
+ if_ran :t6 do
39
+ func :read0
40
+ func :read0
41
+ end
42
+
43
+ log "Test that unless_ran works"
44
+ func :pgm, id: :t7, bin: 10
45
+ func :read0, unless_ran: :t7
46
+
47
+ log "Test the block form of unless_ran"
48
+ func :pgm, id: :t8, bin: 10
49
+ unless_ran :t8 do
50
+ func :read0
51
+ func :read0
52
+ end
53
+
54
+ log "Test that if_job works"
55
+ func :cold_test, if_job: :fc
56
+
57
+ log "Test the block form of if_job"
58
+ if_job [:prb1, :prb2] do
59
+ func :probe_only_test1
60
+ func :probe_only_test2
61
+ end
62
+
63
+ log "Test that the block form of if_job can be overridden, prb9 should be removed"
64
+ if_job [:prb1, :prb2, :prb9] do
65
+ func :probe_only_test1
66
+ end
67
+
68
+ log "Test that unless_job works"
69
+ func :warmish_test, unless_job: :fc
70
+
71
+ log "Test the block form of unless_job"
72
+ unless_job [:prb1, :prb2] do
73
+ func :ft_only_test1
74
+ func :ft_only_test2
75
+ end
76
+
77
+ log "Test that if_enable works"
78
+ func :extra_test, if_enable: :extras
79
+
80
+ log "Test the block form of if_enable"
81
+ if_enable :cz do
82
+ func :cz_test1
83
+ func :cz_test2
84
+ end
85
+
86
+ log "Test that unless_enable works"
87
+ func :long_test, unless_enable: :quick
88
+
89
+ log "Test the block form of unless_enable"
90
+ unless_enable :quick do
91
+ func :long_test1
92
+ func :long_test2
93
+ end
94
+
95
+ log "Test that if_any_failed works"
96
+ func :test1, id: :ifa1
97
+ func :test2, id: :ifa2
98
+ func :test3, if_any_failed: [:ifa1, :ifa2]
99
+
100
+ log "Test the block form of if_any_failed"
101
+ func :test1, id: :oof_passcode1
102
+ func :test2, id: :oof_passcode2
103
+ if_any_failed :oof_passcode1, :oof_passcode2 do
104
+ func :test3
105
+ func :test4
106
+ end
107
+
108
+ log "Test that if_all_failed works"
109
+ func :test1, id: :ifall1
110
+ func :test2, id: :ifall2
111
+ func :test3, if_all_failed: [:ifall1, :ifall2]
112
+
113
+ log "Test the block form of if_all_failed"
114
+ func :test1, id: :ifallb1
115
+ func :test2, id: :ifallb2
116
+ if_all_failed [:ifallb1, :ifallb2] do
117
+ func :test3
118
+ func :test4
119
+ end
120
+
121
+ log "Test that if_any_passed works"
122
+ func :test1, id: :ifap1
123
+ func :test2, id: :ifap2
124
+ func :test3, if_any_passed: [:ifap1, :ifap2]
125
+
126
+ log "Test the block form of if_any_passed"
127
+ func :test1, id: :ifapb1
128
+ func :test2, id: :ifapb2
129
+ if_any_passed :ifapb1, :ifapb2 do
130
+ func :test3
131
+ func :test4
132
+ end
133
+
134
+ log "Test that if_all_passed works"
135
+ func :test1, id: :ifallp1
136
+ func :test2, id: :ifallp2
137
+ func :test3, if_all_passed: [:ifallp1, :ifallp2]
138
+
139
+ log "Test the block form of if_all_passed"
140
+ func :test1, id: :ifallpb1
141
+ func :test2, id: :ifallpb2
142
+ if_all_passed :ifallpb1, :ifallpb2 do
143
+ func :test3
144
+ func :test4
145
+ end
146
+
147
+ log "Test that group-level dependencies work"
148
+ group "grp1", id: :grp1 do
149
+ func :grp1_test1, bin: 5
150
+ func :grp1_test2, bin: 5
151
+ func :grp1_test3, bin: 5
152
+ end
153
+
154
+ group "grp2", if_failed: :grp1 do
155
+ func :grp2_test1, bin: 5
156
+ func :grp2_test2, bin: 5
157
+ func :grp2_test3, bin: 5
158
+ end
159
+
160
+ log "Another group-level dependencies test based on a real life use case"
161
+ func :gt1, bin: 90
162
+ group "gt_grp1", id: :gt_grp1 do
163
+ func :gt_grp1_test1, bin: 90, id: :gt_grp1
164
+ func :gt_grp1_test2, bin: 90, id: :gt_grp1
165
+ end
166
+ func :gt2, bin: 90, if_failed: :gt_grp1
167
+ group "gt_grp2", id: :gt_grp2, if_failed: :gt_grp1 do
168
+ # The if_failed and IDs here are redundant, but it should still generate
169
+ # valid output if an application were to do this
170
+ func :gt_grp2_test1, bin: 90, id: :gt_grp2, if_failed: :gt_grp1
171
+ func :gt_grp2_test2, bin: 90, id: :gt_grp2, if_failed: :gt_grp1
172
+ end
173
+ func :gt3, bin: 90, if_failed: :gt_grp2
174
+
175
+ log "Test that nested groups work"
176
+ group "level1" do
177
+ func :lev1_test1, bin: 5
178
+ func :lev1_test2, bin: 5
179
+ func :lev1_test3, id: :l1t3, bin: 10
180
+ func :lev1_test4, if_failed: :l1t3, bin: 12
181
+ func :lev1_test5, id: :l1t5, bin: 12
182
+ group "level2" do
183
+ func :lev2_test1, bin: 5
184
+ func :lev2_test2, bin: 5
185
+ func :lev2_test3, id: :l2t3, bin: 10
186
+ func :lev2_test4, if_failed: :l2t3, bin: 12
187
+ # Test dependency on a test from another group
188
+ func :lev2_test5, if_failed: :l1t5, bin: 12
189
+ end
190
+ end
191
+
192
+ log "Test nested conditions on a group"
193
+ func :nt1, bin: 10, id: :nt1
194
+ if_failed :nt1 do
195
+ func :nt2, bin: 11, id: :nt2
196
+ group "ntg1", id: :ntg1, if_passed: :nt2 do
197
+ func :nt3, bin: 12
198
+ end
199
+ group "ntg2", id: :ntg2, if_failed: :nt2 do
200
+ func :nt4, bin: 13
201
+ end
202
+ end
203
+
204
+ log "Embedded conditional tests 1"
205
+ func :test1, id: :ect1_1
206
+ if_failed :ect1_1 do
207
+ func :test2
208
+ func :test3, id: :ect1_3
209
+ if_failed :ect1_3 do
210
+ func :test4
211
+ end
212
+ end
213
+
214
+ log "Embedded conditional tests 2"
215
+ func :test1, id: :ect2_1
216
+ func :test2, id: :ect2_2
217
+ if_failed :ect2_1 do
218
+ func :test3, if_failed: :ect2_2
219
+ func :test4, if_enable: "en1"
220
+ if_enable "en2" do
221
+ func :test5
222
+ func :test6
223
+ end
224
+ func :test7
225
+ end
226
+ func :test8
227
+
228
+ log "Nested enable word test 1"
229
+ if_enable "word1" do
230
+ func :test1
231
+ if_enable "word2" do
232
+ func :test2
233
+ end
234
+ end
235
+
236
+ log "Nested enable word test 2"
237
+ if_enable "word1" do
238
+ func :test1
239
+ unless_enable "word2" do
240
+ func :test2
241
+ end
242
+ end
243
+
244
+ log "Nested enable word test 3"
245
+ if_enable ["word1", "word2"] do
246
+ func :test1
247
+ if_enable "word3" do
248
+ func :test2
249
+ end
250
+ end
251
+
252
+ log "Conditional enable test"
253
+ enable :nvm_minimum_ft, if_enable: "nvm_minimum_room", if_job: :fr
254
+ enable :nvm_minimum_ft, if_enable: "nvm_minimum_cold", if_job: :fc
255
+ disable :nvm_minimum_ft, if_enable: "nvm_minimum_hot", if_job: :fh
256
+
257
+ log "Test enable words that wrap a lot of tests"
258
+ if_enable :word1 do
259
+ 5.times do
260
+ func :test1
261
+ end
262
+ if_enable :word2 do
263
+ 4.times do
264
+ func :test1
265
+ end
266
+ func :test1, enable: :word3
267
+ end
268
+ end
269
+
270
+ if tester.j750?
271
+ log "This should generate an AND flag"
272
+ func :test1, id: :at1
273
+ func :test2, id: :at2
274
+ if_failed :at1 do
275
+ func :test3, if_failed: :at2
276
+ # This should re-use the AND flag, rather than create a duplicate
277
+ func :test4, if_failed: :at2
278
+ end
279
+ log "This should NOT generate an AND flag"
280
+ # Creating an AND flag here is logically correct, but creates un-necessary flow lines. Since
281
+ # the test at11 is already gated by the at21 condition, it does not need to be applied to any
282
+ # tests that are dependent on at11.
283
+ func :test1, id: :at11
284
+ if_failed :at11 do
285
+ func :test2, id: :at21
286
+ func :test3, if_failed: :at21
287
+ func :test4, if_failed: :at21
288
+ end
289
+ end
290
+
291
+ log "Manual flag setting"
292
+ test :test1, on_fail: { set_flag: :my_flag }, continue: true
293
+ test :test2, if_flag: :my_flag
294
+ unless_flag :my_flag do
295
+ test :test3
296
+ end
297
+
298
+ log "Mixed-case manual flags"
299
+ test :test1, on_fail: { set_flag: :$My_Mixed_Flag }, continue: true
300
+ test :test2, if_flag: "$My_Mixed_Flag"
301
+ unless_flag "$My_Mixed_Flag" do
302
+ test :test3
303
+ end
304
+
305
+ log "Mixed-case enables"
306
+ test :extra_test, if_enable: :$MCEn_extras
307
+ unless_enable "$MCEn_test" do
308
+ test :test1
309
+ test :test2
310
+ end
311
+
312
+ if tester.v93k?
313
+ log "This should retain the set-run-flag in the else conditional"
314
+ func :test22, id: :at22
315
+
316
+ if_failed :at22 do
317
+ func :test22a
318
+ func :test22b
319
+ end
320
+
321
+ func :test22c
322
+ func :test22d
323
+
324
+ if_failed :at22 do
325
+ func :test22e
326
+ func :test22f
327
+ end
328
+ end
329
+
330
+ if tester.v93k?
331
+ log "This should optimize away then/else branches that are empty"
332
+ func :test36, continue: true
333
+ func :test36b, bin: 12, continue:true
334
+
335
+ log "Tests of render"
336
+
337
+ render 'multi_bin;', if_flag: :my_flag
338
+
339
+ func :test36, on_fail: { render: 'multi_bin;' }, if_flag: :my_flag
340
+ end
341
+
342
+ log 'An optimization test case, this should not generate a flag on V93K'
343
+ func :test1, id: :t1a
344
+
345
+ if_passed :t1a do
346
+ func :test2
347
+ end
348
+
349
+ if_failed :t1a do
350
+ func :test3
351
+ bin 10
352
+ end
353
+
354
+ log 'The reverse optimization test case, this should not generate a flag on V93K'
355
+ func :test1, id: :t1b
356
+
357
+ if_failed :t1b do
358
+ func :test3
359
+ bin 10
360
+ end
361
+
362
+ if_passed :t1b do
363
+ func :test2
364
+ end
365
+
366
+ if tester.v93k?
367
+ log 'Nested optimization test case'
368
+ func :outer_test, id: :ot
369
+ if_failed :ot do
370
+ unless_flag :flag1 do
371
+ func :inner_test1, id: :it1
372
+ render 'multi_bin;', if_failed: :it1
373
+ end
374
+ end
375
+
376
+ log 'Nested flag optimization test case'
377
+ if_flag :flag1 do
378
+ func :test4, id: :nf_t4
379
+ if_failed :nf_t4 do
380
+ render 'multi_bin;', if_flag: :flag1
381
+ end
382
+ end
383
+
384
+ log 'The setting of flags used in later OR conditions should be preserved'
385
+ func :test2, id: :of1
386
+ func :test3, if_failed: :of1
387
+ func :test2, id: :of2
388
+ func :test3, if_failed: :of2
389
+ func :test4
390
+ func :test4, if_any_failed: [:of1, :of2]
391
+
392
+ log 'The setting of flags used in later AND conditions should be preserved'
393
+ func :test2, id: :af1
394
+ func :test3, if_failed: :af1
395
+ func :test2, id: :af2
396
+ func :test3, if_failed: :af2
397
+ func :test4
398
+ func :test4, if_all_failed: [:af1, :af2]
399
+
400
+ log 'Adjacent tests that set a flag and then use it in an OR condition should be valid'
401
+ func :test2, id: :of11
402
+ func :test2, id: :of12
403
+ func :test4, if_any_failed: [:of11, :of12]
404
+
405
+ log 'Adjacent tests that set a flag and then use it in an AND condition should be valid'
406
+ func :test2, id: :af11
407
+ func :test2, id: :af12
408
+ func :test4, if_all_failed: [:af11, :af12]
409
+
410
+ log 'Adjacent if combiner test case 1'
411
+ func :test1, if_enable: :my_enable_word
412
+ func :test2, unless_enable: :my_enable_word
413
+ func :test1, if_flag: :my_flag
414
+ func :test2, unless_flag: :my_flag
415
+
416
+ log 'Adjacent if combiner test case 2'
417
+ func :test2, unless_enable: :my_enable_word
418
+ func :test1, if_enable: :my_enable_word
419
+ func :test2, unless_flag: :my_flag
420
+ func :test1, if_flag: :my_flag
421
+ end
422
+ end