ceedling 0.29.1 → 0.30.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1267) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +15 -16
  3. data/Gemfile.lock +1 -1
  4. data/README.md +108 -107
  5. data/Rakefile +11 -11
  6. data/assets/ceedling +3 -3
  7. data/assets/ceedling.cmd +0 -0
  8. data/assets/default_gitignore +5 -5
  9. data/assets/example_file.c +5 -5
  10. data/assets/example_file.h +6 -6
  11. data/assets/project_as_gem.yml +101 -97
  12. data/assets/project_with_guts.yml +102 -98
  13. data/assets/project_with_guts_gcov.yml +102 -98
  14. data/assets/project_with_guts_gcov_abortonuncovered.yml +93 -0
  15. data/assets/test_example_file.c +13 -13
  16. data/assets/test_example_file_boom.c +13 -13
  17. data/assets/test_example_file_success.c +14 -14
  18. data/assets/test_example_file_verbose.c +12 -12
  19. data/assets/uncovered_example_file.c +5 -0
  20. data/bin/ceedling +351 -339
  21. data/ceedling.gemspec +52 -36
  22. data/config/test_environment.rb +11 -11
  23. data/docs/Ceedling Basic Porting.pdf +0 -0
  24. data/docs/Ceedling Managing Release Code.pdf +0 -0
  25. data/docs/Ceedling Powerful Plugins.pdf +0 -0
  26. data/docs/Ceedling Working with IDEs.pdf +0 -0
  27. data/docs/CeedlingPacket.md +2213 -2134
  28. data/docs/CeedlingUpgrade.md +83 -83
  29. data/docs/ThrowTheSwitchCodingStandard.md +207 -207
  30. data/examples/blinky/project.yml +99 -99
  31. data/examples/blinky/rakefile.rb +31 -31
  32. data/examples/blinky/src/BlinkTask.c +21 -21
  33. data/examples/blinky/src/BlinkTask.h +6 -6
  34. data/examples/blinky/src/Configure.c +36 -36
  35. data/examples/blinky/src/Configure.h +6 -6
  36. data/examples/blinky/src/main.c +51 -51
  37. data/examples/blinky/src/main.h +9 -9
  38. data/examples/blinky/test/support/stub_interrupt.h +347 -347
  39. data/examples/blinky/test/support/stub_io.h +421 -421
  40. data/examples/blinky/test/support/stub_iom328p.h +883 -883
  41. data/examples/blinky/test/support/stub_sfr_defs.h +269 -269
  42. data/examples/blinky/test/test_BlinkTask.c +42 -42
  43. data/examples/blinky/test/test_Configure.c +29 -29
  44. data/examples/blinky/test/test_main.c +60 -60
  45. data/examples/temp_sensor/project.yml +66 -76
  46. data/examples/temp_sensor/rakefile.rb +6 -6
  47. data/examples/temp_sensor/src/AdcConductor.c +42 -42
  48. data/examples/temp_sensor/src/AdcConductor.h +13 -13
  49. data/examples/temp_sensor/src/AdcHardware.c +27 -27
  50. data/examples/temp_sensor/src/AdcHardware.h +11 -11
  51. data/examples/temp_sensor/src/AdcHardwareConfigurator.c +18 -18
  52. data/examples/temp_sensor/src/AdcHardwareConfigurator.h +10 -10
  53. data/examples/temp_sensor/src/AdcModel.c +33 -33
  54. data/examples/temp_sensor/src/AdcModel.h +13 -13
  55. data/examples/temp_sensor/src/AdcTemperatureSensor.c +51 -51
  56. data/examples/temp_sensor/src/AdcTemperatureSensor.h +10 -10
  57. data/examples/temp_sensor/src/Executor.c +25 -25
  58. data/examples/temp_sensor/src/Executor.h +9 -9
  59. data/examples/temp_sensor/src/IntrinsicsWrapper.c +18 -18
  60. data/examples/temp_sensor/src/IntrinsicsWrapper.h +7 -7
  61. data/examples/temp_sensor/src/Main.c +46 -46
  62. data/examples/temp_sensor/src/Main.h +7 -7
  63. data/examples/temp_sensor/src/Model.c +10 -10
  64. data/examples/temp_sensor/src/Model.h +8 -8
  65. data/examples/temp_sensor/src/ModelConfig.h +7 -7
  66. data/examples/temp_sensor/src/TaskScheduler.c +72 -72
  67. data/examples/temp_sensor/src/TaskScheduler.h +11 -11
  68. data/examples/temp_sensor/src/TemperatureCalculator.c +27 -27
  69. data/examples/temp_sensor/src/TemperatureCalculator.h +8 -8
  70. data/examples/temp_sensor/src/TemperatureFilter.c +38 -38
  71. data/examples/temp_sensor/src/TemperatureFilter.h +10 -10
  72. data/examples/temp_sensor/src/TimerConductor.c +15 -15
  73. data/examples/temp_sensor/src/TimerConductor.h +9 -9
  74. data/examples/temp_sensor/src/TimerConfigurator.c +51 -51
  75. data/examples/temp_sensor/src/TimerConfigurator.h +15 -15
  76. data/examples/temp_sensor/src/TimerHardware.c +15 -15
  77. data/examples/temp_sensor/src/TimerHardware.h +8 -8
  78. data/examples/temp_sensor/src/TimerInterruptConfigurator.c +55 -55
  79. data/examples/temp_sensor/src/TimerInterruptConfigurator.h +13 -13
  80. data/examples/temp_sensor/src/TimerInterruptHandler.c +25 -25
  81. data/examples/temp_sensor/src/TimerInterruptHandler.h +10 -10
  82. data/examples/temp_sensor/src/TimerModel.c +9 -9
  83. data/examples/temp_sensor/src/TimerModel.h +8 -8
  84. data/examples/temp_sensor/src/Types.h +90 -90
  85. data/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.c +18 -18
  86. data/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.h +8 -8
  87. data/examples/temp_sensor/src/UsartConductor.c +21 -21
  88. data/examples/temp_sensor/src/UsartConductor.h +7 -7
  89. data/examples/temp_sensor/src/UsartConfigurator.c +39 -39
  90. data/examples/temp_sensor/src/UsartConfigurator.h +13 -13
  91. data/examples/temp_sensor/src/UsartHardware.c +22 -22
  92. data/examples/temp_sensor/src/UsartHardware.h +9 -9
  93. data/examples/temp_sensor/src/UsartModel.c +34 -34
  94. data/examples/temp_sensor/src/UsartModel.h +10 -10
  95. data/examples/temp_sensor/src/UsartPutChar.c +16 -16
  96. data/examples/temp_sensor/src/UsartPutChar.h +8 -8
  97. data/examples/temp_sensor/src/UsartTransmitBufferStatus.c +7 -7
  98. data/examples/temp_sensor/src/UsartTransmitBufferStatus.h +8 -8
  99. data/examples/temp_sensor/test/TestAdcConductor.c +121 -121
  100. data/examples/temp_sensor/test/TestAdcHardware.c +44 -44
  101. data/examples/temp_sensor/test/TestAdcModel.c +33 -33
  102. data/examples/temp_sensor/test/TestExecutor.c +36 -36
  103. data/examples/temp_sensor/test/TestMain.c +24 -24
  104. data/examples/temp_sensor/test/TestModel.c +20 -20
  105. data/examples/temp_sensor/test/TestTaskScheduler.c +104 -104
  106. data/examples/temp_sensor/test/TestTemperatureCalculator.c +36 -36
  107. data/examples/temp_sensor/test/TestTemperatureFilter.c +79 -79
  108. data/examples/temp_sensor/test/TestTimerConductor.c +32 -32
  109. data/examples/temp_sensor/test/TestTimerHardware.c +26 -26
  110. data/examples/temp_sensor/test/TestTimerModel.c +18 -18
  111. data/examples/temp_sensor/test/TestUsartBaudRateRegisterCalculator.c +21 -21
  112. data/examples/temp_sensor/test/TestUsartConductor.c +40 -40
  113. data/examples/temp_sensor/test/TestUsartHardware.c +36 -36
  114. data/examples/temp_sensor/test/TestUsartModel.c +40 -40
  115. data/examples/temp_sensor/test/support/UnityHelper.c +12 -12
  116. data/examples/temp_sensor/test/support/UnityHelper.h +12 -12
  117. data/lib/ceedling.rb +99 -99
  118. data/lib/ceedling/build_invoker_utils.rb +39 -39
  119. data/lib/ceedling/cacheinator.rb +47 -47
  120. data/lib/ceedling/cacheinator_helper.rb +35 -31
  121. data/lib/ceedling/cmock_builder.rb +15 -15
  122. data/lib/ceedling/configurator.rb +372 -363
  123. data/lib/ceedling/configurator_builder.rb +463 -458
  124. data/lib/ceedling/configurator_plugins.rb +111 -111
  125. data/lib/ceedling/configurator_setup.rb +127 -127
  126. data/lib/ceedling/configurator_validator.rb +193 -193
  127. data/lib/ceedling/constants.rb +99 -97
  128. data/lib/ceedling/defaults.rb +447 -418
  129. data/lib/ceedling/dependinator.rb +97 -98
  130. data/lib/ceedling/erb_wrapper.rb +8 -8
  131. data/lib/ceedling/file_finder.rb +149 -149
  132. data/lib/ceedling/file_finder_helper.rb +56 -54
  133. data/lib/ceedling/file_path_utils.rb +202 -200
  134. data/lib/ceedling/file_system_utils.rb +69 -69
  135. data/lib/ceedling/file_system_wrapper.rb +9 -9
  136. data/lib/ceedling/file_wrapper.rb +83 -83
  137. data/lib/ceedling/flaginator.rb +74 -74
  138. data/lib/ceedling/generator.rb +186 -183
  139. data/lib/ceedling/generator_helper.rb +40 -40
  140. data/lib/ceedling/generator_test_results.rb +100 -100
  141. data/lib/ceedling/generator_test_results_sanity_checker.rb +65 -65
  142. data/lib/ceedling/generator_test_runner.rb +58 -56
  143. data/lib/ceedling/loginator.rb +31 -31
  144. data/lib/ceedling/makefile.rb +46 -46
  145. data/lib/ceedling/objects.yml +311 -310
  146. data/lib/ceedling/par_map.rb +19 -19
  147. data/lib/ceedling/plugin.rb +80 -80
  148. data/lib/ceedling/plugin_builder.rb +52 -52
  149. data/lib/ceedling/plugin_manager.rb +107 -107
  150. data/lib/ceedling/plugin_manager_helper.rb +19 -19
  151. data/lib/ceedling/plugin_reportinator.rb +76 -76
  152. data/lib/ceedling/plugin_reportinator_helper.rb +51 -51
  153. data/lib/ceedling/preprocessinator.rb +47 -42
  154. data/lib/ceedling/preprocessinator_extractor.rb +30 -30
  155. data/lib/ceedling/preprocessinator_file_handler.rb +21 -21
  156. data/lib/ceedling/preprocessinator_helper.rb +50 -46
  157. data/lib/ceedling/preprocessinator_includes_handler.rb +181 -181
  158. data/lib/ceedling/project_config_manager.rb +52 -46
  159. data/lib/ceedling/project_file_loader.rb +99 -99
  160. data/lib/ceedling/rake_utils.rb +17 -17
  161. data/lib/ceedling/rake_wrapper.rb +33 -33
  162. data/lib/ceedling/rakefile.rb +86 -86
  163. data/lib/ceedling/release_invoker.rb +98 -73
  164. data/lib/ceedling/release_invoker_helper.rb +19 -19
  165. data/lib/ceedling/reportinator.rb +26 -26
  166. data/lib/ceedling/rules_cmock.rake +9 -9
  167. data/lib/ceedling/rules_preprocess.rake +26 -26
  168. data/lib/ceedling/rules_release.rake +99 -86
  169. data/lib/ceedling/rules_release_deep_dependencies.rake +15 -15
  170. data/lib/ceedling/rules_tests.rake +73 -74
  171. data/lib/ceedling/rules_tests_deep_dependencies.rake +15 -15
  172. data/lib/ceedling/setupinator.rb +53 -53
  173. data/lib/ceedling/stream_wrapper.rb +28 -28
  174. data/lib/ceedling/streaminator.rb +40 -40
  175. data/lib/ceedling/streaminator_helper.rb +15 -15
  176. data/lib/ceedling/system_utils.rb +37 -37
  177. data/lib/ceedling/system_wrapper.rb +80 -80
  178. data/lib/ceedling/target_loader.rb +38 -38
  179. data/lib/ceedling/task_invoker.rb +122 -117
  180. data/lib/ceedling/tasks_base.rake +116 -105
  181. data/lib/ceedling/tasks_filesystem.rake +113 -112
  182. data/lib/ceedling/tasks_release.rake +30 -30
  183. data/lib/ceedling/tasks_release_deep_dependencies.rake +9 -9
  184. data/lib/ceedling/tasks_tests.rake +60 -60
  185. data/lib/ceedling/tasks_tests_deep_dependencies.rake +9 -9
  186. data/lib/ceedling/tasks_vendor.rake +35 -35
  187. data/lib/ceedling/test_includes_extractor.rb +111 -85
  188. data/lib/ceedling/test_invoker.rb +164 -188
  189. data/lib/ceedling/test_invoker_helper.rb +32 -32
  190. data/lib/ceedling/tool_executor.rb +229 -229
  191. data/lib/ceedling/tool_executor_helper.rb +164 -164
  192. data/lib/ceedling/verbosinator.rb +10 -10
  193. data/lib/ceedling/version.rb +50 -50
  194. data/lib/ceedling/yaml_wrapper.rb +17 -17
  195. data/license.txt +31 -31
  196. data/plugins/beep/README.md +22 -22
  197. data/plugins/beep/lib/beep.rb +40 -40
  198. data/plugins/bullseye/README.md +76 -0
  199. data/plugins/bullseye/assets/template.erb +15 -15
  200. data/plugins/bullseye/bullseye.rake +173 -169
  201. data/plugins/bullseye/config/defaults.yml +57 -57
  202. data/plugins/bullseye/lib/bullseye.rb +194 -194
  203. data/plugins/colour_report/README.md +20 -0
  204. data/plugins/colour_report/lib/colour_report.rb +16 -16
  205. data/plugins/command_hooks/README.md +53 -53
  206. data/plugins/command_hooks/lib/command_hooks.rb +92 -92
  207. data/plugins/compile_commands_json/README.md +29 -0
  208. data/plugins/compile_commands_json/lib/compile_commands_json.rb +35 -0
  209. data/plugins/dependencies/README.md +254 -0
  210. data/plugins/dependencies/config/defaults.yml +5 -0
  211. data/plugins/dependencies/dependencies.rake +144 -0
  212. data/plugins/dependencies/lib/dependencies.rb +231 -0
  213. data/plugins/fake_function_framework/README.md +250 -250
  214. data/plugins/fake_function_framework/Rakefile +18 -18
  215. data/plugins/fake_function_framework/examples/fff_example/project.yml +71 -71
  216. data/plugins/fake_function_framework/examples/fff_example/rakefile.rb +7 -7
  217. data/plugins/fake_function_framework/examples/fff_example/src/bar.c +1 -1
  218. data/plugins/fake_function_framework/examples/fff_example/src/bar.h +14 -14
  219. data/plugins/fake_function_framework/examples/fff_example/src/custom_types.h +6 -6
  220. data/plugins/fake_function_framework/examples/fff_example/src/display.c +6 -6
  221. data/plugins/fake_function_framework/examples/fff_example/src/display.h +16 -16
  222. data/plugins/fake_function_framework/examples/fff_example/src/event_processor.c +93 -93
  223. data/plugins/fake_function_framework/examples/fff_example/src/event_processor.h +11 -11
  224. data/plugins/fake_function_framework/examples/fff_example/src/foo.c +16 -16
  225. data/plugins/fake_function_framework/examples/fff_example/src/foo.h +8 -8
  226. data/plugins/fake_function_framework/examples/fff_example/src/subfolder/zzz.c +1 -1
  227. data/plugins/fake_function_framework/examples/fff_example/src/subfolder/zzz.h +6 -6
  228. data/plugins/fake_function_framework/examples/fff_example/test/test_event_processor.c +155 -155
  229. data/plugins/fake_function_framework/examples/fff_example/test/test_foo.c +47 -47
  230. data/plugins/fake_function_framework/lib/fake_function_framework.rb +87 -87
  231. data/plugins/fake_function_framework/lib/fff_mock_generator.rb +163 -163
  232. data/plugins/fake_function_framework/spec/fff_mock_header_generator_spec.rb +304 -304
  233. data/plugins/fake_function_framework/spec/fff_mock_source_generator_spec.rb +148 -148
  234. data/plugins/fake_function_framework/spec/header_generator.rb +50 -50
  235. data/plugins/fake_function_framework/spec/spec_helper.rb +96 -96
  236. data/plugins/fake_function_framework/src/fff_unity_helper.h +32 -32
  237. data/plugins/gcov/README.md +412 -101
  238. data/plugins/gcov/assets/template.erb +15 -15
  239. data/plugins/gcov/config/defaults.yml +51 -73
  240. data/plugins/gcov/gcov.rake +209 -220
  241. data/plugins/gcov/lib/gcov.rb +133 -113
  242. data/plugins/gcov/lib/gcov_constants.rb +48 -19
  243. data/plugins/gcov/lib/gcovr_reportinator.rb +331 -0
  244. data/plugins/gcov/lib/reportgenerator_reportinator.rb +153 -0
  245. data/plugins/gcov/lib/reportinator_helper.rb +15 -0
  246. data/plugins/json_tests_report/README.md +36 -0
  247. data/plugins/json_tests_report/lib/json_tests_report.rb +83 -0
  248. data/plugins/junit_tests_report/README.md +36 -36
  249. data/plugins/junit_tests_report/lib/junit_tests_report.rb +134 -130
  250. data/plugins/module_generator/README.md +105 -0
  251. data/plugins/module_generator/config/module_generator.yml +3 -3
  252. data/plugins/module_generator/lib/module_generator.rb +79 -70
  253. data/plugins/module_generator/module_generator.rake +62 -47
  254. data/plugins/raw_output_report/README.md +19 -0
  255. data/plugins/raw_output_report/lib/raw_output_report.rb +41 -41
  256. data/plugins/stdout_gtestlike_tests_report/README.md +19 -0
  257. data/plugins/stdout_gtestlike_tests_report/assets/template.erb +84 -84
  258. data/plugins/stdout_gtestlike_tests_report/assets/template.erb copy +59 -59
  259. data/plugins/stdout_gtestlike_tests_report/config/stdout_gtestlike_tests_report.yml +4 -4
  260. data/plugins/stdout_gtestlike_tests_report/lib/stdout_gtestlike_tests_report.rb +43 -43
  261. data/plugins/stdout_ide_tests_report/README.md +18 -0
  262. data/plugins/stdout_ide_tests_report/config/stdout_ide_tests_report.yml +4 -4
  263. data/plugins/stdout_ide_tests_report/lib/stdout_ide_tests_report.rb +44 -44
  264. data/plugins/stdout_pretty_tests_report/README.md +20 -0
  265. data/plugins/stdout_pretty_tests_report/assets/template.erb +59 -59
  266. data/plugins/stdout_pretty_tests_report/config/stdout_pretty_tests_report.yml +4 -4
  267. data/plugins/stdout_pretty_tests_report/lib/stdout_pretty_tests_report.rb +47 -47
  268. data/plugins/subprojects/README.md +63 -63
  269. data/plugins/subprojects/config/defaults.yml +33 -33
  270. data/plugins/subprojects/lib/subprojects.rb +92 -92
  271. data/plugins/subprojects/subprojects.rake +78 -78
  272. data/plugins/teamcity_tests_report/README.md +18 -0
  273. data/plugins/teamcity_tests_report/config/teamcity_tests_report.yml +4 -4
  274. data/plugins/teamcity_tests_report/lib/teamcity_tests_report.rb +57 -57
  275. data/plugins/warnings_report/README.md +19 -0
  276. data/plugins/warnings_report/lib/warnings_report.rb +69 -69
  277. data/plugins/xml_tests_report/README.md +36 -36
  278. data/plugins/xml_tests_report/lib/xml_tests_report.rb +110 -110
  279. data/spec/build_invoker_utils_spec.rb +54 -54
  280. data/spec/ceedling_spec.rb +154 -154
  281. data/spec/configurator_builder_spec.rb +6 -6
  282. data/spec/configurator_helper_spec.rb +4 -4
  283. data/spec/configurator_spec.rb +9 -9
  284. data/spec/file_finder_helper_spec.rb +53 -53
  285. data/spec/gcov/gcov_deployment_spec.rb +72 -70
  286. data/spec/gcov/gcov_test_cases_spec.rb +128 -91
  287. data/spec/generator_test_results_sanity_checker_spec.rb +88 -88
  288. data/spec/generator_test_results_spec.rb +107 -107
  289. data/spec/par_map_spec.rb +57 -57
  290. data/spec/preprocessinator_extractor_spec.rb +45 -45
  291. data/spec/preprocessinator_includes_handler_spec.rb +202 -202
  292. data/spec/reportinator_spec.rb +19 -19
  293. data/spec/spec_helper.rb +27 -27
  294. data/spec/spec_system_helper.rb +616 -615
  295. data/spec/support/test_example.fail +24 -24
  296. data/spec/support/test_example.pass +24 -24
  297. data/spec/support/test_example_empty.pass +14 -14
  298. data/spec/support/test_example_ignore.pass +24 -24
  299. data/spec/support/test_example_mangled.pass +21 -21
  300. data/spec/support/test_example_with_time.pass +24 -24
  301. data/spec/system/deployment_spec.rb +225 -225
  302. data/spec/system_utils_spec.rb +56 -56
  303. data/spec/target_loader_spec.rb +30 -30
  304. data/spec/tool_executor_helper_spec.rb +310 -310
  305. data/spec/uncatagorized_specs_spec.rb +8 -8
  306. data/vendor/behaviors/Manifest.txt +9 -9
  307. data/vendor/behaviors/Rakefile +19 -19
  308. data/vendor/behaviors/lib/behaviors.rb +76 -76
  309. data/vendor/behaviors/lib/behaviors/reporttask.rb +158 -158
  310. data/vendor/behaviors/test/behaviors_tasks_test.rb +73 -73
  311. data/vendor/behaviors/test/behaviors_test.rb +50 -50
  312. data/vendor/behaviors/test/tasks_test/Rakefile +19 -19
  313. data/vendor/behaviors/test/tasks_test/lib/user.rb +2 -2
  314. data/vendor/behaviors/test/tasks_test/test/user_test.rb +17 -17
  315. data/vendor/c_exception/Gemfile +4 -4
  316. data/vendor/c_exception/Gemfile.lock +12 -12
  317. data/vendor/c_exception/README.md +249 -162
  318. data/vendor/c_exception/docs/CException.md +332 -292
  319. data/vendor/c_exception/docs/ThrowTheSwitchCodingStandard.md +207 -207
  320. data/vendor/c_exception/lib/CException.c +46 -46
  321. data/vendor/c_exception/lib/CException.h +115 -115
  322. data/vendor/c_exception/lib/meson.build +11 -0
  323. data/vendor/c_exception/meson.build +48 -0
  324. data/vendor/c_exception/project.yml +37 -0
  325. data/vendor/c_exception/test/TestException.c +391 -391
  326. data/vendor/{cmock/vendor/c_exception/test → c_exception/test/support}/CExceptionConfig.h +46 -46
  327. data/vendor/c_exception/vendor/unity/README.md +220 -220
  328. data/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +118 -118
  329. data/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +39 -39
  330. data/vendor/c_exception/vendor/unity/auto/generate_config.yml +36 -36
  331. data/vendor/c_exception/vendor/unity/auto/generate_module.rb +308 -308
  332. data/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +437 -437
  333. data/vendor/c_exception/vendor/unity/auto/parse_output.rb +220 -220
  334. data/vendor/c_exception/vendor/unity/auto/stylize_as_junit.rb +252 -252
  335. data/vendor/c_exception/vendor/unity/auto/test_file_filter.rb +25 -25
  336. data/vendor/c_exception/vendor/unity/auto/type_sanitizer.rb +6 -6
  337. data/vendor/c_exception/vendor/unity/auto/unity_test_summary.py +139 -139
  338. data/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +136 -136
  339. data/vendor/c_exception/vendor/unity/auto/unity_to_junit.py +146 -146
  340. data/vendor/c_exception/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +207 -207
  341. data/vendor/c_exception/vendor/unity/docs/UnityAssertionsReference.md +716 -716
  342. data/vendor/c_exception/vendor/unity/docs/UnityConfigurationGuide.md +398 -398
  343. data/vendor/c_exception/vendor/unity/docs/UnityGettingStartedGuide.md +191 -191
  344. data/vendor/c_exception/vendor/unity/docs/UnityHelperScriptsGuide.md +242 -242
  345. data/vendor/c_exception/vendor/unity/docs/license.txt +21 -21
  346. data/vendor/c_exception/vendor/unity/examples/example_1/makefile +71 -71
  347. data/vendor/c_exception/vendor/unity/examples/example_1/readme.txt +4 -4
  348. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode.c +24 -24
  349. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode.h +3 -3
  350. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.c +11 -11
  351. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.h +2 -2
  352. data/vendor/c_exception/vendor/unity/examples/example_1/test/TestProductionCode.c +62 -62
  353. data/vendor/c_exception/vendor/unity/examples/example_1/test/TestProductionCode2.c +31 -31
  354. data/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -53
  355. data/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -57
  356. data/vendor/c_exception/vendor/unity/examples/example_2/makefile +70 -70
  357. data/vendor/c_exception/vendor/unity/examples/example_2/readme.txt +4 -4
  358. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode.c +24 -24
  359. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode.h +3 -3
  360. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.c +11 -11
  361. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.h +2 -2
  362. data/vendor/c_exception/vendor/unity/examples/example_2/test/TestProductionCode.c +64 -64
  363. data/vendor/c_exception/vendor/unity/examples/example_2/test/TestProductionCode2.c +33 -33
  364. data/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +8 -8
  365. data/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +10 -10
  366. data/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -12
  367. data/vendor/c_exception/vendor/unity/examples/example_3/helper/UnityHelper.c +10 -10
  368. data/vendor/c_exception/vendor/unity/examples/example_3/helper/UnityHelper.h +12 -12
  369. data/vendor/c_exception/vendor/unity/examples/example_3/rakefile.rb +43 -43
  370. data/vendor/c_exception/vendor/unity/examples/example_3/rakefile_helper.rb +249 -249
  371. data/vendor/c_exception/vendor/unity/examples/example_3/readme.txt +13 -13
  372. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode.c +24 -24
  373. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode.h +3 -3
  374. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.c +11 -11
  375. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.h +2 -2
  376. data/vendor/c_exception/vendor/unity/examples/example_3/target_gcc_32.yml +46 -46
  377. data/vendor/c_exception/vendor/unity/examples/example_3/test/TestProductionCode.c +62 -62
  378. data/vendor/c_exception/vendor/unity/examples/example_3/test/TestProductionCode2.c +31 -31
  379. data/vendor/c_exception/vendor/unity/examples/unity_config.h +237 -237
  380. data/vendor/c_exception/vendor/unity/extras/eclipse/error_parsers.txt +26 -26
  381. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +48 -48
  382. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +178 -178
  383. data/vendor/c_exception/vendor/unity/extras/fixture/readme.txt +8 -8
  384. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +432 -432
  385. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +83 -83
  386. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +51 -51
  387. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +47 -47
  388. data/vendor/c_exception/vendor/unity/extras/fixture/test/Makefile +74 -74
  389. data/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +22 -22
  390. data/vendor/c_exception/vendor/unity/extras/fixture/test/template_fixture_tests.c +39 -39
  391. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +543 -543
  392. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +57 -57
  393. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +57 -57
  394. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -17
  395. data/vendor/c_exception/vendor/unity/release/build.info +2 -2
  396. data/vendor/c_exception/vendor/unity/release/version.info +2 -2
  397. data/vendor/c_exception/vendor/unity/src/unity.c +1517 -1517
  398. data/vendor/c_exception/vendor/unity/src/unity.h +339 -339
  399. data/vendor/c_exception/vendor/unity/src/unity_internals.h +784 -784
  400. data/vendor/c_exception/vendor/unity/test/Makefile +63 -63
  401. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_cmd.c +61 -61
  402. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_def.c +57 -57
  403. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_head1.c +55 -55
  404. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_head1.h +15 -15
  405. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_cmd.c +80 -80
  406. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_def.c +76 -76
  407. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -75
  408. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_head1.h +13 -13
  409. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new1.c +89 -89
  410. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new2.c +89 -89
  411. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_param.c +77 -77
  412. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run1.c +89 -89
  413. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run2.c +89 -89
  414. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_yaml.c +90 -90
  415. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new1.c +67 -67
  416. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new2.c +70 -70
  417. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_param.c +58 -58
  418. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run1.c +67 -67
  419. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run2.c +70 -70
  420. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_yaml.c +71 -71
  421. data/vendor/c_exception/vendor/unity/test/rakefile +125 -125
  422. data/vendor/c_exception/vendor/unity/test/rakefile_helper.rb +260 -260
  423. data/vendor/c_exception/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -158
  424. data/vendor/c_exception/vendor/unity/test/targets/clang_file.yml +78 -78
  425. data/vendor/c_exception/vendor/unity/test/targets/clang_strict.yml +78 -78
  426. data/vendor/c_exception/vendor/unity/test/targets/gcc_32.yml +49 -49
  427. data/vendor/c_exception/vendor/unity/test/targets/gcc_64.yml +50 -50
  428. data/vendor/c_exception/vendor/unity/test/targets/gcc_auto_limits.yml +47 -47
  429. data/vendor/c_exception/vendor/unity/test/targets/gcc_auto_stdint.yml +59 -59
  430. data/vendor/c_exception/vendor/unity/test/targets/gcc_manual_math.yml +47 -47
  431. data/vendor/c_exception/vendor/unity/test/targets/hitech_picc18.yml +101 -101
  432. data/vendor/c_exception/vendor/unity/test/targets/iar_arm_v4.yml +90 -90
  433. data/vendor/c_exception/vendor/unity/test/targets/iar_arm_v5.yml +80 -80
  434. data/vendor/c_exception/vendor/unity/test/targets/iar_arm_v5_3.yml +80 -80
  435. data/vendor/c_exception/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +94 -94
  436. data/vendor/c_exception/vendor/unity/test/targets/iar_cortexm3_v5.yml +84 -84
  437. data/vendor/c_exception/vendor/unity/test/targets/iar_msp430.yml +95 -95
  438. data/vendor/c_exception/vendor/unity/test/targets/iar_sh2a_v6.yml +86 -86
  439. data/vendor/c_exception/vendor/unity/test/testdata/CException.h +11 -11
  440. data/vendor/c_exception/vendor/unity/test/testdata/Defs.h +8 -8
  441. data/vendor/c_exception/vendor/unity/test/testdata/cmock.h +14 -14
  442. data/vendor/c_exception/vendor/unity/test/testdata/mockMock.h +13 -13
  443. data/vendor/c_exception/vendor/unity/test/testdata/testRunnerGenerator.c +183 -183
  444. data/vendor/c_exception/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +67 -67
  445. data/vendor/c_exception/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +192 -192
  446. data/vendor/c_exception/vendor/unity/test/tests/test_generate_test_runner.rb +1252 -1252
  447. data/vendor/c_exception/vendor/unity/test/tests/testparameterized.c +110 -110
  448. data/vendor/c_exception/vendor/unity/test/tests/testunity.c +4993 -4993
  449. data/vendor/cmock/Gemfile +8 -9
  450. data/vendor/cmock/LICENSE.txt +18 -18
  451. data/vendor/cmock/README.md +34 -34
  452. data/vendor/cmock/config/production_environment.rb +12 -14
  453. data/vendor/cmock/config/test_environment.rb +16 -16
  454. data/vendor/cmock/docs/CMock_Summary.md +806 -696
  455. data/vendor/cmock/docs/ThrowTheSwitchCodingStandard.md +207 -207
  456. data/vendor/cmock/examples/make_example/Makefile +30 -30
  457. data/vendor/cmock/examples/make_example/src/foo.c +5 -5
  458. data/vendor/cmock/examples/make_example/src/foo.h +5 -5
  459. data/vendor/cmock/examples/make_example/src/main.c +15 -15
  460. data/vendor/cmock/examples/make_example/test/test_foo.c +17 -17
  461. data/vendor/cmock/examples/make_example/test/test_main.c +15 -15
  462. data/vendor/cmock/examples/temp_sensor/gcc.yml +44 -44
  463. data/vendor/cmock/examples/temp_sensor/iar_v4.yml +92 -92
  464. data/vendor/cmock/examples/temp_sensor/iar_v5.yml +81 -81
  465. data/vendor/cmock/examples/temp_sensor/rakefile.rb +42 -42
  466. data/vendor/cmock/examples/temp_sensor/rakefile_helper.rb +268 -272
  467. data/vendor/cmock/examples/temp_sensor/src/AT91SAM7X256.h +2556 -2556
  468. data/vendor/cmock/examples/temp_sensor/src/AdcConductor.c +42 -42
  469. data/vendor/cmock/examples/temp_sensor/src/AdcConductor.h +11 -11
  470. data/vendor/cmock/examples/temp_sensor/src/AdcHardware.c +27 -27
  471. data/vendor/cmock/examples/temp_sensor/src/AdcHardware.h +9 -9
  472. data/vendor/cmock/examples/temp_sensor/src/AdcHardwareConfigurator.c +18 -18
  473. data/vendor/cmock/examples/temp_sensor/src/AdcHardwareConfigurator.h +10 -10
  474. data/vendor/cmock/examples/temp_sensor/src/AdcModel.c +33 -33
  475. data/vendor/cmock/examples/temp_sensor/src/AdcModel.h +13 -13
  476. data/vendor/cmock/examples/temp_sensor/src/AdcTemperatureSensor.c +51 -51
  477. data/vendor/cmock/examples/temp_sensor/src/AdcTemperatureSensor.h +10 -10
  478. data/vendor/cmock/examples/temp_sensor/src/Executor.c +25 -25
  479. data/vendor/cmock/examples/temp_sensor/src/Executor.h +9 -9
  480. data/vendor/cmock/examples/temp_sensor/src/IntrinsicsWrapper.c +18 -18
  481. data/vendor/cmock/examples/temp_sensor/src/IntrinsicsWrapper.h +7 -7
  482. data/vendor/cmock/examples/temp_sensor/src/Main.c +46 -46
  483. data/vendor/cmock/examples/temp_sensor/src/Main.h +7 -7
  484. data/vendor/cmock/examples/temp_sensor/src/Model.c +10 -10
  485. data/vendor/cmock/examples/temp_sensor/src/Model.h +8 -8
  486. data/vendor/cmock/examples/temp_sensor/src/ModelConfig.h +7 -7
  487. data/vendor/cmock/examples/temp_sensor/src/TaskScheduler.c +72 -72
  488. data/vendor/cmock/examples/temp_sensor/src/TaskScheduler.h +11 -11
  489. data/vendor/cmock/examples/temp_sensor/src/TemperatureCalculator.c +27 -27
  490. data/vendor/cmock/examples/temp_sensor/src/TemperatureCalculator.h +6 -6
  491. data/vendor/cmock/examples/temp_sensor/src/TemperatureFilter.c +39 -39
  492. data/vendor/cmock/examples/temp_sensor/src/TemperatureFilter.h +10 -10
  493. data/vendor/cmock/examples/temp_sensor/src/TimerConductor.c +15 -15
  494. data/vendor/cmock/examples/temp_sensor/src/TimerConductor.h +9 -9
  495. data/vendor/cmock/examples/temp_sensor/src/TimerConfigurator.c +51 -51
  496. data/vendor/cmock/examples/temp_sensor/src/TimerConfigurator.h +15 -15
  497. data/vendor/cmock/examples/temp_sensor/src/TimerHardware.c +15 -15
  498. data/vendor/cmock/examples/temp_sensor/src/TimerHardware.h +8 -8
  499. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptConfigurator.c +55 -55
  500. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptConfigurator.h +13 -13
  501. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptHandler.c +25 -25
  502. data/vendor/cmock/examples/temp_sensor/src/TimerInterruptHandler.h +10 -10
  503. data/vendor/cmock/examples/temp_sensor/src/TimerModel.c +9 -9
  504. data/vendor/cmock/examples/temp_sensor/src/TimerModel.h +8 -8
  505. data/vendor/cmock/examples/temp_sensor/src/Types.h +103 -103
  506. data/vendor/cmock/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.c +18 -18
  507. data/vendor/cmock/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.h +6 -6
  508. data/vendor/cmock/examples/temp_sensor/src/UsartConductor.c +21 -21
  509. data/vendor/cmock/examples/temp_sensor/src/UsartConductor.h +7 -7
  510. data/vendor/cmock/examples/temp_sensor/src/UsartConfigurator.c +39 -39
  511. data/vendor/cmock/examples/temp_sensor/src/UsartConfigurator.h +13 -13
  512. data/vendor/cmock/examples/temp_sensor/src/UsartHardware.c +22 -22
  513. data/vendor/cmock/examples/temp_sensor/src/UsartHardware.h +9 -9
  514. data/vendor/cmock/examples/temp_sensor/src/UsartModel.c +34 -34
  515. data/vendor/cmock/examples/temp_sensor/src/UsartModel.h +10 -10
  516. data/vendor/cmock/examples/temp_sensor/src/UsartPutChar.c +16 -16
  517. data/vendor/cmock/examples/temp_sensor/src/UsartPutChar.h +8 -8
  518. data/vendor/cmock/examples/temp_sensor/src/UsartTransmitBufferStatus.c +7 -7
  519. data/vendor/cmock/examples/temp_sensor/src/UsartTransmitBufferStatus.h +8 -8
  520. data/vendor/cmock/examples/temp_sensor/test/TestAdcConductor.c +121 -121
  521. data/vendor/cmock/examples/temp_sensor/test/TestAdcHardware.c +44 -44
  522. data/vendor/cmock/examples/temp_sensor/test/TestAdcHardwareConfigurator.c +43 -43
  523. data/vendor/cmock/examples/temp_sensor/test/TestAdcModel.c +33 -33
  524. data/vendor/cmock/examples/temp_sensor/test/TestAdcTemperatureSensor.c +47 -47
  525. data/vendor/cmock/examples/temp_sensor/test/TestExecutor.c +36 -36
  526. data/vendor/cmock/examples/temp_sensor/test/TestMain.c +24 -24
  527. data/vendor/cmock/examples/temp_sensor/test/TestModel.c +20 -20
  528. data/vendor/cmock/examples/temp_sensor/test/TestTaskScheduler.c +104 -104
  529. data/vendor/cmock/examples/temp_sensor/test/TestTemperatureCalculator.c +33 -33
  530. data/vendor/cmock/examples/temp_sensor/test/TestTemperatureFilter.c +69 -69
  531. data/vendor/cmock/examples/temp_sensor/test/TestTimerConductor.c +32 -32
  532. data/vendor/cmock/examples/temp_sensor/test/TestTimerConfigurator.c +112 -112
  533. data/vendor/cmock/examples/temp_sensor/test/TestTimerHardware.c +26 -26
  534. data/vendor/cmock/examples/temp_sensor/test/TestTimerInterruptConfigurator.c +78 -78
  535. data/vendor/cmock/examples/temp_sensor/test/TestTimerInterruptHandler.c +66 -66
  536. data/vendor/cmock/examples/temp_sensor/test/TestTimerModel.c +18 -18
  537. data/vendor/cmock/examples/temp_sensor/test/TestUsartBaudRateRegisterCalculator.c +21 -21
  538. data/vendor/cmock/examples/temp_sensor/test/TestUsartConductor.c +40 -40
  539. data/vendor/cmock/examples/temp_sensor/test/TestUsartConfigurator.c +77 -77
  540. data/vendor/cmock/examples/temp_sensor/test/TestUsartHardware.c +37 -37
  541. data/vendor/cmock/examples/temp_sensor/test/TestUsartModel.c +40 -40
  542. data/vendor/cmock/examples/temp_sensor/test/TestUsartPutChar.c +43 -43
  543. data/vendor/cmock/examples/temp_sensor/test/TestUsartTransmitBufferStatus.c +22 -22
  544. data/vendor/cmock/lib/cmock.rb +104 -86
  545. data/vendor/cmock/lib/cmock_config.rb +173 -163
  546. data/vendor/cmock/lib/cmock_file_writer.rb +48 -44
  547. data/vendor/cmock/lib/cmock_generator.rb +333 -275
  548. data/vendor/cmock/lib/cmock_generator_plugin_array.rb +63 -63
  549. data/vendor/cmock/lib/cmock_generator_plugin_callback.rb +88 -88
  550. data/vendor/cmock/lib/cmock_generator_plugin_cexception.rb +49 -51
  551. data/vendor/cmock/lib/cmock_generator_plugin_expect.rb +100 -103
  552. data/vendor/cmock/lib/cmock_generator_plugin_expect_any_args.rb +50 -53
  553. data/vendor/cmock/lib/cmock_generator_plugin_ignore.rb +88 -75
  554. data/vendor/cmock/lib/cmock_generator_plugin_ignore_arg.rb +42 -42
  555. data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +79 -79
  556. data/vendor/cmock/lib/cmock_generator_utils.rb +247 -253
  557. data/vendor/cmock/lib/cmock_header_parser.rb +595 -474
  558. data/vendor/cmock/lib/cmock_plugin_manager.rb +50 -55
  559. data/vendor/cmock/lib/cmock_unityhelper_parser.rb +77 -75
  560. data/vendor/cmock/meson.build +53 -72
  561. data/vendor/cmock/scripts/create_makefile.rb +203 -202
  562. data/vendor/cmock/scripts/create_mock.rb +8 -8
  563. data/vendor/cmock/scripts/create_runner.rb +18 -20
  564. data/vendor/cmock/scripts/test_summary.rb +18 -19
  565. data/vendor/cmock/src/cmock.c +216 -216
  566. data/vendor/cmock/src/cmock.h +41 -40
  567. data/vendor/cmock/src/cmock_internals.h +91 -91
  568. data/vendor/cmock/src/meson.build +12 -17
  569. data/vendor/cmock/test/c/TestCMockC.c +333 -333
  570. data/vendor/cmock/test/c/TestCMockC.yml +14 -14
  571. data/vendor/cmock/test/c/TestCMockCDynamic.c +186 -186
  572. data/vendor/cmock/test/c/TestCMockCDynamic.yml +12 -12
  573. data/vendor/cmock/test/c/TestCMockCDynamic_Runner.c +36 -36
  574. data/vendor/cmock/test/c/TestCMockC_Runner.c +41 -41
  575. data/vendor/cmock/test/iar/iar_v4/Resource/at91SAM7X256_FLASH.xcl +185 -185
  576. data/vendor/cmock/test/iar/iar_v4/Resource/at91SAM7X256_RAM.xcl +185 -185
  577. data/vendor/cmock/test/iar/iar_v4/Resource/ioat91sam7x256.ddf +2259 -2259
  578. data/vendor/cmock/test/iar/iar_v4/cmock_demo.dep +3691 -3691
  579. data/vendor/cmock/test/iar/iar_v4/cmock_demo.ewp +2581 -2581
  580. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X-EK.h +61 -61
  581. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X256.inc +2314 -2314
  582. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X256.rdf +4704 -4704
  583. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X256.tcl +3407 -3407
  584. data/vendor/cmock/test/iar/iar_v4/incIAR/AT91SAM7X256_inc.h +2268 -2268
  585. data/vendor/cmock/test/iar/iar_v4/incIAR/ioat91sam7x256.h +4380 -4380
  586. data/vendor/cmock/test/iar/iar_v4/incIAR/lib_AT91SAM7X256.h +4211 -4211
  587. data/vendor/cmock/test/iar/iar_v4/settings/cmock_demo.cspy.bat +32 -32
  588. data/vendor/cmock/test/iar/iar_v4/srcIAR/Cstartup.s79 +265 -265
  589. data/vendor/cmock/test/iar/iar_v4/srcIAR/Cstartup_SAM7.c +98 -98
  590. data/vendor/cmock/test/iar/iar_v5/Resource/at91SAM7X256_FLASH.icf +43 -43
  591. data/vendor/cmock/test/iar/iar_v5/Resource/at91SAM7X256_RAM.icf +42 -42
  592. data/vendor/cmock/test/iar/iar_v5/cmock_demo.dep +4204 -4204
  593. data/vendor/cmock/test/iar/iar_v5/cmock_demo.ewp +2426 -2426
  594. data/vendor/cmock/test/iar/iar_v5/incIAR/AT91SAM7X-EK.h +61 -61
  595. data/vendor/cmock/test/iar/iar_v5/incIAR/AT91SAM7X256_inc.h +2268 -2268
  596. data/vendor/cmock/test/iar/iar_v5/incIAR/lib_AT91SAM7X256.h +4211 -4211
  597. data/vendor/cmock/test/iar/iar_v5/incIAR/project.h +30 -30
  598. data/vendor/cmock/test/iar/iar_v5/settings/BasicInterrupt_SAM7X.cspy.bat +33 -33
  599. data/vendor/cmock/test/iar/iar_v5/settings/BasicInterrupt_SAM7X_FLASH_Debug.jlink +12 -12
  600. data/vendor/cmock/test/iar/iar_v5/settings/cmock_demo.cspy.bat +33 -33
  601. data/vendor/cmock/test/iar/iar_v5/settings/cmock_demo_Binary.jlink +12 -12
  602. data/vendor/cmock/test/iar/iar_v5/settings/cmock_demo_FLASH_Debug.jlink +12 -12
  603. data/vendor/cmock/test/iar/iar_v5/settings/cmock_demo_RAM_Debug.jlink +12 -12
  604. data/vendor/cmock/test/iar/iar_v5/srcIAR/Cstartup.s +299 -299
  605. data/vendor/cmock/test/iar/iar_v5/srcIAR/Cstartup_SAM7.c +98 -98
  606. data/vendor/cmock/test/rakefile +147 -106
  607. data/vendor/cmock/test/rakefile_helper.rb +403 -382
  608. data/vendor/cmock/test/system/systest_generator.rb +205 -193
  609. data/vendor/cmock/test/system/test_compilation/callingconv.h +11 -11
  610. data/vendor/cmock/test/system/test_compilation/config.yml +10 -10
  611. data/vendor/cmock/test/system/test_compilation/const.h +37 -37
  612. data/vendor/cmock/test/system/test_compilation/inline.h +23 -23
  613. data/vendor/cmock/test/system/test_compilation/osek.h +275 -275
  614. data/vendor/cmock/test/system/test_compilation/parsing.h +89 -89
  615. data/vendor/cmock/test/system/test_interactions/all_plugins_but_other_limits.yml +375 -375
  616. data/vendor/cmock/test/system/test_interactions/all_plugins_coexist.yml +460 -460
  617. data/vendor/cmock/test/system/test_interactions/array_and_pointer_handling.yml +446 -446
  618. data/vendor/cmock/test/system/test_interactions/basic_expect_and_return.yml +124 -124
  619. data/vendor/cmock/test/system/test_interactions/const_primitives_handling.yml +87 -87
  620. data/vendor/cmock/test/system/test_interactions/doesnt_leave_details_behind.yml +308 -308
  621. data/vendor/cmock/test/system/test_interactions/enforce_strict_ordering.yml +247 -247
  622. data/vendor/cmock/test/system/test_interactions/expect_and_return_custom_types.yml +108 -108
  623. data/vendor/cmock/test/system/test_interactions/expect_and_return_treat_as.yml +173 -173
  624. data/vendor/cmock/test/system/test_interactions/expect_and_throw.yml +170 -170
  625. data/vendor/cmock/test/system/test_interactions/expect_any_args.yml +238 -238
  626. data/vendor/cmock/test/system/test_interactions/fancy_pointer_handling.yml +210 -210
  627. data/vendor/cmock/test/system/test_interactions/function_pointer_handling.yml +83 -82
  628. data/vendor/cmock/test/system/test_interactions/ignore_and_return.yml +329 -329
  629. data/vendor/cmock/test/system/test_interactions/ignore_strict_mock_calling.yml +37 -37
  630. data/vendor/cmock/test/system/test_interactions/newer_standards_stuff1.yml +52 -52
  631. data/vendor/cmock/test/system/test_interactions/nonstandard_parsed_stuff_1.yml +91 -91
  632. data/vendor/cmock/test/system/test_interactions/nonstandard_parsed_stuff_2.yml +59 -59
  633. data/vendor/cmock/test/system/test_interactions/out_of_memory.yml +65 -65
  634. data/vendor/cmock/test/system/test_interactions/parsing_challenges.yml +242 -242
  635. data/vendor/cmock/test/system/test_interactions/return_thru_ptr_and_expect_any_args.yml +235 -235
  636. data/vendor/cmock/test/system/test_interactions/return_thru_ptr_ignore_arg.yml +231 -231
  637. data/vendor/cmock/test/system/test_interactions/skeleton.yml +55 -0
  638. data/vendor/cmock/test/system/test_interactions/skeleton_update.yml +76 -0
  639. data/vendor/cmock/test/system/test_interactions/struct_union_enum_expect_and_return.yml +277 -277
  640. data/vendor/cmock/test/system/test_interactions/struct_union_enum_expect_and_return_with_plugins.yml +280 -280
  641. data/vendor/cmock/test/system/test_interactions/stubs_with_callbacks.yml +221 -221
  642. data/vendor/cmock/test/system/test_interactions/unity_64bit_support.yml +77 -77
  643. data/vendor/cmock/test/system/test_interactions/unity_ignores.yml +139 -139
  644. data/vendor/cmock/test/system/test_interactions/unity_void_pointer_compare.yml +91 -91
  645. data/vendor/cmock/test/targets/clang_strict.yml +90 -90
  646. data/vendor/cmock/test/targets/gcc.yml +58 -58
  647. data/vendor/cmock/test/targets/gcc_64.yml +58 -58
  648. data/vendor/cmock/test/targets/gcc_tiny.yml +80 -80
  649. data/vendor/cmock/test/targets/iar_arm_v4.yml +110 -110
  650. data/vendor/cmock/test/targets/iar_arm_v5.yml +95 -95
  651. data/vendor/cmock/test/test_helper.rb +44 -44
  652. data/vendor/cmock/test/unit/cmock_config_test.rb +126 -123
  653. data/vendor/cmock/test/unit/cmock_config_test.yml +7 -6
  654. data/vendor/cmock/test/unit/cmock_file_writer_test.rb +27 -27
  655. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +686 -551
  656. data/vendor/cmock/test/unit/cmock_generator_plugin_array_test.rb +141 -141
  657. data/vendor/cmock/test/unit/cmock_generator_plugin_callback_test.rb +281 -281
  658. data/vendor/cmock/test/unit/cmock_generator_plugin_cexception_test.rb +96 -96
  659. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_a_test.rb +185 -183
  660. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_any_args_test.rb +67 -67
  661. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_b_test.rb +201 -200
  662. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_arg_test.rb +116 -116
  663. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_test.rb +119 -105
  664. data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +136 -136
  665. data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +398 -415
  666. data/vendor/cmock/test/unit/cmock_header_parser_test.rb +2717 -2000
  667. data/vendor/cmock/test/unit/cmock_plugin_manager_test.rb +100 -100
  668. data/vendor/cmock/test/unit/cmock_unityhelper_parser_test.rb +223 -223
  669. data/vendor/cmock/vendor/behaviors/Manifest.txt +9 -9
  670. data/vendor/cmock/vendor/behaviors/Rakefile +19 -19
  671. data/vendor/cmock/vendor/behaviors/lib/behaviors.rb +76 -76
  672. data/vendor/cmock/vendor/behaviors/lib/behaviors/reporttask.rb +158 -158
  673. data/vendor/cmock/vendor/behaviors/test/behaviors_tasks_test.rb +73 -73
  674. data/vendor/cmock/vendor/behaviors/test/behaviors_test.rb +50 -50
  675. data/vendor/cmock/vendor/behaviors/test/tasks_test/Rakefile +19 -19
  676. data/vendor/cmock/vendor/behaviors/test/tasks_test/lib/user.rb +2 -2
  677. data/vendor/cmock/vendor/behaviors/test/tasks_test/test/user_test.rb +17 -17
  678. data/vendor/cmock/vendor/c_exception/Gemfile +4 -4
  679. data/vendor/cmock/vendor/c_exception/Gemfile.lock +12 -12
  680. data/vendor/cmock/vendor/c_exception/README.md +249 -162
  681. data/vendor/cmock/vendor/c_exception/docs/CException.md +332 -292
  682. data/vendor/cmock/vendor/c_exception/docs/ThrowTheSwitchCodingStandard.md +207 -207
  683. data/vendor/cmock/vendor/c_exception/lib/CException.c +46 -46
  684. data/vendor/cmock/vendor/c_exception/lib/CException.h +115 -115
  685. data/vendor/cmock/vendor/c_exception/lib/meson.build +11 -0
  686. data/vendor/cmock/vendor/c_exception/meson.build +48 -0
  687. data/vendor/cmock/vendor/c_exception/project.yml +37 -0
  688. data/vendor/cmock/vendor/c_exception/test/TestException.c +391 -391
  689. data/vendor/{c_exception/test → cmock/vendor/c_exception/test/support}/CExceptionConfig.h +46 -46
  690. data/vendor/cmock/vendor/c_exception/vendor/unity/README.md +220 -0
  691. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +118 -0
  692. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +39 -0
  693. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_config.yml +36 -0
  694. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_module.rb +308 -0
  695. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +437 -0
  696. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/parse_output.rb +220 -0
  697. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/stylize_as_junit.rb +252 -0
  698. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/test_file_filter.rb +25 -0
  699. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/type_sanitizer.rb +6 -0
  700. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/unity_test_summary.py +139 -0
  701. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +136 -0
  702. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/unity_to_junit.py +146 -0
  703. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +207 -0
  704. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf +0 -0
  705. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityAssertionsReference.md +716 -0
  706. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityConfigurationGuide.md +398 -0
  707. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityGettingStartedGuide.md +191 -0
  708. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityHelperScriptsGuide.md +242 -0
  709. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/license.txt +21 -0
  710. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/makefile +71 -0
  711. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/readme.txt +5 -0
  712. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode.c +24 -0
  713. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode.h +3 -0
  714. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.c +11 -0
  715. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.h +2 -0
  716. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/TestProductionCode.c +62 -0
  717. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/TestProductionCode2.c +31 -0
  718. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -0
  719. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -0
  720. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/makefile +70 -0
  721. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/readme.txt +5 -0
  722. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode.c +24 -0
  723. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode.h +3 -0
  724. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.c +11 -0
  725. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.h +2 -0
  726. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/TestProductionCode.c +64 -0
  727. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/TestProductionCode2.c +33 -0
  728. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +9 -0
  729. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +11 -0
  730. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -0
  731. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/helper/UnityHelper.c +10 -0
  732. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/helper/UnityHelper.h +12 -0
  733. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/rakefile.rb +43 -0
  734. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/rakefile_helper.rb +249 -0
  735. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/readme.txt +13 -0
  736. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode.c +24 -0
  737. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode.h +3 -0
  738. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.c +11 -0
  739. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.h +2 -0
  740. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/target_gcc_32.yml +46 -0
  741. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/test/TestProductionCode.c +62 -0
  742. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/test/TestProductionCode2.c +31 -0
  743. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/unity_config.h +237 -0
  744. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/eclipse/error_parsers.txt +26 -0
  745. data/vendor/cmock/vendor/{unity → c_exception/vendor/unity}/extras/fixture/rakefile.rb +48 -44
  746. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +178 -0
  747. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/readme.txt +9 -0
  748. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +432 -0
  749. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +83 -0
  750. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +51 -0
  751. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +47 -0
  752. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/Makefile +74 -0
  753. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +22 -0
  754. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/template_fixture_tests.c +39 -0
  755. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +543 -0
  756. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +57 -0
  757. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +57 -0
  758. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
  759. data/vendor/cmock/vendor/c_exception/vendor/unity/release/build.info +2 -0
  760. data/vendor/cmock/vendor/c_exception/vendor/unity/release/version.info +2 -0
  761. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.c +1517 -0
  762. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.h +339 -0
  763. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity_internals.h +784 -0
  764. data/vendor/cmock/vendor/c_exception/vendor/unity/test/Makefile +63 -0
  765. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_cmd.c +61 -0
  766. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_def.c +57 -0
  767. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_head1.c +55 -0
  768. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_head1.h +15 -0
  769. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_cmd.c +80 -0
  770. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_def.c +76 -0
  771. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -0
  772. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_head1.h +13 -0
  773. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new1.c +89 -0
  774. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new2.c +89 -0
  775. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_param.c +77 -0
  776. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run1.c +89 -0
  777. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run2.c +89 -0
  778. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_yaml.c +90 -0
  779. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_new1.c +67 -0
  780. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_new2.c +70 -0
  781. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_param.c +58 -0
  782. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_run1.c +67 -0
  783. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_run2.c +70 -0
  784. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_yaml.c +71 -0
  785. data/vendor/cmock/vendor/c_exception/vendor/unity/test/rakefile +125 -0
  786. data/vendor/cmock/vendor/c_exception/vendor/unity/test/rakefile_helper.rb +260 -0
  787. data/vendor/cmock/vendor/c_exception/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -0
  788. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/clang_file.yml +78 -0
  789. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/clang_strict.yml +78 -0
  790. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_32.yml +49 -0
  791. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_64.yml +50 -0
  792. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_auto_limits.yml +47 -0
  793. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_auto_stdint.yml +59 -0
  794. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_manual_math.yml +47 -0
  795. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/hitech_picc18.yml +101 -0
  796. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/iar_arm_v4.yml +90 -0
  797. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/iar_arm_v5.yml +80 -0
  798. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/iar_arm_v5_3.yml +80 -0
  799. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +94 -0
  800. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/iar_cortexm3_v5.yml +84 -0
  801. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/iar_msp430.yml +95 -0
  802. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/iar_sh2a_v6.yml +86 -0
  803. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/CException.h +11 -0
  804. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/Defs.h +8 -0
  805. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/cmock.h +14 -0
  806. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/mockMock.h +13 -0
  807. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/testRunnerGenerator.c +183 -0
  808. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +67 -0
  809. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +192 -0
  810. data/vendor/cmock/vendor/c_exception/vendor/unity/test/tests/test_generate_test_runner.rb +1252 -0
  811. data/vendor/cmock/vendor/c_exception/vendor/unity/test/tests/testparameterized.c +110 -0
  812. data/vendor/cmock/vendor/{unity → c_exception/vendor/unity}/test/tests/testunity.c +4993 -8168
  813. data/vendor/cmock/vendor/unity/CMakeLists.txt +133 -31
  814. data/vendor/cmock/vendor/unity/LICENSE.txt +21 -21
  815. data/vendor/cmock/vendor/unity/README.md +191 -191
  816. data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +119 -119
  817. data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +39 -39
  818. data/vendor/cmock/vendor/unity/auto/generate_config.yml +36 -36
  819. data/vendor/cmock/vendor/unity/auto/generate_module.rb +312 -309
  820. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +511 -495
  821. data/vendor/cmock/vendor/unity/auto/parse_output.rb +322 -322
  822. data/vendor/cmock/vendor/unity/auto/run_test.erb +37 -36
  823. data/vendor/cmock/vendor/unity/auto/stylize_as_junit.rb +251 -251
  824. data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +25 -25
  825. data/vendor/cmock/vendor/unity/auto/type_sanitizer.rb +6 -6
  826. data/vendor/cmock/vendor/unity/auto/unity_test_summary.py +139 -139
  827. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +135 -135
  828. data/vendor/cmock/vendor/unity/auto/unity_to_junit.py +146 -146
  829. data/vendor/cmock/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +206 -206
  830. data/vendor/cmock/vendor/unity/docs/UnityAssertionsReference.md +831 -850
  831. data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.md +563 -541
  832. data/vendor/cmock/vendor/unity/docs/UnityGettingStartedGuide.md +251 -251
  833. data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.md +278 -266
  834. data/vendor/cmock/vendor/unity/examples/example_1/makefile +72 -72
  835. data/vendor/cmock/vendor/unity/examples/example_1/readme.txt +4 -4
  836. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.c +24 -24
  837. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.h +3 -3
  838. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.c +11 -11
  839. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.h +2 -2
  840. data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode.c +62 -62
  841. data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode2.c +31 -31
  842. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -53
  843. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -57
  844. data/vendor/cmock/vendor/unity/examples/example_2/makefile +71 -71
  845. data/vendor/cmock/vendor/unity/examples/example_2/readme.txt +4 -4
  846. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.c +24 -24
  847. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.h +3 -3
  848. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.c +11 -11
  849. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.h +2 -2
  850. data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode.c +64 -64
  851. data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode2.c +33 -33
  852. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +8 -8
  853. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +10 -10
  854. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -12
  855. data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.c +10 -10
  856. data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.h +12 -12
  857. data/vendor/cmock/vendor/unity/examples/example_3/rakefile.rb +38 -38
  858. data/vendor/cmock/vendor/unity/examples/example_3/rakefile_helper.rb +250 -250
  859. data/vendor/cmock/vendor/unity/examples/example_3/readme.txt +13 -13
  860. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.c +24 -24
  861. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.h +3 -3
  862. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.c +11 -11
  863. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.h +2 -2
  864. data/vendor/cmock/vendor/unity/examples/example_3/target_gcc_32.yml +47 -47
  865. data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode.c +62 -62
  866. data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode2.c +31 -31
  867. data/vendor/cmock/vendor/unity/examples/example_4/meson.build +12 -17
  868. data/vendor/cmock/vendor/unity/examples/example_4/readme.txt +14 -14
  869. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode.c +24 -24
  870. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode.h +3 -3
  871. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode2.c +11 -11
  872. data/vendor/cmock/vendor/unity/examples/example_4/src/ProductionCode2.h +2 -2
  873. data/vendor/cmock/vendor/unity/examples/example_4/src/meson.build +16 -21
  874. data/vendor/cmock/vendor/unity/examples/example_4/subprojects/unity.wrap +4 -4
  875. data/vendor/cmock/vendor/unity/examples/example_4/test/TestProductionCode.c +63 -63
  876. data/vendor/cmock/vendor/unity/examples/example_4/test/TestProductionCode2.c +35 -35
  877. data/vendor/cmock/vendor/unity/examples/example_4/test/meson.build +7 -12
  878. data/vendor/cmock/vendor/unity/examples/example_4/test/test_runners/TestProductionCode2_Runner.c +53 -53
  879. data/vendor/cmock/vendor/unity/examples/example_4/test/test_runners/TestProductionCode_Runner.c +57 -57
  880. data/vendor/cmock/vendor/unity/examples/example_4/test/test_runners/meson.build +13 -16
  881. data/vendor/cmock/vendor/unity/examples/unity_config.h +244 -263
  882. data/vendor/cmock/vendor/unity/extras/eclipse/error_parsers.txt +26 -26
  883. data/vendor/cmock/vendor/unity/extras/fixture/readme.md +29 -17
  884. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +310 -275
  885. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +83 -83
  886. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +50 -50
  887. data/vendor/cmock/vendor/unity/extras/fixture/test/Makefile +72 -72
  888. data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +20 -20
  889. data/vendor/cmock/vendor/unity/extras/fixture/test/template_fixture_tests.c +39 -39
  890. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +245 -245
  891. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +32 -32
  892. data/vendor/cmock/vendor/unity/extras/memory/readme.md +49 -49
  893. data/vendor/cmock/vendor/unity/extras/memory/src/unity_memory.c +202 -202
  894. data/vendor/cmock/vendor/unity/extras/memory/src/unity_memory.h +60 -60
  895. data/vendor/cmock/vendor/unity/extras/memory/test/Makefile +78 -78
  896. data/vendor/cmock/vendor/unity/extras/memory/test/unity_memory_Test.c +325 -325
  897. data/vendor/cmock/vendor/unity/extras/memory/test/unity_memory_TestRunner.c +49 -49
  898. data/vendor/cmock/vendor/unity/extras/memory/test/unity_output_Spy.c +56 -56
  899. data/vendor/cmock/vendor/unity/extras/memory/test/unity_output_Spy.h +16 -16
  900. data/vendor/cmock/vendor/unity/meson.build +48 -69
  901. data/vendor/cmock/vendor/unity/src/meson.build +11 -16
  902. data/vendor/cmock/vendor/unity/src/unity.c +2109 -2085
  903. data/vendor/cmock/vendor/unity/src/unity.h +661 -617
  904. data/vendor/cmock/vendor/unity/src/unity_internals.h +1030 -1002
  905. data/vendor/cmock/vendor/unity/test/Makefile +159 -67
  906. data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +61 -61
  907. data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +57 -57
  908. data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.c +55 -55
  909. data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.h +15 -15
  910. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_cmd.c +80 -80
  911. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_def.c +76 -76
  912. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -75
  913. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.h +13 -13
  914. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new1.c +89 -89
  915. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new2.c +89 -89
  916. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_param.c +77 -77
  917. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run1.c +89 -89
  918. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run2.c +89 -89
  919. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_yaml.c +90 -90
  920. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +67 -67
  921. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +70 -70
  922. data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +58 -58
  923. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +67 -67
  924. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +70 -70
  925. data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +71 -71
  926. data/vendor/cmock/vendor/unity/test/rakefile +163 -124
  927. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +315 -269
  928. data/vendor/cmock/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -158
  929. data/vendor/cmock/vendor/unity/test/targets/ansi.yml +44 -49
  930. data/vendor/cmock/vendor/unity/test/targets/clang_file.yml +72 -78
  931. data/vendor/cmock/vendor/unity/test/targets/clang_strict.yml +71 -78
  932. data/vendor/cmock/vendor/unity/test/targets/gcc_32.yml +45 -49
  933. data/vendor/cmock/vendor/unity/test/targets/gcc_64.yml +46 -50
  934. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_limits.yml +43 -47
  935. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_stdint.yml +55 -59
  936. data/vendor/cmock/vendor/unity/test/targets/gcc_manual_math.yml +43 -47
  937. data/vendor/cmock/vendor/unity/test/targets/hitech_picc18.yml +91 -101
  938. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v4.yml +98 -90
  939. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5.yml +92 -80
  940. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5_3.yml +92 -80
  941. data/vendor/cmock/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +90 -94
  942. data/vendor/cmock/vendor/unity/test/targets/iar_cortexm3_v5.yml +94 -84
  943. data/vendor/cmock/vendor/unity/test/targets/iar_msp430.yml +112 -95
  944. data/vendor/cmock/vendor/unity/test/targets/iar_sh2a_v6.yml +99 -86
  945. data/vendor/cmock/vendor/unity/test/testdata/CException.h +11 -11
  946. data/vendor/cmock/vendor/unity/test/testdata/Defs.h +8 -8
  947. data/vendor/cmock/vendor/unity/test/testdata/cmock.h +14 -14
  948. data/vendor/cmock/vendor/unity/test/testdata/mockMock.h +13 -13
  949. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGenerator.c +189 -189
  950. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +70 -70
  951. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +197 -197
  952. data/vendor/cmock/vendor/unity/test/tests/self_assessment_utils.h +144 -0
  953. data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +1260 -1268
  954. data/vendor/cmock/vendor/unity/test/tests/test_unity_arrays.c +2874 -0
  955. data/vendor/cmock/vendor/unity/test/tests/test_unity_core.c +371 -0
  956. data/vendor/cmock/vendor/unity/test/tests/test_unity_doubles.c +773 -0
  957. data/vendor/cmock/vendor/unity/test/tests/test_unity_floats.c +884 -0
  958. data/vendor/cmock/vendor/unity/test/tests/test_unity_integers.c +2847 -0
  959. data/vendor/cmock/vendor/unity/test/tests/test_unity_integers_64.c +773 -0
  960. data/vendor/cmock/vendor/unity/test/tests/test_unity_memory.c +81 -0
  961. data/vendor/{unity/test/tests/testparameterized.c → cmock/vendor/unity/test/tests/test_unity_parameterized.c} +171 -171
  962. data/vendor/cmock/vendor/unity/test/tests/test_unity_strings.c +329 -0
  963. data/vendor/cmock/vendor/unity/unityConfig.cmake +1 -0
  964. data/vendor/deep_merge/MIT-LICENSE +20 -20
  965. data/vendor/deep_merge/README +94 -94
  966. data/vendor/deep_merge/Rakefile +28 -28
  967. data/vendor/deep_merge/lib/deep_merge.rb +211 -211
  968. data/vendor/deep_merge/test/test_deep_merge.rb +553 -553
  969. data/vendor/diy/History.txt +28 -28
  970. data/vendor/diy/README.rdoc +233 -233
  971. data/vendor/diy/Rakefile +33 -33
  972. data/vendor/diy/TODO.txt +9 -9
  973. data/vendor/diy/diy.gemspec +131 -131
  974. data/vendor/diy/lib/diy.rb +403 -403
  975. data/vendor/diy/lib/diy/factory.rb +36 -36
  976. data/vendor/diy/sample_code/car.rb +7 -7
  977. data/vendor/diy/sample_code/chassis.rb +5 -5
  978. data/vendor/diy/sample_code/diy_example.rb +26 -26
  979. data/vendor/diy/sample_code/engine.rb +5 -5
  980. data/vendor/diy/sample_code/objects.yml +10 -10
  981. data/vendor/diy/test/constructor.rb +119 -119
  982. data/vendor/diy/test/diy_test.rb +608 -608
  983. data/vendor/diy/test/factory_test.rb +79 -79
  984. data/vendor/diy/test/files/broken_construction.yml +7 -7
  985. data/vendor/diy/test/files/cat/cat.rb +3 -3
  986. data/vendor/diy/test/files/cat/extra_conflict.yml +5 -5
  987. data/vendor/diy/test/files/cat/heritage.rb +2 -2
  988. data/vendor/diy/test/files/cat/needs_input.yml +3 -3
  989. data/vendor/diy/test/files/cat/the_cat_lineage.rb +1 -1
  990. data/vendor/diy/test/files/dog/dog_model.rb +3 -3
  991. data/vendor/diy/test/files/dog/dog_presenter.rb +3 -3
  992. data/vendor/diy/test/files/dog/dog_view.rb +2 -2
  993. data/vendor/diy/test/files/dog/file_resolver.rb +2 -2
  994. data/vendor/diy/test/files/dog/other_thing.rb +2 -2
  995. data/vendor/diy/test/files/dog/simple.yml +11 -11
  996. data/vendor/diy/test/files/donkey/foo.rb +8 -8
  997. data/vendor/diy/test/files/donkey/foo/bar/qux.rb +7 -7
  998. data/vendor/diy/test/files/factory/beef.rb +5 -5
  999. data/vendor/diy/test/files/factory/dog.rb +6 -6
  1000. data/vendor/diy/test/files/factory/factory.yml +19 -19
  1001. data/vendor/diy/test/files/factory/farm/llama.rb +7 -7
  1002. data/vendor/diy/test/files/factory/farm/pork.rb +7 -7
  1003. data/vendor/diy/test/files/factory/kitten.rb +13 -13
  1004. data/vendor/diy/test/files/fud/objects.yml +13 -13
  1005. data/vendor/diy/test/files/fud/toy.rb +14 -14
  1006. data/vendor/diy/test/files/functions/attached_things_builder.rb +1 -1
  1007. data/vendor/diy/test/files/functions/invalid_method.yml +4 -4
  1008. data/vendor/diy/test/files/functions/method_extractor.rb +2 -2
  1009. data/vendor/diy/test/files/functions/nonsingleton_objects.yml +5 -5
  1010. data/vendor/diy/test/files/functions/objects.yml +21 -21
  1011. data/vendor/diy/test/files/functions/thing.rb +2 -2
  1012. data/vendor/diy/test/files/functions/thing_builder.rb +24 -24
  1013. data/vendor/diy/test/files/functions/things_builder.rb +2 -2
  1014. data/vendor/diy/test/files/gnu/objects.yml +14 -14
  1015. data/vendor/diy/test/files/gnu/thinger.rb +7 -7
  1016. data/vendor/diy/test/files/goat/base.rb +8 -8
  1017. data/vendor/diy/test/files/goat/can.rb +6 -6
  1018. data/vendor/diy/test/files/goat/goat.rb +6 -6
  1019. data/vendor/diy/test/files/goat/objects.yml +12 -12
  1020. data/vendor/diy/test/files/goat/paper.rb +6 -6
  1021. data/vendor/diy/test/files/goat/plane.rb +7 -7
  1022. data/vendor/diy/test/files/goat/shirt.rb +6 -6
  1023. data/vendor/diy/test/files/goat/wings.rb +8 -8
  1024. data/vendor/diy/test/files/horse/holder_thing.rb +3 -3
  1025. data/vendor/diy/test/files/horse/objects.yml +7 -7
  1026. data/vendor/diy/test/files/namespace/animal/bird.rb +5 -5
  1027. data/vendor/diy/test/files/namespace/animal/cat.rb +5 -5
  1028. data/vendor/diy/test/files/namespace/animal/reptile/hardshell/turtle.rb +8 -8
  1029. data/vendor/diy/test/files/namespace/animal/reptile/lizard.rb +7 -7
  1030. data/vendor/diy/test/files/namespace/bad_module_specified.yml +8 -8
  1031. data/vendor/diy/test/files/namespace/class_name_combine.yml +8 -8
  1032. data/vendor/diy/test/files/namespace/no_module_specified.yml +8 -8
  1033. data/vendor/diy/test/files/namespace/objects.yml +21 -21
  1034. data/vendor/diy/test/files/namespace/road.rb +2 -2
  1035. data/vendor/diy/test/files/namespace/sky.rb +2 -2
  1036. data/vendor/diy/test/files/namespace/subcontext.yml +22 -22
  1037. data/vendor/diy/test/files/non_singleton/air.rb +2 -2
  1038. data/vendor/diy/test/files/non_singleton/fat_cat.rb +3 -3
  1039. data/vendor/diy/test/files/non_singleton/objects.yml +19 -19
  1040. data/vendor/diy/test/files/non_singleton/pig.rb +3 -3
  1041. data/vendor/diy/test/files/non_singleton/thread_spinner.rb +3 -3
  1042. data/vendor/diy/test/files/non_singleton/tick.rb +3 -3
  1043. data/vendor/diy/test/files/non_singleton/yard.rb +2 -2
  1044. data/vendor/diy/test/files/yak/core_model.rb +3 -3
  1045. data/vendor/diy/test/files/yak/core_presenter.rb +3 -3
  1046. data/vendor/diy/test/files/yak/core_view.rb +1 -1
  1047. data/vendor/diy/test/files/yak/data_source.rb +1 -1
  1048. data/vendor/diy/test/files/yak/fringe_model.rb +3 -3
  1049. data/vendor/diy/test/files/yak/fringe_presenter.rb +3 -3
  1050. data/vendor/diy/test/files/yak/fringe_view.rb +1 -1
  1051. data/vendor/diy/test/files/yak/giant_squid.rb +3 -3
  1052. data/vendor/diy/test/files/yak/krill.rb +2 -2
  1053. data/vendor/diy/test/files/yak/my_objects.yml +21 -21
  1054. data/vendor/diy/test/files/yak/sub_sub_context_test.yml +27 -27
  1055. data/vendor/diy/test/test_helper.rb +55 -55
  1056. data/vendor/hardmock/CHANGES +78 -78
  1057. data/vendor/hardmock/LICENSE +7 -7
  1058. data/vendor/hardmock/README +70 -70
  1059. data/vendor/hardmock/Rakefile +8 -8
  1060. data/vendor/hardmock/config/environment.rb +12 -12
  1061. data/vendor/hardmock/lib/assert_error.rb +23 -23
  1062. data/vendor/hardmock/lib/extend_test_unit.rb +14 -14
  1063. data/vendor/hardmock/lib/hardmock.rb +86 -86
  1064. data/vendor/hardmock/lib/hardmock/errors.rb +22 -22
  1065. data/vendor/hardmock/lib/hardmock/expectation.rb +229 -229
  1066. data/vendor/hardmock/lib/hardmock/expectation_builder.rb +9 -9
  1067. data/vendor/hardmock/lib/hardmock/expector.rb +26 -26
  1068. data/vendor/hardmock/lib/hardmock/method_cleanout.rb +33 -33
  1069. data/vendor/hardmock/lib/hardmock/mock.rb +180 -180
  1070. data/vendor/hardmock/lib/hardmock/mock_control.rb +53 -53
  1071. data/vendor/hardmock/lib/hardmock/stubbing.rb +210 -210
  1072. data/vendor/hardmock/lib/hardmock/trapper.rb +31 -31
  1073. data/vendor/hardmock/lib/hardmock/utils.rb +9 -9
  1074. data/vendor/hardmock/lib/test_unit_before_after.rb +169 -169
  1075. data/vendor/hardmock/rake_tasks/rdoc.rake +19 -19
  1076. data/vendor/hardmock/rake_tasks/rdoc_options.rb +4 -4
  1077. data/vendor/hardmock/rake_tasks/test.rake +22 -22
  1078. data/vendor/hardmock/test/functional/assert_error_test.rb +52 -52
  1079. data/vendor/hardmock/test/functional/auto_verify_test.rb +178 -178
  1080. data/vendor/hardmock/test/functional/direct_mock_usage_test.rb +396 -396
  1081. data/vendor/hardmock/test/functional/hardmock_test.rb +434 -434
  1082. data/vendor/hardmock/test/functional/stubbing_test.rb +479 -479
  1083. data/vendor/hardmock/test/test_helper.rb +43 -43
  1084. data/vendor/hardmock/test/unit/expectation_builder_test.rb +19 -19
  1085. data/vendor/hardmock/test/unit/expectation_test.rb +372 -372
  1086. data/vendor/hardmock/test/unit/expector_test.rb +57 -57
  1087. data/vendor/hardmock/test/unit/method_cleanout_test.rb +36 -36
  1088. data/vendor/hardmock/test/unit/mock_control_test.rb +175 -175
  1089. data/vendor/hardmock/test/unit/mock_test.rb +279 -279
  1090. data/vendor/hardmock/test/unit/test_unit_before_after_test.rb +452 -452
  1091. data/vendor/hardmock/test/unit/trapper_test.rb +62 -62
  1092. data/vendor/hardmock/test/unit/verify_error_test.rb +40 -40
  1093. data/vendor/unity/CMakeLists.txt +133 -31
  1094. data/vendor/unity/LICENSE.txt +21 -21
  1095. data/vendor/unity/README.md +191 -191
  1096. data/vendor/unity/auto/colour_prompt.rb +119 -119
  1097. data/vendor/unity/auto/colour_reporter.rb +39 -39
  1098. data/vendor/unity/auto/generate_config.yml +36 -36
  1099. data/vendor/unity/auto/generate_module.rb +312 -309
  1100. data/vendor/unity/auto/generate_test_runner.rb +511 -495
  1101. data/vendor/unity/auto/parse_output.rb +322 -322
  1102. data/vendor/unity/auto/run_test.erb +37 -36
  1103. data/vendor/unity/auto/stylize_as_junit.rb +251 -251
  1104. data/vendor/unity/auto/test_file_filter.rb +25 -25
  1105. data/vendor/unity/auto/type_sanitizer.rb +6 -6
  1106. data/vendor/unity/auto/unity_test_summary.py +139 -139
  1107. data/vendor/unity/auto/unity_test_summary.rb +135 -135
  1108. data/vendor/unity/auto/unity_to_junit.py +146 -146
  1109. data/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +206 -206
  1110. data/vendor/unity/docs/UnityAssertionsReference.md +831 -850
  1111. data/vendor/unity/docs/UnityConfigurationGuide.md +563 -541
  1112. data/vendor/unity/docs/UnityGettingStartedGuide.md +251 -251
  1113. data/vendor/unity/docs/UnityHelperScriptsGuide.md +278 -266
  1114. data/vendor/unity/examples/example_1/makefile +72 -72
  1115. data/vendor/unity/examples/example_1/readme.txt +4 -4
  1116. data/vendor/unity/examples/example_1/src/ProductionCode.c +24 -24
  1117. data/vendor/unity/examples/example_1/src/ProductionCode.h +3 -3
  1118. data/vendor/unity/examples/example_1/src/ProductionCode2.c +11 -11
  1119. data/vendor/unity/examples/example_1/src/ProductionCode2.h +2 -2
  1120. data/vendor/unity/examples/example_1/test/TestProductionCode.c +62 -62
  1121. data/vendor/unity/examples/example_1/test/TestProductionCode2.c +31 -31
  1122. data/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -53
  1123. data/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -57
  1124. data/vendor/unity/examples/example_2/makefile +71 -71
  1125. data/vendor/unity/examples/example_2/readme.txt +4 -4
  1126. data/vendor/unity/examples/example_2/src/ProductionCode.c +24 -24
  1127. data/vendor/unity/examples/example_2/src/ProductionCode.h +3 -3
  1128. data/vendor/unity/examples/example_2/src/ProductionCode2.c +11 -11
  1129. data/vendor/unity/examples/example_2/src/ProductionCode2.h +2 -2
  1130. data/vendor/unity/examples/example_2/test/TestProductionCode.c +64 -64
  1131. data/vendor/unity/examples/example_2/test/TestProductionCode2.c +33 -33
  1132. data/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +8 -8
  1133. data/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +10 -10
  1134. data/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -12
  1135. data/vendor/unity/examples/example_3/helper/UnityHelper.c +10 -10
  1136. data/vendor/unity/examples/example_3/helper/UnityHelper.h +12 -12
  1137. data/vendor/unity/examples/example_3/rakefile.rb +38 -38
  1138. data/vendor/unity/examples/example_3/rakefile_helper.rb +250 -250
  1139. data/vendor/unity/examples/example_3/readme.txt +13 -13
  1140. data/vendor/unity/examples/example_3/src/ProductionCode.c +24 -24
  1141. data/vendor/unity/examples/example_3/src/ProductionCode.h +3 -3
  1142. data/vendor/unity/examples/example_3/src/ProductionCode2.c +11 -11
  1143. data/vendor/unity/examples/example_3/src/ProductionCode2.h +2 -2
  1144. data/vendor/unity/examples/example_3/target_gcc_32.yml +47 -47
  1145. data/vendor/unity/examples/example_3/test/TestProductionCode.c +62 -62
  1146. data/vendor/unity/examples/example_3/test/TestProductionCode2.c +31 -31
  1147. data/vendor/unity/examples/example_4/meson.build +12 -17
  1148. data/vendor/unity/examples/example_4/readme.txt +14 -14
  1149. data/vendor/unity/examples/example_4/src/ProductionCode.c +24 -24
  1150. data/vendor/unity/examples/example_4/src/ProductionCode.h +3 -3
  1151. data/vendor/unity/examples/example_4/src/ProductionCode2.c +11 -11
  1152. data/vendor/unity/examples/example_4/src/ProductionCode2.h +2 -2
  1153. data/vendor/unity/examples/example_4/src/meson.build +16 -21
  1154. data/vendor/unity/examples/example_4/subprojects/unity.wrap +4 -4
  1155. data/vendor/unity/examples/example_4/test/TestProductionCode.c +63 -63
  1156. data/vendor/unity/examples/example_4/test/TestProductionCode2.c +35 -35
  1157. data/vendor/unity/examples/example_4/test/meson.build +7 -12
  1158. data/vendor/unity/examples/example_4/test/test_runners/TestProductionCode2_Runner.c +53 -53
  1159. data/vendor/unity/examples/example_4/test/test_runners/TestProductionCode_Runner.c +57 -57
  1160. data/vendor/unity/examples/example_4/test/test_runners/meson.build +13 -16
  1161. data/vendor/unity/examples/unity_config.h +244 -263
  1162. data/vendor/unity/extras/eclipse/error_parsers.txt +26 -26
  1163. data/vendor/unity/extras/fixture/readme.md +29 -17
  1164. data/vendor/unity/extras/fixture/src/unity_fixture.c +310 -275
  1165. data/vendor/unity/extras/fixture/src/unity_fixture.h +83 -83
  1166. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +50 -50
  1167. data/vendor/unity/extras/fixture/test/Makefile +72 -72
  1168. data/vendor/unity/extras/fixture/test/main/AllTests.c +20 -20
  1169. data/vendor/unity/extras/fixture/test/template_fixture_tests.c +39 -39
  1170. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +245 -245
  1171. data/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +32 -32
  1172. data/vendor/unity/extras/memory/readme.md +49 -49
  1173. data/vendor/unity/extras/memory/src/unity_memory.c +202 -202
  1174. data/vendor/unity/extras/memory/src/unity_memory.h +60 -60
  1175. data/vendor/unity/extras/memory/test/Makefile +78 -78
  1176. data/vendor/unity/extras/memory/test/unity_memory_Test.c +325 -325
  1177. data/vendor/unity/extras/memory/test/unity_memory_TestRunner.c +49 -49
  1178. data/vendor/unity/extras/memory/test/unity_output_Spy.c +56 -56
  1179. data/vendor/unity/extras/memory/test/unity_output_Spy.h +16 -16
  1180. data/vendor/unity/meson.build +48 -69
  1181. data/vendor/unity/src/meson.build +11 -16
  1182. data/vendor/unity/src/unity.c +2109 -2085
  1183. data/vendor/unity/src/unity.h +661 -617
  1184. data/vendor/unity/src/unity_internals.h +1030 -1002
  1185. data/vendor/unity/test/Makefile +159 -67
  1186. data/vendor/unity/test/expectdata/testsample_cmd.c +61 -61
  1187. data/vendor/unity/test/expectdata/testsample_def.c +57 -57
  1188. data/vendor/unity/test/expectdata/testsample_head1.c +55 -55
  1189. data/vendor/unity/test/expectdata/testsample_head1.h +15 -15
  1190. data/vendor/unity/test/expectdata/testsample_mock_cmd.c +80 -80
  1191. data/vendor/unity/test/expectdata/testsample_mock_def.c +76 -76
  1192. data/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -75
  1193. data/vendor/unity/test/expectdata/testsample_mock_head1.h +13 -13
  1194. data/vendor/unity/test/expectdata/testsample_mock_new1.c +89 -89
  1195. data/vendor/unity/test/expectdata/testsample_mock_new2.c +89 -89
  1196. data/vendor/unity/test/expectdata/testsample_mock_param.c +77 -77
  1197. data/vendor/unity/test/expectdata/testsample_mock_run1.c +89 -89
  1198. data/vendor/unity/test/expectdata/testsample_mock_run2.c +89 -89
  1199. data/vendor/unity/test/expectdata/testsample_mock_yaml.c +90 -90
  1200. data/vendor/unity/test/expectdata/testsample_new1.c +67 -67
  1201. data/vendor/unity/test/expectdata/testsample_new2.c +70 -70
  1202. data/vendor/unity/test/expectdata/testsample_param.c +58 -58
  1203. data/vendor/unity/test/expectdata/testsample_run1.c +67 -67
  1204. data/vendor/unity/test/expectdata/testsample_run2.c +70 -70
  1205. data/vendor/unity/test/expectdata/testsample_yaml.c +71 -71
  1206. data/vendor/unity/test/rakefile +163 -124
  1207. data/vendor/unity/test/rakefile_helper.rb +315 -269
  1208. data/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -158
  1209. data/vendor/unity/test/targets/ansi.yml +44 -49
  1210. data/vendor/unity/test/targets/clang_file.yml +72 -78
  1211. data/vendor/unity/test/targets/clang_strict.yml +71 -78
  1212. data/vendor/unity/test/targets/gcc_32.yml +45 -49
  1213. data/vendor/unity/test/targets/gcc_64.yml +46 -50
  1214. data/vendor/unity/test/targets/gcc_auto_limits.yml +43 -47
  1215. data/vendor/unity/test/targets/gcc_auto_stdint.yml +55 -59
  1216. data/vendor/unity/test/targets/gcc_manual_math.yml +43 -47
  1217. data/vendor/unity/test/targets/hitech_picc18.yml +91 -101
  1218. data/vendor/unity/test/targets/iar_arm_v4.yml +98 -90
  1219. data/vendor/unity/test/targets/iar_arm_v5.yml +92 -80
  1220. data/vendor/unity/test/targets/iar_arm_v5_3.yml +92 -80
  1221. data/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +90 -94
  1222. data/vendor/unity/test/targets/iar_cortexm3_v5.yml +94 -84
  1223. data/vendor/unity/test/targets/iar_msp430.yml +112 -95
  1224. data/vendor/unity/test/targets/iar_sh2a_v6.yml +99 -86
  1225. data/vendor/unity/test/testdata/CException.h +11 -11
  1226. data/vendor/unity/test/testdata/Defs.h +8 -8
  1227. data/vendor/unity/test/testdata/cmock.h +14 -14
  1228. data/vendor/unity/test/testdata/mockMock.h +13 -13
  1229. data/vendor/unity/test/testdata/testRunnerGenerator.c +189 -189
  1230. data/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +70 -70
  1231. data/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +197 -197
  1232. data/vendor/unity/test/tests/self_assessment_utils.h +144 -0
  1233. data/vendor/unity/test/tests/test_generate_test_runner.rb +1260 -1268
  1234. data/vendor/unity/test/tests/test_unity_arrays.c +2874 -0
  1235. data/vendor/unity/test/tests/test_unity_core.c +371 -0
  1236. data/vendor/unity/test/tests/test_unity_doubles.c +773 -0
  1237. data/vendor/unity/test/tests/test_unity_floats.c +884 -0
  1238. data/vendor/unity/test/tests/test_unity_integers.c +2847 -0
  1239. data/vendor/unity/test/tests/test_unity_integers_64.c +773 -0
  1240. data/vendor/unity/test/tests/test_unity_memory.c +81 -0
  1241. data/vendor/{cmock/vendor/unity/test/tests/testparameterized.c → unity/test/tests/test_unity_parameterized.c} +171 -171
  1242. data/vendor/unity/test/tests/test_unity_strings.c +329 -0
  1243. data/vendor/unity/unityConfig.cmake +1 -0
  1244. metadata +225 -62
  1245. data/ceedling.sublime-project +0 -28
  1246. data/ceedling.sublime-workspace +0 -1276
  1247. data/docs/CeedlingPacket.odt +0 -0
  1248. data/docs/CeedlingPacket.pdf +0 -0
  1249. data/plugins/bullseye/readme.txt +0 -0
  1250. data/vendor/c_exception/LICENSE.txt +0 -30
  1251. data/vendor/c_exception/Rakefile +0 -42
  1252. data/vendor/c_exception/makefile +0 -24
  1253. data/vendor/c_exception/test/TestException_Runner.c +0 -67
  1254. data/vendor/cmock/vendor/c_exception/LICENSE.txt +0 -30
  1255. data/vendor/cmock/vendor/c_exception/Rakefile +0 -42
  1256. data/vendor/cmock/vendor/c_exception/makefile +0 -24
  1257. data/vendor/cmock/vendor/c_exception/test/TestException_Runner.c +0 -67
  1258. data/vendor/cmock/vendor/unity/extras/fixture/rakefile_helper.rb +0 -183
  1259. data/vendor/cmock/vendor/unity/extras/memory/rakefile.rb +0 -45
  1260. data/vendor/cmock/vendor/unity/extras/memory/rakefile_helper.rb +0 -187
  1261. data/vendor/cmock/vendor/unity/src/CMakeLists.txt +0 -22
  1262. data/vendor/unity/extras/fixture/rakefile.rb +0 -44
  1263. data/vendor/unity/extras/fixture/rakefile_helper.rb +0 -183
  1264. data/vendor/unity/extras/memory/rakefile.rb +0 -45
  1265. data/vendor/unity/extras/memory/rakefile_helper.rb +0 -187
  1266. data/vendor/unity/src/CMakeLists.txt +0 -22
  1267. data/vendor/unity/test/tests/testunity.c +0 -8168
@@ -1,9 +1,8 @@
1
- source "http://rubygems.org/"
2
-
3
- gem "bundler", "~> 1.1.rc.7"
4
- gem "rake", ">= 0.9.2.2"
5
-
6
- gem "minitest"
7
- gem "require_all"
8
- gem "constructor"
9
- gem "diy"
1
+ source "http://rubygems.org/"
2
+
3
+ gem "bundler"
4
+ gem "rake"
5
+ gem "minitest"
6
+ gem "require_all"
7
+ gem "constructor"
8
+ gem "diy"
@@ -1,19 +1,19 @@
1
- Copyright (c) 2007-14 Mike Karlesky, Mark VanderVoord, Greg Williams
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy
4
- of this software and associated documentation files (the "Software"), to deal
5
- in the Software without restriction, including without limitation the rights
6
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- copies of the Software, and to permit persons to whom the Software is
8
- furnished to do so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in
11
- all copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1
+ Copyright (c) 2007-14 Mike Karlesky, Mark VanderVoord, Greg Williams
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
19
  THE SOFTWARE.
@@ -1,34 +1,34 @@
1
- CMock - Mock/stub generator for C
2
- =================================
3
-
4
- [![CMock Build Status](https://api.travis-ci.org/ThrowTheSwitch/CMock.png?branch=master)](https://travis-ci.org/ThrowTheSwitch/CMock)
5
-
6
- Getting Started
7
- ================
8
-
9
- If you're using Ceedling, there is no need to install CMock. It will handle it for you.
10
- For everyone else, the simplest way is to grab it off github. You can also download it
11
- as a zip if you prefer. The Github method looks something like this:
12
-
13
- > git clone --recursive https://github.com/throwtheswitch/cmock.git
14
- > cd cmock
15
- > bundle install # Ensures you have all RubyGems needed
16
-
17
- If you plan to help with the development of CMock (or just want to verify that it can
18
- perform its self tests on your system) then you can enter the test directory and then
19
- ask it to test:
20
-
21
- > cd test
22
- > rake # Run all CMock self tests
23
-
24
- API Documentation
25
- =================
26
-
27
- * Not sure what you're doing?
28
- * [View docs/CMock_Summary.md](docs/CMock_Summary.md)
29
- * Interested in our MIT-style license?
30
- * [View docs/license.txt](docs/license.txt)
31
- * Are there examples?
32
- * They are all in [/examples](examples/)
33
- * Any other resources to check out?
34
- * Definitely! Check out our developer portal on [ThrowTheSwitch.org](http://throwtheswitch.org)
1
+ CMock - Mock/stub generator for C
2
+ =================================
3
+
4
+ [![CMock Build Status](https://api.travis-ci.org/ThrowTheSwitch/CMock.png?branch=master)](https://travis-ci.org/ThrowTheSwitch/CMock)
5
+
6
+ Getting Started
7
+ ================
8
+
9
+ If you're using Ceedling, there is no need to install CMock. It will handle it for you.
10
+ For everyone else, the simplest way is to grab it off github. You can also download it
11
+ as a zip if you prefer. The Github method looks something like this:
12
+
13
+ > git clone --recursive https://github.com/throwtheswitch/cmock.git
14
+ > cd cmock
15
+ > bundle install # Ensures you have all RubyGems needed
16
+
17
+ If you plan to help with the development of CMock (or just want to verify that it can
18
+ perform its self tests on your system) then you can enter the test directory and then
19
+ ask it to test:
20
+
21
+ > cd test
22
+ > rake # Run all CMock self tests
23
+
24
+ API Documentation
25
+ =================
26
+
27
+ * Not sure what you're doing?
28
+ * [View docs/CMock_Summary.md](docs/CMock_Summary.md)
29
+ * Interested in our MIT-style license?
30
+ * [View docs/license.txt](docs/license.txt)
31
+ * Are there examples?
32
+ * They are all in [/examples](examples/)
33
+ * Any other resources to check out?
34
+ * Definitely! Check out our developer portal on [ThrowTheSwitch.org](http://throwtheswitch.org)
@@ -1,14 +1,12 @@
1
- # ==========================================
2
- # CMock Project - Automatic Mock Generation for C
3
- # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
4
- # [Released under MIT License. Please refer to license.txt for details]
5
- # ==========================================
6
-
7
- # Setup our load path:
8
- [
9
- 'lib',
10
- ].each do |dir|
11
- $LOAD_PATH.unshift( File.join( File.expand_path(File.dirname(__FILE__)) + '/../', dir) )
12
- end
13
-
14
-
1
+ # ==========================================
2
+ # CMock Project - Automatic Mock Generation for C
3
+ # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
4
+ # [Released under MIT License. Please refer to license.txt for details]
5
+ # ==========================================
6
+
7
+ # Setup our load path:
8
+ [
9
+ 'lib'
10
+ ].each do |dir|
11
+ $:.unshift(File.join(__dir__ + '/../', dir))
12
+ end
@@ -1,16 +1,16 @@
1
- # ==========================================
2
- # CMock Project - Automatic Mock Generation for C
3
- # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
4
- # [Released under MIT License. Please refer to license.txt for details]
5
- # ==========================================
6
-
7
- # Setup our load path:
8
- [
9
- './lib',
10
- './vendor/behaviors/lib',
11
- './vendor/hardmock/lib',
12
- './vendor/unity/auto/',
13
- './test/system/'
14
- ].each do |dir|
15
- $LOAD_PATH.unshift( File.join( File.expand_path(File.dirname(__FILE__) + "/../"), dir) )
16
- end
1
+ # ==========================================
2
+ # CMock Project - Automatic Mock Generation for C
3
+ # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
4
+ # [Released under MIT License. Please refer to license.txt for details]
5
+ # ==========================================
6
+
7
+ # Setup our load path:
8
+ [
9
+ './lib',
10
+ './vendor/behaviors/lib',
11
+ './vendor/hardmock/lib',
12
+ './vendor/unity/auto/',
13
+ './test/system/'
14
+ ].each do |dir|
15
+ $:.unshift(File.join(File.expand_path(File.dirname(__FILE__) + '/../'), dir))
16
+ end
@@ -1,696 +1,806 @@
1
- CMock: A Summary
2
- ================
3
-
4
- *[ThrowTheSwitch.org](http://throwtheswitch.org)*
5
-
6
- *This documentation is released under a Creative Commons 3.0 Attribution Share-Alike License*
7
-
8
-
9
- What Exactly Are We Talking About Here?
10
- ---------------------------------------
11
-
12
- CMock is a nice little tool which takes your header files and creates
13
- a Mock interface for it so that you can more easily unit test modules
14
- that touch other modules. For each function prototype in your
15
- header, like this one:
16
-
17
- int DoesSomething(int a, int b);
18
-
19
-
20
- ...you get an automatically generated DoesSomething function
21
- that you can link to instead of your real DoesSomething function.
22
- By using this Mocked version, you can then verify that it receives
23
- the data you want, and make it return whatever data you desire,
24
- make it throw errors when you want, and more... Create these for
25
- everything your latest real module touches, and you're suddenly
26
- in a position of power: You can control and verify every detail
27
- of your latest creation.
28
-
29
- To make that easier, CMock also gives you a bunch of functions
30
- like the ones below, so you can tell that generated DoesSomething
31
- function how to behave for each test:
32
-
33
- void DoesSomething_ExpectAndReturn(int a, int b, int toReturn);
34
- void DoesSomething_ExpectAndThrow(int a, int b, EXCEPTION_T error);
35
- void DoesSomething_StubWithCallback(CMOCK_DoesSomething_CALLBACK YourCallback);
36
- void DoesSomething_IgnoreAndReturn(int toReturn);
37
-
38
-
39
- You can pile a bunch of these back to back, and it remembers what
40
- you wanted to pass when, like so:
41
-
42
- test_CallsDoesSomething_ShouldDoJustThat(void)
43
- {
44
- DoesSomething_ExpectAndReturn(1,2,3);
45
- DoesSomething_ExpectAndReturn(4,5,6);
46
- DoesSomething_ExpectAndThrow(7,8, STATUS_ERROR_OOPS);
47
-
48
- CallsDoesSomething( );
49
- }
50
-
51
-
52
- This test will call CallsDoesSomething, which is the function
53
- we are testing. We are expecting that function to call DoesSomething
54
- three times. The first time, we check to make sure it's called
55
- as DoesSomething(1, 2) and we'll magically return a 3. The second
56
- time we check for DoesSomething(4, 5) and we'll return a 6. The
57
- third time we verify DoesSomething(7, 8) and we'll throw an error
58
- instead of returning anything. If CallsDoesSomething gets
59
- any of this wrong, it fails the test. It will fail if you didn't
60
- call DoesSomething enough, or too much, or with the wrong arguments,
61
- or in the wrong order.
62
-
63
- CMock is based on Unity, which it uses for all internal testing.
64
- It uses Ruby to do all the main work (versions 2.0.0 and above).
65
-
66
-
67
- Installing
68
- ==========
69
-
70
- The first thing you need to do to install CMock is to get yourself
71
- a copy of Ruby. If you're on linux or osx, you probably already
72
- have it. You can prove it by typing the following:
73
-
74
- ruby --version
75
-
76
-
77
- If it replied in a way that implies ignorance, then you're going to
78
- need to install it. You can go to [ruby-lang](https://ruby-lang.org)
79
- to get the latest version. You're also going to need to do that if it
80
- replied with a version that is older than 2.0.0. Go ahead. We'll wait.
81
-
82
- Once you have Ruby, you have three options:
83
-
84
- * Clone the latest [CMock repo on github](https://github.com/ThrowTheSwitch/CMock/)
85
- * Download the latest [CMock zip from github](https://github.com/ThrowTheSwitch/CMock/)
86
- * Install Ceedling (which has it built in!) through your commandline using `gem install ceedling`.
87
-
88
-
89
- Generated Mock Module Summary
90
- =============================
91
-
92
- In addition to the mocks themselves, CMock will generate the
93
- following functions for use in your tests. The expect functions
94
- are always generated. The other functions are only generated
95
- if those plugins are enabled:
96
-
97
-
98
- Expect:
99
- -------
100
-
101
- Your basic staple Expects which will be used for most of your day
102
- to day CMock work. By calling this, you are telling CMock that you
103
- expect that function to be called during your test. It also specifies
104
- which arguments you expect it to be called with, and what return
105
- value you want returned when that happens. You can call this function
106
- multiple times back to back in order to queue up multiple calls.
107
-
108
- * `void func(void)` => `void func_Expect(void)`
109
- * `void func(params)` => `void func_Expect(expected_params)`
110
- * `retval func(void)` => `void func_ExpectAndReturn(retval_to_return)`
111
- * `retval func(params)` => `void func_ExpectAndReturn(expected_params, retval_to_return)`
112
-
113
-
114
- ExpectAnyArgs:
115
- --------------
116
-
117
- This behaves just like the Expects calls, except that it doesn't really
118
- care what the arguments are that the mock gets called with. It still counts
119
- the number of times the mock is called and it still handles return values
120
- if there are some. Note that an ExpectAnyArgs call is not generated for
121
- functions that have no arguments, because it would act exactly like the existing
122
- Expect and ExpectAndReturn calls.
123
-
124
- * `void func(params)` => `void func_ExpectAnyArgs(void)`
125
- * `retval func(params)` => `void func_ExpectAnyArgsAndReturn(retval_to_return)`
126
-
127
-
128
- Array:
129
- ------
130
-
131
- An ExpectWithArray is another variant of Expect. Like expect, it cares about
132
- the number of times a mock is called, the arguments it is called with, and the
133
- values it is to return. This variant has another feature, though. For anything
134
- that resembles a pointer or array, it breaks the argument into TWO arguments.
135
- The first is the original pointer. The second specify the number of elements
136
- it is to verify of that array. If you specify 1, it'll check one object. If 2,
137
- it'll assume your pointer is pointing at the first of two elements in an array.
138
- If you specify zero elements, it will check just the pointer if
139
- `:smart` mode is configured or fail if `:compare_data` is set.
140
-
141
- * `void func(void)` => (nothing. In fact, an additional function is only generated if the params list contains pointers)
142
- * `void func(ptr * param, other)` => `void func_ExpectWithArray(ptr* param, int param_depth, other)`
143
- * `retval func(void)` => (nothing. In fact, an additional function is only generated if the params list contains pointers)
144
- * `retval func(other, ptr* param)` => `void func_ExpectWithArrayAndReturn(other, ptr* param, int param_depth, retval_to_return)`
145
-
146
-
147
- Ignore:
148
- -------
149
-
150
- Maybe you don't care about the number of times a particular function is called or
151
- the actual arguments it is called with. In that case, you want to use Ignore. Ignore
152
- only needs to be called once per test. It will then ignore any further calls to that
153
- particular mock. The IgnoreAndReturn works similarly, except that it has the added
154
- benefit of knowing what to return when that call happens. If the mock is called more
155
- times than IgnoreAndReturn was called, it will keep returning the last value without
156
- complaint. If it's called fewer times, it will also ignore that. You SAID you didn't
157
- care how many times it was called, right?
158
-
159
- * `void func(void)` => `void func_Ignore(void)`
160
- * `void func(params)` => `void func_Ignore(void)`
161
- * `retval func(void)` => `void func_IgnoreAndReturn(retval_to_return)`
162
- * `retval func(params)` => `void func_IgnoreAndReturn(retval_to_return)`
163
-
164
-
165
- Ignore Arg:
166
- ------------
167
-
168
- Maybe you overall want to use Expect and its similar variations, but you don't care
169
- what is passed to a particular argument. This is particularly useful when that argument
170
- is a pointer to a value that is supposed to be filled in by the function. You don't want
171
- to use ExpectAnyArgs, because you still care about the other arguments. Instead, after
172
- an Expect call is made, you can call this function. It tells CMock to ignore
173
- a particular argument for the rest of this test, for this mock function. You may call
174
- multiple instances of this to ignore multiple arguments after each expectation if
175
- desired.
176
-
177
- * `void func(params)` => `void func_IgnoreArg_paramName(void)`
178
-
179
-
180
- ReturnThruPtr:
181
- --------------
182
-
183
- Another option which operates on a particular argument of a function is the ReturnThruPtr
184
- plugin. For every argument that resembles a pointer or reference, CMock generates an
185
- instance of this function. Just as the AndReturn functions support injecting one or more
186
- return values into a queue, this function lets you specify one or more return values which
187
- are queued up and copied into the space being pointed at each time the mock is called.
188
-
189
- * `void func(param1)` => `void func_ReturnThruPtr_paramName(val_to_return)`
190
- * => `void func_ReturnArrayThruPtr_paramName(cal_to_return, len)`
191
- * => `void func_ReturnMemThruPtr_paramName(val_to_return, size)`
192
-
193
-
194
- Callback:
195
- ---------
196
-
197
- If all those other options don't work, and you really need to do something custom, you
198
- still have a choice. As soon as you stub a callback in a test, it will call the callback
199
- whenever the mock is encountered and return the retval returned from the callback (if any).
200
-
201
- * `void func(void)` => `void func_[AddCallback,Stub](CMOCK_func_CALLBACK callback)`
202
- where `CMOCK_func_CALLBACK` looks like: `void func(int NumCalls)`
203
- * `void func(params)` => `void func_[AddCallback,Stub](CMOCK_func_CALLBACK callback)`
204
- where `CMOCK_func_CALLBACK` looks like: `void func(params, int NumCalls)`
205
- * `retval func(void)` => `void func_[AddCallback,Stub](CMOCK_func_CALLBACK callback)`
206
- where `CMOCK_func_CALLBACK` looks like: `retval func(int NumCalls)`
207
- * `retval func(params)` => `void func_[AddCallback,Stub](CMOCK_func_CALLBACK callback)`
208
- where `CMOCK_func_CALLBACK` looks like: `retval func(params, int NumCalls)`
209
-
210
- You can choose from two options:
211
-
212
- * `func_AddCallback` tells the mock to check its arguments and calling
213
- order (based on any Expects you've set up) before calling the callback.
214
- * `func_Stub` tells the mock to skip all the normal checks and jump directly
215
- to the callback instead. In this case, you are replacing the normal mock calls
216
- with your own custom stub function.
217
-
218
- There is also an older name, `func_StubWithCallback`, which is just an alias
219
- for either `func_AddCallback` or `func_Stub` depending on setting of the
220
- `:callback_after_arg_check` toggle. This is deprecated and we recommend using
221
- the two options above.
222
-
223
-
224
- Cexception:
225
- -----------
226
-
227
- Finally, if you are using Cexception for error handling, you can use this to throw errors
228
- from inside mocks. Like Expects, it remembers which call was supposed to throw the error,
229
- and it still checks parameters first.
230
-
231
- * `void func(void)` => `void func_ExpectAndThrow(value_to_throw)`
232
- * `void func(params)` => `void func_ExpectAndThrow(expected_params, value_to_throw)`
233
- * `retval func(void)` => `void func_ExpectAndThrow(value_to_throw)`
234
- * `retval func(params)` => `void func_ExpectAndThrow(expected_params, value_to_throw)`
235
-
236
-
237
-
238
- Running CMock
239
- =============
240
-
241
- CMock is a Ruby script and class. You can therefore use it directly
242
- from the command line, or include it in your own scripts or rakefiles.
243
-
244
-
245
- Mocking from the Command Line
246
- -----------------------------
247
-
248
- After unpacking CMock, you will find cmock.rb in the 'lib' directory.
249
- This is the file that you want to run. It takes a list of header files
250
- to be mocked, as well as an optional yaml file for a more detailed
251
- configuration (see config options below).
252
-
253
- For example, this will create three mocks using the configuration
254
- specified in MyConfig.yml:
255
-
256
- ruby cmock.rb -oMyConfig.yml super.h duper.h awesome.h
257
-
258
- And this will create two mocks using the default configuration:
259
-
260
- ruby cmock.rb ../mocking/stuff/is/fun.h ../try/it/yourself.h
261
-
262
-
263
- Mocking From Scripts or Rake
264
- ----------------------------
265
-
266
- CMock can be used directly from your own scripts or from a rakefile.
267
- Start by including cmock.rb, then create an instance of CMock.
268
- When you create your instance, you may initialize it in one of
269
- three ways.
270
-
271
- You may specify nothing, allowing it to run with default settings:
272
-
273
- require 'cmock.rb'
274
- cmock = CMock.new
275
-
276
- You may specify a YAML file containing the configuration options
277
- you desire:
278
-
279
- cmock = CMock.new('../MyConfig.yml')
280
-
281
- You may specify the options explicitly:
282
-
283
- cmock = Cmock.new(:plugins => [:cexception, :ignore], :mock_path => 'my/mocks/')
284
-
285
-
286
- Config Options:
287
- ---------------
288
-
289
- The following configuration options can be specified in the
290
- yaml file or directly when instantiating.
291
-
292
- Passed as Ruby, they look like this:
293
-
294
- { :attributes => [“__funky”, “__intrinsic”], :when_ptr => :compare }
295
-
296
- Defined in the yaml file, they look more like this:
297
-
298
- :cmock:
299
- :attributes:
300
- - __funky
301
- - __intrinsic
302
- :when_ptr: :compare
303
-
304
- In all cases, you can just include the things that you want to override
305
- from the defaults. We've tried to specify what the defaults are below.
306
-
307
- * `:attributes`:
308
- These are attributes that CMock should ignore for you for testing
309
- purposes. Custom compiler extensions and externs are handy things to
310
- put here. If your compiler is choking on some extended syntax, this
311
- is often a good place to look.
312
-
313
- * defaults: ['__ramfunc', '__irq', '__fiq', 'register', 'extern']
314
- * **note:** this option will reinsert these attributes onto the mock's calls.
315
- If that isn't what you are looking for, check out :strippables.
316
-
317
- * `:c_calling_conventions`:
318
- Similarly, CMock may need to understand which C calling conventions
319
- might show up in your codebase. If it encounters something it doesn't
320
- recognize, it's not going to mock it. We have the most common covered,
321
- but there are many compilers out there, and therefore many other options.
322
-
323
- * defaults: ['__stdcall', '__cdecl', '__fastcall']
324
- * **note:** this option will reinsert these attributes onto the mock's calls.
325
- If that isn't what you are looking for, check out :strippables.
326
-
327
- * `:callback_after_arg_check`:
328
- Tell `:callback` plugin to do the normal argument checking **before** it
329
- calls the callback function by setting this to true. When false, the
330
- callback function is called **instead** of the argument verification.
331
-
332
- * default: false
333
-
334
- * `:callback_include_count`:
335
- Tell `:callback` plugin to include an extra parameter to specify the
336
- number of times the callback has been called. If set to false, the
337
- callback has the same interface as the mocked function. This can be
338
- handy when you're wanting to use callback as a stub.
339
-
340
- * default: true
341
-
342
- * `:cexception_include`:
343
- Tell `:cexception` plugin where to find CException.h... You only need to
344
- define this if it's not in your build path already... which it usually
345
- will be for the purpose of your builds.
346
-
347
- * default: *nil*
348
-
349
- * `:enforce_strict_ordering`:
350
- CMock always enforces the order that you call a particular function,
351
- so if you expect GrabNabber(int size) to be called three times, it
352
- will verify that the sizes are in the order you specified. You might
353
- *also* want to make sure that all different functions are called in a
354
- particular order. If so, set this to true.
355
-
356
- * default: false
357
-
358
- * `:framework`:
359
- Currently the only option is `:unity.` Eventually if we support other
360
- unity test frameworks (or if you write one for us), they'll get added
361
- here.
362
-
363
- : default: :unity
364
-
365
- * `:includes`:
366
- An array of additional include files which should be added to the
367
- mocks. Useful for global types and definitions used in your project.
368
- There are more specific versions if you care WHERE in the mock files
369
- the includes get placed. You can define any or all of these options.
370
-
371
- * `:includes`
372
- * `:includes_h_pre_orig_header`
373
- * `:includes_h_post_orig_header`
374
- * `:includes_c_pre_header`
375
- * `:includes_c_post_header`
376
- * default: nil #for all 5 options
377
-
378
- * `:memcmp_if_unknown`:
379
- C developers create a lot of types, either through typedef or preprocessor
380
- macros. CMock isn't going to automatically know what you were thinking all
381
- the time (though it tries its best). If it comes across a type it doesn't
382
- recognize, you have a choice on how you want it to handle it. It can either
383
- perform a raw memory comparison and report any differences, or it can fail
384
- with a meaningful message. Either way, this feature will only happen after
385
- all other mechanisms have failed (The thing encountered isn't a standard
386
- type. It isn't in the :treat_as list. It isn't in a custom unity_helper).
387
-
388
- * default: true
389
-
390
- * `:mock_path`:
391
- The directory where you would like the mock files generated to be
392
- placed.
393
-
394
- * default: mocks
395
-
396
- * `:mock_prefix`:
397
- The prefix to prepend to your mock files. For example, if it's “Mock”, a file
398
- “USART.h” will get a mock called “MockUSART.c”. This CAN be used with a suffix
399
- at the same time.
400
-
401
- * default: Mock
402
-
403
- * `:mock_suffix`:
404
- The suffix to append to your mock files. For example, it it's "_Mock", a file
405
- "USART.h" will get a mock called "USART_Mock.h". This CAN be used with a prefix
406
- at the same time.
407
-
408
- * default: ""
409
-
410
- * `:plugins`:
411
- An array of which plugins to enable. ':expect' is always active. Also
412
- available currently:
413
-
414
- * `:ignore`
415
- * `:ignore_arg`
416
- * `:expect_any_args`
417
- * `:array`
418
- * `:cexception`
419
- * `:callback`
420
- * `:return_thru_ptr`
421
-
422
- * `:strippables`:
423
- An array containing a list of items to remove from the header
424
- before deciding what should be mocked. This can be something simple
425
- like a compiler extension CMock wouldn't recognize, or could be a
426
- regex to reject certain function name patterns. This is a great way to
427
- get rid of compiler extensions when your test compiler doesn't support
428
- them. For example, use `:strippables: ['(?:functionName\s*\(+.*?\)+)']`
429
- to prevent a function `functionName` from being mocked. By default, it
430
- is ignoring all gcc attribute extensions.
431
-
432
- * default: ['(?:__attribute__\s*\(+.*?\)+)']
433
-
434
- * `:subdir`:
435
- This is a relative subdirectory for your mocks. Set this to e.g. "sys" in
436
- order to create a mock for `sys/types.h` in `(:mock_path)/sys/`.
437
-
438
- * default: ""
439
-
440
- * `:treat_as`:
441
- The `:treat_as` list is a shortcut for when you have created typedefs
442
- of standard types. Why create a custom unity helper for UINT16 when
443
- the unity function TEST_ASSERT_EQUAL_HEX16 will work just perfectly?
444
- Just add 'UINT16' => 'HEX16' to your list (actually, don't. We already
445
- did that one for you). Maybe you have a type that is a pointer to an
446
- array of unsigned characters? No problem, just add 'UINT8_T*' =>
447
- 'HEX8*'
448
-
449
- * NOTE: unlike the other options, your specifications MERGE with the
450
- default list. Therefore, if you want to override something, you must
451
- reassign it to something else (or to *nil* if you don't want it)
452
-
453
- * default:
454
- * 'int': 'INT'
455
- * 'char': 'INT8'
456
- * 'short': 'INT16'
457
- * 'long': 'INT'
458
- * 'int8': 'INT8'
459
- * 'int16': 'INT16'
460
- * 'int32': 'INT'
461
- * 'int8_t': 'INT8'
462
- * 'int16_t': 'INT16'
463
- * 'int32_t': 'INT'
464
- * 'INT8_T': 'INT8'
465
- * 'INT16_T': 'INT16'
466
- * 'INT32_T': 'INT'
467
- * 'bool': 'INT'
468
- * 'bool_t': 'INT'
469
- * 'BOOL': 'INT'
470
- * 'BOOL_T': 'INT'
471
- * 'unsigned int': 'HEX32'
472
- * 'unsigned long': 'HEX32'
473
- * 'uint32': 'HEX32'
474
- * 'uint32_t': 'HEX32'
475
- * 'UINT32': 'HEX32'
476
- * 'UINT32_T': 'HEX32'
477
- * 'void*': 'HEX8_ARRAY'
478
- * 'unsigned short': 'HEX16'
479
- * 'uint16': 'HEX16'
480
- * 'uint16_t': 'HEX16'
481
- * 'UINT16': 'HEX16'
482
- * 'UINT16_T': 'HEX16'
483
- * 'unsigned char': 'HEX8'
484
- * 'uint8': 'HEX8'
485
- * 'uint8_t': 'HEX8'
486
- * 'UINT8': 'HEX8'
487
- * 'UINT8_T': 'HEX8'
488
- * 'char*': 'STRING'
489
- * 'pCHAR': 'STRING'
490
- * 'cstring': 'STRING'
491
- * 'CSTRING': 'STRING'
492
- * 'float': 'FLOAT'
493
- * 'double': 'FLOAT'
494
-
495
- * `:treat_as_array`:
496
- A specialized sort of `:treat_as` to be used when you've created a
497
- typedef of an array type, such as `typedef int TenIntegers[10];`. This
498
- is a hash of typedef name to element type. For example:
499
-
500
- { "TenIntegers" => "int",
501
- "ArrayOfFloat" => "float" }
502
-
503
- Telling CMock about these typedefs allows it to be more intelligent
504
- about parameters of such types, so that you can use features like
505
- ExpectWithArray and ReturnArrayThruPtr with them.
506
-
507
- * `:treat_as_void`:
508
- We've seen "fun" legacy systems typedef 'void' with a custom type,
509
- like MY_VOID. Add any instances of those to this list to help CMock
510
- understand how to deal with your code.
511
-
512
- * default: []
513
-
514
- * `:treat_externs`:
515
- This specifies how you want CMock to handle functions that have been
516
- marked as extern in the header file. Should it mock them?
517
-
518
- * `:include` will mock externed functions
519
- * `:exclude` will ignore externed functions (default).
520
-
521
- * `:treat_inlines`:
522
- This specifies how you want CMock to handle functions that have been
523
- marked as inline in the header file. Should it mock them?
524
-
525
- * `:include` will mock inlined functions
526
- * `:exclude` will ignore inlined functions (default).
527
-
528
-
529
- * `:unity_helper_path`:
530
- If you have created a header with your own extensions to unity to
531
- handle your own types, you can set this argument to that path. CMock
532
- will then automagically pull in your helpers and use them. The only
533
- trick is that you make sure you follow the naming convention:
534
- `UNITY_TEST_ASSERT_EQUAL_YourType`. If it finds macros of the right
535
- shape that match that pattern, it'll use them.
536
-
537
- * default: []
538
-
539
- * `:verbosity`:
540
- How loud should CMock be?
541
-
542
- * 0 for errors only
543
- * 1 for errors and warnings
544
- * 2 for normal (default)
545
- * 3 for verbose
546
-
547
- * `:weak`:
548
- When set this to some value, the generated mocks are defined as weak
549
- symbols using the configured format. This allows them to be overridden
550
- in particular tests.
551
-
552
- * Set to '__attribute ((weak))' for weak mocks when using GCC.
553
- * Set to any non-empty string for weak mocks when using IAR.
554
- * default: ""
555
-
556
- * `:when_no_prototypes`:
557
- When you give CMock a header file and ask it to create a mock out of
558
- it, it usually contains function prototypes (otherwise what was the
559
- point?). You can control what happens when this isn't true. You can
560
- set this to `:warn,` `:ignore,` or `:error`
561
-
562
- * default: :warn
563
-
564
- * `:when_ptr`:
565
- You can customize how CMock deals with pointers (c strings result in
566
- string comparisons... we're talking about **other** pointers here). Your
567
- options are `:compare_ptr` to just verify the pointers are the same,
568
- `:compare_data` or `:smart` to verify that the data is the same.
569
- `:compare_data` and `:smart` behaviors will change slightly based on
570
- if you have the array plugin enabled. By default, they compare a
571
- single element of what is being pointed to. So if you have a pointer
572
- to a struct called ORGAN_T, it will compare one ORGAN_T (whatever that
573
- is).
574
-
575
- * default: :smart
576
-
577
- * `:array_size_type`:
578
- * `:array_size_name`:
579
- When the `:array` plugin is disabled, these options do nothing.
580
-
581
- When the `:array` plugin is enabled, these options allow CMock to recognize
582
- functions with parameters that might refer to an array, like the following,
583
- and treat them more intelligently:
584
-
585
- * `void GoBananas(Banana * bananas, int num_bananas)`
586
- * `int write_data(int fd, const uint8_t * data, uint32_t size)`
587
-
588
- To recognize functions like these, CMock looks for a parameter list
589
- containing a pointer (which could be an array) followed by something that
590
- could be an array size. "Something", by default, means an `int` or `size_t`
591
- parameter with a name containing "size" or "len".
592
-
593
- `:array_size_type` is a list of additional types (besides `int` and `size_t`)
594
- that could be used for an array size parameter. For example, to get CMock to
595
- recognize that `uint32_t size` is an array size, you'd need to say:
596
-
597
- cfg[:array_size_type] = ['uint32_t']
598
-
599
- `:array_size_name` is a regular expression used to match an array size
600
- parameter by name. By default, it's 'size|len'. To get CMock to recognize a
601
- name like `num_bananas`, you could tell it to also accept names containing
602
- 'num_' like this:
603
-
604
- cfg[:array_size_name] = 'size|len|num_'
605
-
606
- Parameters must match *both* `:array_size_type` and `:array_size_name` (and
607
- must come right after a pointer parameter) to be treated as an array size.
608
-
609
- Once you've told it how to recognize your arrays, CMock will give you _Expect
610
- calls that work more like _ExpectWithArray, and compare an array of objects
611
- rather than just a single object.
612
-
613
- For example, if you write the following, CMock will check that GoBananas is
614
- called and passed an array containing a green banana followed by a yellow
615
- banana:
616
-
617
- Banana b[2] = {GreenBanana, YellowBanana};
618
- GoBananas_Expect(b, 2);
619
-
620
- In other words, `GoBananas_Expect(b, 2)` now works just the same as:
621
-
622
- GoBananas_ExpectWithArray(b, 2, 2);
623
-
624
- * `:fail_on_unexpected_calls`:
625
- By default, CMock will fail a test if a mock is called without _Expect and _Ignore
626
- called first. While this forces test writers to be more explicit in their expectations,
627
- it can clutter tests with _Expect or _Ignore calls for functions which are not the focus
628
- of the test. While this is a good indicator that this module should be refactored, some
629
- users are not fans of the additional noise.
630
-
631
- Therefore, :fail_on_unexpected_calls can be set to false to force all mocks to start with
632
- the assumption that they are operating as _Ignore unless otherwise specified.
633
-
634
- * default: true
635
- * **note:**
636
- If this option is disabled, the mocked functions will return
637
- a default value (0) when called (and only if they have to return something of course).
638
-
639
-
640
- Compiled Options:
641
- -----------------
642
-
643
- A number of #defines also exist for customizing the cmock experience.
644
- Feel free to pass these into your compiler or whatever is most
645
- convenient. CMock will otherwise do its best to guess what you want
646
- based on other settings, particularly Unity's settings.
647
-
648
- * `CMOCK_MEM_STATIC` or `CMOCK_MEM_DYNAMIC`
649
- Define one of these to determine if you want to dynamically add
650
- memory during tests as required from the heap. If static, you
651
- can control the total footprint of Cmock. If dynamic, you will
652
- need to make sure you make some heap space available for Cmock.
653
-
654
- * `CMOCK_MEM_SIZE`
655
- In static mode this is the total amount of memory you are allocating
656
- to Cmock. In Dynamic mode this is the size of each chunk allocated
657
- at once (larger numbers grab more memory but require fewer mallocs).
658
-
659
- * `CMOCK_MEM_ALIGN`
660
- The way to align your data to. Not everything is as flexible as
661
- a PC, as most embedded designers know. This defaults to 2, meaning
662
- align to the closest 2^2 -> 4 bytes (32 bits). You can turn off alignment
663
- by setting 0, force alignment to the closest uint16 with 1 or even
664
- to the closest uint64 with 3.
665
-
666
- * `CMOCK_MEM_PTR_AS_INT`
667
- This is used internally to hold pointers... it needs to be big
668
- enough. On most processors a pointer is the same as an unsigned
669
- long... but maybe that's not true for yours?
670
-
671
- * `CMOCK_MEM_INDEX_TYPE`
672
- This needs to be something big enough to point anywhere in Cmock's
673
- memory space... usually it's an unsigned int.
674
-
675
- Other Tips
676
- ==========
677
-
678
- resetTest
679
- ---------
680
-
681
- While this isn't strictly a CMock feature, often users of CMock are using
682
- either the test runner generator scripts in Unity or using Ceedling. In
683
- either case, there is a handy function called `resetTest` which gets
684
- generated with your runner. You can then use this handy function in your tests
685
- themselves. Call it during a test to have CMock validate everything to this point
686
- and start over clean. This is really useful when wanting to test a function in
687
- an iterative manner with different arguments.
688
-
689
- Examples
690
- ========
691
-
692
- You can look in the [examples directory](/examples/) for a couple of examples on how
693
- you might tool CMock into your build process. You may also want to consider
694
- using [Ceedling](https://throwtheswitch.org/ceedling). Please note that
695
- these examples are meant to show how the build process works. They have
696
- failing tests ON PURPOSE to show what that would look like. Don't be alarmed. ;)
1
+ CMock: A Summary
2
+ ================
3
+
4
+ *[ThrowTheSwitch.org](http://throwtheswitch.org)*
5
+
6
+ *This documentation is released under a Creative Commons 3.0 Attribution Share-Alike License*
7
+
8
+
9
+ What Exactly Are We Talking About Here?
10
+ ---------------------------------------
11
+
12
+ CMock is a nice little tool which takes your header files and creates
13
+ a Mock interface for it so that you can more easily unit test modules
14
+ that touch other modules. For each function prototype in your
15
+ header, like this one:
16
+
17
+ int DoesSomething(int a, int b);
18
+
19
+
20
+ ...you get an automatically generated DoesSomething function
21
+ that you can link to instead of your real DoesSomething function.
22
+ By using this Mocked version, you can then verify that it receives
23
+ the data you want, and make it return whatever data you desire,
24
+ make it throw errors when you want, and more... Create these for
25
+ everything your latest real module touches, and you're suddenly
26
+ in a position of power: You can control and verify every detail
27
+ of your latest creation.
28
+
29
+ To make that easier, CMock also gives you a bunch of functions
30
+ like the ones below, so you can tell that generated DoesSomething
31
+ function how to behave for each test:
32
+
33
+ void DoesSomething_ExpectAndReturn(int a, int b, int toReturn);
34
+ void DoesSomething_ExpectAndThrow(int a, int b, EXCEPTION_T error);
35
+ void DoesSomething_StubWithCallback(CMOCK_DoesSomething_CALLBACK YourCallback);
36
+ void DoesSomething_IgnoreAndReturn(int toReturn);
37
+
38
+
39
+ You can pile a bunch of these back to back, and it remembers what
40
+ you wanted to pass when, like so:
41
+
42
+ test_CallsDoesSomething_ShouldDoJustThat(void)
43
+ {
44
+ DoesSomething_ExpectAndReturn(1,2,3);
45
+ DoesSomething_ExpectAndReturn(4,5,6);
46
+ DoesSomething_ExpectAndThrow(7,8, STATUS_ERROR_OOPS);
47
+
48
+ CallsDoesSomething( );
49
+ }
50
+
51
+
52
+ This test will call CallsDoesSomething, which is the function
53
+ we are testing. We are expecting that function to call DoesSomething
54
+ three times. The first time, we check to make sure it's called
55
+ as DoesSomething(1, 2) and we'll magically return a 3. The second
56
+ time we check for DoesSomething(4, 5) and we'll return a 6. The
57
+ third time we verify DoesSomething(7, 8) and we'll throw an error
58
+ instead of returning anything. If CallsDoesSomething gets
59
+ any of this wrong, it fails the test. It will fail if you didn't
60
+ call DoesSomething enough, or too much, or with the wrong arguments,
61
+ or in the wrong order.
62
+
63
+ CMock is based on Unity, which it uses for all internal testing.
64
+ It uses Ruby to do all the main work (versions 2.0.0 and above).
65
+
66
+
67
+ Installing
68
+ ==========
69
+
70
+ The first thing you need to do to install CMock is to get yourself
71
+ a copy of Ruby. If you're on linux or osx, you probably already
72
+ have it. You can prove it by typing the following:
73
+
74
+ ruby --version
75
+
76
+
77
+ If it replied in a way that implies ignorance, then you're going to
78
+ need to install it. You can go to [ruby-lang](https://ruby-lang.org)
79
+ to get the latest version. You're also going to need to do that if it
80
+ replied with a version that is older than 2.0.0. Go ahead. We'll wait.
81
+
82
+ Once you have Ruby, you have three options:
83
+
84
+ * Clone the latest [CMock repo on github](https://github.com/ThrowTheSwitch/CMock/)
85
+ * Download the latest [CMock zip from github](https://github.com/ThrowTheSwitch/CMock/)
86
+ * Install Ceedling (which has it built in!) through your commandline using `gem install ceedling`.
87
+
88
+
89
+ Generated Mock Module Summary
90
+ =============================
91
+
92
+ In addition to the mocks themselves, CMock will generate the
93
+ following functions for use in your tests. The expect functions
94
+ are always generated. The other functions are only generated
95
+ if those plugins are enabled:
96
+
97
+
98
+ Expect:
99
+ -------
100
+
101
+ Your basic staple Expects which will be used for most of your day
102
+ to day CMock work. By calling this, you are telling CMock that you
103
+ expect that function to be called during your test. It also specifies
104
+ which arguments you expect it to be called with, and what return
105
+ value you want returned when that happens. You can call this function
106
+ multiple times back to back in order to queue up multiple calls.
107
+
108
+ * `void func(void)` => `void func_Expect(void)`
109
+ * `void func(params)` => `void func_Expect(expected_params)`
110
+ * `retval func(void)` => `void func_ExpectAndReturn(retval_to_return)`
111
+ * `retval func(params)` => `void func_ExpectAndReturn(expected_params, retval_to_return)`
112
+
113
+
114
+ ExpectAnyArgs:
115
+ --------------
116
+
117
+ This behaves just like the Expects calls, except that it doesn't really
118
+ care what the arguments are that the mock gets called with. It still counts
119
+ the number of times the mock is called and it still handles return values
120
+ if there are some. Note that an ExpectAnyArgs call is not generated for
121
+ functions that have no arguments, because it would act exactly like the existing
122
+ Expect and ExpectAndReturn calls.
123
+
124
+ * `void func(params)` => `void func_ExpectAnyArgs(void)`
125
+ * `retval func(params)` => `void func_ExpectAnyArgsAndReturn(retval_to_return)`
126
+
127
+
128
+ Array:
129
+ ------
130
+
131
+ An ExpectWithArray is another variant of Expect. Like expect, it cares about
132
+ the number of times a mock is called, the arguments it is called with, and the
133
+ values it is to return. This variant has another feature, though. For anything
134
+ that resembles a pointer or array, it breaks the argument into TWO arguments.
135
+ The first is the original pointer. The second specify the number of elements
136
+ it is to verify of that array. If you specify 1, it'll check one object. If 2,
137
+ it'll assume your pointer is pointing at the first of two elements in an array.
138
+ If you specify zero elements, it will check just the pointer if
139
+ `:smart` mode is configured or fail if `:compare_data` is set.
140
+
141
+ * `void func(void)` => (nothing. In fact, an additional function is only generated if the params list contains pointers)
142
+ * `void func(ptr * param, other)` => `void func_ExpectWithArray(ptr* param, int param_depth, other)`
143
+ * `retval func(void)` => (nothing. In fact, an additional function is only generated if the params list contains pointers)
144
+ * `retval func(other, ptr* param)` => `void func_ExpectWithArrayAndReturn(other, ptr* param, int param_depth, retval_to_return)`
145
+
146
+
147
+ Ignore:
148
+ -------
149
+
150
+ Maybe you don't care about the number of times a particular function is called or
151
+ the actual arguments it is called with. In that case, you want to use Ignore. Ignore
152
+ only needs to be called once per test. It will then ignore any further calls to that
153
+ particular mock. The IgnoreAndReturn works similarly, except that it has the added
154
+ benefit of knowing what to return when that call happens. If the mock is called more
155
+ times than IgnoreAndReturn was called, it will keep returning the last value without
156
+ complaint. If it's called fewer times, it will also ignore that. You SAID you didn't
157
+ care how many times it was called, right?
158
+
159
+ * `void func(void)` => `void func_Ignore(void)`
160
+ * `void func(params)` => `void func_Ignore(void)`
161
+ * `retval func(void)` => `void func_IgnoreAndReturn(retval_to_return)`
162
+ * `retval func(params)` => `void func_IgnoreAndReturn(retval_to_return)`
163
+
164
+ StopIgnore:
165
+ -------
166
+
167
+ Maybe you want to ignore a particular function for part of a test but dont want to
168
+ ignore it later on. In that case, you want to use StopIgnore which will cancel the
169
+ previously called Ignore or IgnoreAndReturn requiring you to Expect or otherwise
170
+ handle the call to a function.
171
+
172
+ * `void func(void)` => `void func_StopIgnore(void)`
173
+ * `void func(params)` => `void func_StopIgnore(void)`
174
+ * `retval func(void)` => `void func_StopIgnore(void)`
175
+ * `retval func(params)` => `void func_StopIgnore(void)`
176
+
177
+ Ignore Arg:
178
+ ------------
179
+
180
+ Maybe you overall want to use Expect and its similar variations, but you don't care
181
+ what is passed to a particular argument. This is particularly useful when that argument
182
+ is a pointer to a value that is supposed to be filled in by the function. You don't want
183
+ to use ExpectAnyArgs, because you still care about the other arguments. Instead, after
184
+ an Expect call is made, you can call this function. It tells CMock to ignore
185
+ a particular argument for the rest of this test, for this mock function. You may call
186
+ multiple instances of this to ignore multiple arguments after each expectation if
187
+ desired.
188
+
189
+ * `void func(params)` => `void func_IgnoreArg_paramName(void)`
190
+
191
+
192
+ ReturnThruPtr:
193
+ --------------
194
+
195
+ Another option which operates on a particular argument of a function is the ReturnThruPtr
196
+ plugin. For every argument that resembles a pointer or reference, CMock generates an
197
+ instance of this function. Just as the AndReturn functions support injecting one or more
198
+ return values into a queue, this function lets you specify one or more return values which
199
+ are queued up and copied into the space being pointed at each time the mock is called.
200
+
201
+ * `void func(param1)` => `void func_ReturnThruPtr_paramName(val_to_return)`
202
+ * => `void func_ReturnArrayThruPtr_paramName(cal_to_return, len)`
203
+ * => `void func_ReturnMemThruPtr_paramName(val_to_return, size)`
204
+
205
+
206
+ Callback:
207
+ ---------
208
+
209
+ If all those other options don't work, and you really need to do something custom, you
210
+ still have a choice. As soon as you stub a callback in a test, it will call the callback
211
+ whenever the mock is encountered and return the retval returned from the callback (if any).
212
+
213
+ * `void func(void)` => `void func_[AddCallback,Stub](CMOCK_func_CALLBACK callback)`
214
+ where `CMOCK_func_CALLBACK` looks like: `void func(int NumCalls)`
215
+ * `void func(params)` => `void func_[AddCallback,Stub](CMOCK_func_CALLBACK callback)`
216
+ where `CMOCK_func_CALLBACK` looks like: `void func(params, int NumCalls)`
217
+ * `retval func(void)` => `void func_[AddCallback,Stub](CMOCK_func_CALLBACK callback)`
218
+ where `CMOCK_func_CALLBACK` looks like: `retval func(int NumCalls)`
219
+ * `retval func(params)` => `void func_[AddCallback,Stub](CMOCK_func_CALLBACK callback)`
220
+ where `CMOCK_func_CALLBACK` looks like: `retval func(params, int NumCalls)`
221
+
222
+ You can choose from two options:
223
+
224
+ * `func_AddCallback` tells the mock to check its arguments and calling
225
+ order (based on any Expects you've set up) before calling the callback.
226
+ * `func_Stub` tells the mock to skip all the normal checks and jump directly
227
+ to the callback instead. In this case, you are replacing the normal mock calls
228
+ with your own custom stub function.
229
+
230
+ There is also an older name, `func_StubWithCallback`, which is just an alias
231
+ for either `func_AddCallback` or `func_Stub` depending on setting of the
232
+ `:callback_after_arg_check` toggle. This is deprecated and we recommend using
233
+ the two options above.
234
+
235
+
236
+ Cexception:
237
+ -----------
238
+
239
+ Finally, if you are using Cexception for error handling, you can use this to throw errors
240
+ from inside mocks. Like Expects, it remembers which call was supposed to throw the error,
241
+ and it still checks parameters first.
242
+
243
+ * `void func(void)` => `void func_ExpectAndThrow(value_to_throw)`
244
+ * `void func(params)` => `void func_ExpectAndThrow(expected_params, value_to_throw)`
245
+ * `retval func(void)` => `void func_ExpectAndThrow(value_to_throw)`
246
+ * `retval func(params)` => `void func_ExpectAndThrow(expected_params, value_to_throw)`
247
+
248
+
249
+
250
+ Running CMock
251
+ =============
252
+
253
+ CMock is a Ruby script and class. You can therefore use it directly
254
+ from the command line, or include it in your own scripts or rakefiles.
255
+
256
+
257
+ Mocking from the Command Line
258
+ -----------------------------
259
+
260
+ After unpacking CMock, you will find cmock.rb in the 'lib' directory.
261
+ This is the file that you want to run. It takes a list of header files
262
+ to be mocked, as well as an optional yaml file for a more detailed
263
+ configuration (see config options below).
264
+
265
+ For example, this will create three mocks using the configuration
266
+ specified in MyConfig.yml:
267
+
268
+ ruby cmock.rb -oMyConfig.yml super.h duper.h awesome.h
269
+
270
+ And this will create two mocks using the default configuration:
271
+
272
+ ruby cmock.rb ../mocking/stuff/is/fun.h ../try/it/yourself.h
273
+
274
+
275
+ Mocking From Scripts or Rake
276
+ ----------------------------
277
+
278
+ CMock can be used directly from your own scripts or from a rakefile.
279
+ Start by including cmock.rb, then create an instance of CMock.
280
+ When you create your instance, you may initialize it in one of
281
+ three ways.
282
+
283
+ You may specify nothing, allowing it to run with default settings:
284
+
285
+ require 'cmock.rb'
286
+ cmock = CMock.new
287
+
288
+ You may specify a YAML file containing the configuration options
289
+ you desire:
290
+
291
+ cmock = CMock.new('../MyConfig.yml')
292
+
293
+ You may specify the options explicitly:
294
+
295
+ cmock = Cmock.new(:plugins => [:cexception, :ignore], :mock_path => 'my/mocks/')
296
+
297
+ Creating Skeletons:
298
+ -------------------
299
+
300
+ Not only is CMock able to generate mock files from a header file, but it is also able
301
+ to generate (and update) skeleton C files from headers. It does this by creating a
302
+ (mostly) empty implementation for every function that is declared in the header. If you later
303
+ add to that header list, just run this feature again and it will add prototypes for the missing
304
+ functions!
305
+
306
+ Like the normal usecase for CMock, this feature can be used from the command line
307
+ or from within its ruby API. For example, from the command line, add `--skeleton` to
308
+ generate a skeleton instead:
309
+
310
+ ```
311
+ ruby cmock.rb --skeleton ../create/c/for/this.h
312
+ ```
313
+
314
+ Config Options:
315
+ ---------------
316
+
317
+ The following configuration options can be specified in the
318
+ yaml file or directly when instantiating.
319
+
320
+ Passed as Ruby, they look like this:
321
+
322
+ { :attributes => [“__funky”, “__intrinsic”], :when_ptr => :compare }
323
+
324
+ Defined in the yaml file, they look more like this:
325
+
326
+ :cmock:
327
+ :attributes:
328
+ - __funky
329
+ - __intrinsic
330
+ :when_ptr: :compare
331
+
332
+ In all cases, you can just include the things that you want to override
333
+ from the defaults. We've tried to specify what the defaults are below.
334
+
335
+ * `:attributes`:
336
+ These are attributes that CMock should ignore for you for testing
337
+ purposes. Custom compiler extensions and externs are handy things to
338
+ put here. If your compiler is choking on some extended syntax, this
339
+ is often a good place to look.
340
+
341
+ * defaults: ['__ramfunc', '__irq', '__fiq', 'register', 'extern']
342
+ * **note:** this option will reinsert these attributes onto the mock's calls.
343
+ If that isn't what you are looking for, check out :strippables.
344
+
345
+ * `:c_calling_conventions`:
346
+ Similarly, CMock may need to understand which C calling conventions
347
+ might show up in your codebase. If it encounters something it doesn't
348
+ recognize, it's not going to mock it. We have the most common covered,
349
+ but there are many compilers out there, and therefore many other options.
350
+
351
+ * defaults: ['__stdcall', '__cdecl', '__fastcall']
352
+ * **note:** this option will reinsert these attributes onto the mock's calls.
353
+ If that isn't what you are looking for, check out :strippables.
354
+
355
+ * `:callback_after_arg_check`:
356
+ Tell `:callback` plugin to do the normal argument checking **before** it
357
+ calls the callback function by setting this to true. When false, the
358
+ callback function is called **instead** of the argument verification.
359
+
360
+ * default: false
361
+
362
+ * `:callback_include_count`:
363
+ Tell `:callback` plugin to include an extra parameter to specify the
364
+ number of times the callback has been called. If set to false, the
365
+ callback has the same interface as the mocked function. This can be
366
+ handy when you're wanting to use callback as a stub.
367
+
368
+ * default: true
369
+
370
+ * `:cexception_include`:
371
+ Tell `:cexception` plugin where to find CException.h... You only need to
372
+ define this if it's not in your build path already... which it usually
373
+ will be for the purpose of your builds.
374
+
375
+ * default: *nil*
376
+
377
+ * `:enforce_strict_ordering`:
378
+ CMock always enforces the order that you call a particular function,
379
+ so if you expect GrabNabber(int size) to be called three times, it
380
+ will verify that the sizes are in the order you specified. You might
381
+ *also* want to make sure that all different functions are called in a
382
+ particular order. If so, set this to true.
383
+
384
+ * default: false
385
+
386
+ * `:framework`:
387
+ Currently the only option is `:unity.` Eventually if we support other
388
+ unity test frameworks (or if you write one for us), they'll get added
389
+ here.
390
+
391
+ : default: :unity
392
+
393
+ * `:includes`:
394
+ An array of additional include files which should be added to the
395
+ mocks. Useful for global types and definitions used in your project.
396
+ There are more specific versions if you care WHERE in the mock files
397
+ the includes get placed. You can define any or all of these options.
398
+
399
+ * `:includes`
400
+ * `:includes_h_pre_orig_header`
401
+ * `:includes_h_post_orig_header`
402
+ * `:includes_c_pre_header`
403
+ * `:includes_c_post_header`
404
+ * default: nil #for all 5 options
405
+
406
+ * `:memcmp_if_unknown`:
407
+ C developers create a lot of types, either through typedef or preprocessor
408
+ macros. CMock isn't going to automatically know what you were thinking all
409
+ the time (though it tries its best). If it comes across a type it doesn't
410
+ recognize, you have a choice on how you want it to handle it. It can either
411
+ perform a raw memory comparison and report any differences, or it can fail
412
+ with a meaningful message. Either way, this feature will only happen after
413
+ all other mechanisms have failed (The thing encountered isn't a standard
414
+ type. It isn't in the :treat_as list. It isn't in a custom unity_helper).
415
+
416
+ * default: true
417
+
418
+ * `:mock_path`:
419
+ The directory where you would like the mock files generated to be
420
+ placed.
421
+
422
+ * default: mocks
423
+
424
+ * `:mock_prefix`:
425
+ The prefix to prepend to your mock files. For example, if it's `Mock`, a file
426
+ “USART.h” will get a mock called “MockUSART.c”. This CAN be used with a suffix
427
+ at the same time.
428
+
429
+ * default: Mock
430
+
431
+ * `:mock_suffix`:
432
+ The suffix to append to your mock files. For example, it it's `_Mock`, a file
433
+ "USART.h" will get a mock called "USART_Mock.h". This CAN be used with a prefix
434
+ at the same time.
435
+
436
+ * default: ""
437
+
438
+ * `:plugins`:
439
+ An array of which plugins to enable. ':expect' is always active. Also
440
+ available currently:
441
+
442
+ * `:ignore`
443
+ * `:ignore_arg`
444
+ * `:expect_any_args`
445
+ * `:array`
446
+ * `:cexception`
447
+ * `:callback`
448
+ * `:return_thru_ptr`
449
+
450
+ * `:strippables`:
451
+ An array containing a list of items to remove from the header
452
+ before deciding what should be mocked. This can be something simple
453
+ like a compiler extension CMock wouldn't recognize, or could be a
454
+ regex to reject certain function name patterns. This is a great way to
455
+ get rid of compiler extensions when your test compiler doesn't support
456
+ them. For example, use `:strippables: ['(?:functionName\s*\(+.*?\)+)']`
457
+ to prevent a function `functionName` from being mocked. By default, it
458
+ is ignoring all gcc attribute extensions.
459
+
460
+ * default: ['(?:__attribute__\s*\(+.*?\)+)']
461
+
462
+ * `:subdir`:
463
+ This is a relative subdirectory for your mocks. Set this to e.g. "sys" in
464
+ order to create a mock for `sys/types.h` in `(:mock_path)/sys/`.
465
+
466
+ * default: ""
467
+
468
+ * `:treat_as`:
469
+ The `:treat_as` list is a shortcut for when you have created typedefs
470
+ of standard types. Why create a custom unity helper for UINT16 when
471
+ the unity function TEST_ASSERT_EQUAL_HEX16 will work just perfectly?
472
+ Just add 'UINT16' => 'HEX16' to your list (actually, don't. We already
473
+ did that one for you). Maybe you have a type that is a pointer to an
474
+ array of unsigned characters? No problem, just add 'UINT8_T*' =>
475
+ 'HEX8*'
476
+
477
+ * NOTE: unlike the other options, your specifications MERGE with the
478
+ default list. Therefore, if you want to override something, you must
479
+ reassign it to something else (or to *nil* if you don't want it)
480
+
481
+ * default:
482
+ * 'int': 'INT'
483
+ * 'char': 'INT8'
484
+ * 'short': 'INT16'
485
+ * 'long': 'INT'
486
+ * 'int8': 'INT8'
487
+ * 'int16': 'INT16'
488
+ * 'int32': 'INT'
489
+ * 'int8_t': 'INT8'
490
+ * 'int16_t': 'INT16'
491
+ * 'int32_t': 'INT'
492
+ * 'INT8_T': 'INT8'
493
+ * 'INT16_T': 'INT16'
494
+ * 'INT32_T': 'INT'
495
+ * 'bool': 'INT'
496
+ * 'bool_t': 'INT'
497
+ * 'BOOL': 'INT'
498
+ * 'BOOL_T': 'INT'
499
+ * 'unsigned int': 'HEX32'
500
+ * 'unsigned long': 'HEX32'
501
+ * 'uint32': 'HEX32'
502
+ * 'uint32_t': 'HEX32'
503
+ * 'UINT32': 'HEX32'
504
+ * 'UINT32_T': 'HEX32'
505
+ * 'void*': 'HEX8_ARRAY'
506
+ * 'unsigned short': 'HEX16'
507
+ * 'uint16': 'HEX16'
508
+ * 'uint16_t': 'HEX16'
509
+ * 'UINT16': 'HEX16'
510
+ * 'UINT16_T': 'HEX16'
511
+ * 'unsigned char': 'HEX8'
512
+ * 'uint8': 'HEX8'
513
+ * 'uint8_t': 'HEX8'
514
+ * 'UINT8': 'HEX8'
515
+ * 'UINT8_T': 'HEX8'
516
+ * 'char*': 'STRING'
517
+ * 'pCHAR': 'STRING'
518
+ * 'cstring': 'STRING'
519
+ * 'CSTRING': 'STRING'
520
+ * 'float': 'FLOAT'
521
+ * 'double': 'FLOAT'
522
+
523
+ * `:treat_as_array`:
524
+ A specialized sort of `:treat_as` to be used when you've created a
525
+ typedef of an array type, such as `typedef int TenIntegers[10];`. This
526
+ is a hash of typedef name to element type. For example:
527
+
528
+ { "TenIntegers" => "int",
529
+ "ArrayOfFloat" => "float" }
530
+
531
+ Telling CMock about these typedefs allows it to be more intelligent
532
+ about parameters of such types, so that you can use features like
533
+ ExpectWithArray and ReturnArrayThruPtr with them.
534
+
535
+ * `:treat_as_void`:
536
+ We've seen "fun" legacy systems typedef 'void' with a custom type,
537
+ like MY_VOID. Add any instances of those to this list to help CMock
538
+ understand how to deal with your code.
539
+
540
+ * default: []
541
+
542
+ * `:treat_externs`:
543
+ This specifies how you want CMock to handle functions that have been
544
+ marked as extern in the header file. Should it mock them?
545
+
546
+ * `:include` will mock externed functions
547
+ * `:exclude` will ignore externed functions (default).
548
+
549
+ * `:treat_inlines`:
550
+ This specifies how you want CMock to handle functions that have been
551
+ marked as inline in the header file. Should it mock them?
552
+
553
+ * `:include` will mock inlined functions
554
+ * `:exclude` will ignore inlined functions (default).
555
+
556
+ CMock will look for the following default patterns (simplified from the actual regex):
557
+ - "static inline"
558
+ - "inline static"
559
+ - "inline"
560
+ - "static"
561
+ You can override these patterns, check out :inline_function_patterns.
562
+
563
+ Enabling this feature does require a change in the build system that
564
+ is using CMock. To understand why, we need to give some more info
565
+ on how we are handling inline functions internally.
566
+ Let's say we want to mock a header called example.h. example.h
567
+ contains inline functions, we cannot include this header in the
568
+ mocks or test code if we want to mock the inline functions simply
569
+ because the inline functions contain an implementation that we want
570
+ to override in our mocks!
571
+ So, to circumvent this, we generate a new header, also named
572
+ example.h, in the same directory as mock_example.h/c . This newly
573
+ generated header should/is exactly the same as the original header,
574
+ only difference is the inline functions are transformed to 'normal'
575
+ functions declarations. Placing the new header in the same
576
+ directory as mock_example.h/c ensures that they will include the new
577
+ header and not the old one.
578
+ However, CMock has no control in how the build system is configured
579
+ and which include paths the test code is compiled with. In order
580
+ for the test code to also see the newly generated header ,and not
581
+ the old header with inline functions, the build system has to add
582
+ the mock folder to the include paths.
583
+ Furthermore, we need to keep the order of include paths in mind. We
584
+ have to set the mock folder before the other includes to avoid the
585
+ test code including the original header instead of the newly
586
+ generated header (without inline functions).
587
+
588
+ * `:unity_helper_path`:
589
+ If you have created a header with your own extensions to unity to
590
+ handle your own types, you can set this argument to that path. CMock
591
+ will then automagically pull in your helpers and use them. The only
592
+ trick is that you make sure you follow the naming convention:
593
+ `UNITY_TEST_ASSERT_EQUAL_YourType`. If it finds macros of the right
594
+ shape that match that pattern, it'll use them.
595
+
596
+ * default: []
597
+
598
+ * `:verbosity`:
599
+ How loud should CMock be?
600
+
601
+ * 0 for errors only
602
+ * 1 for errors and warnings
603
+ * 2 for normal (default)
604
+ * 3 for verbose
605
+
606
+ * `:weak`:
607
+ When set this to some value, the generated mocks are defined as weak
608
+ symbols using the configured format. This allows them to be overridden
609
+ in particular tests.
610
+
611
+ * Set to '__attribute ((weak))' for weak mocks when using GCC.
612
+ * Set to any non-empty string for weak mocks when using IAR.
613
+ * default: ""
614
+
615
+ * `:when_no_prototypes`:
616
+ When you give CMock a header file and ask it to create a mock out of
617
+ it, it usually contains function prototypes (otherwise what was the
618
+ point?). You can control what happens when this isn't true. You can
619
+ set this to `:warn,` `:ignore,` or `:error`
620
+
621
+ * default: :warn
622
+
623
+ * `:when_ptr`:
624
+ You can customize how CMock deals with pointers (c strings result in
625
+ string comparisons... we're talking about **other** pointers here). Your
626
+ options are `:compare_ptr` to just verify the pointers are the same,
627
+ `:compare_data` or `:smart` to verify that the data is the same.
628
+ `:compare_data` and `:smart` behaviors will change slightly based on
629
+ if you have the array plugin enabled. By default, they compare a
630
+ single element of what is being pointed to. So if you have a pointer
631
+ to a struct called ORGAN_T, it will compare one ORGAN_T (whatever that
632
+ is).
633
+
634
+ * default: :smart
635
+
636
+ * `:array_size_type`:
637
+ * `:array_size_name`:
638
+ When the `:array` plugin is disabled, these options do nothing.
639
+
640
+ When the `:array` plugin is enabled, these options allow CMock to recognize
641
+ functions with parameters that might refer to an array, like the following,
642
+ and treat them more intelligently:
643
+
644
+ * `void GoBananas(Banana * bananas, int num_bananas)`
645
+ * `int write_data(int fd, const uint8_t * data, uint32_t size)`
646
+
647
+ To recognize functions like these, CMock looks for a parameter list
648
+ containing a pointer (which could be an array) followed by something that
649
+ could be an array size. "Something", by default, means an `int` or `size_t`
650
+ parameter with a name containing "size" or "len".
651
+
652
+ `:array_size_type` is a list of additional types (besides `int` and `size_t`)
653
+ that could be used for an array size parameter. For example, to get CMock to
654
+ recognize that `uint32_t size` is an array size, you'd need to say:
655
+
656
+ cfg[:array_size_type] = ['uint32_t']
657
+
658
+ `:array_size_name` is a regular expression used to match an array size
659
+ parameter by name. By default, it's 'size|len'. To get CMock to recognize a
660
+ name like `num_bananas`, you could tell it to also accept names containing
661
+ 'num_' like this:
662
+
663
+ cfg[:array_size_name] = 'size|len|num_'
664
+
665
+ Parameters must match *both* `:array_size_type` and `:array_size_name` (and
666
+ must come right after a pointer parameter) to be treated as an array size.
667
+
668
+ Once you've told it how to recognize your arrays, CMock will give you `_Expect`
669
+ calls that work more like `_ExpectWithArray`, and compare an array of objects
670
+ rather than just a single object.
671
+
672
+ For example, if you write the following, CMock will check that GoBananas is
673
+ called and passed an array containing a green banana followed by a yellow
674
+ banana:
675
+
676
+ Banana b[2] = {GreenBanana, YellowBanana};
677
+ GoBananas_Expect(b, 2);
678
+
679
+ In other words, `GoBananas_Expect(b, 2)` now works just the same as:
680
+
681
+ GoBananas_ExpectWithArray(b, 2, 2);
682
+
683
+ * `:fail_on_unexpected_calls`:
684
+ By default, CMock will fail a test if a mock is called without `_Expect` and `_Ignore`
685
+ called first. While this forces test writers to be more explicit in their expectations,
686
+ it can clutter tests with `_Expect` or `_Ignore` calls for functions which are not the focus
687
+ of the test. While this is a good indicator that this module should be refactored, some
688
+ users are not fans of the additional noise.
689
+
690
+ Therefore, :fail_on_unexpected_calls can be set to false to force all mocks to start with
691
+ the assumption that they are operating as `_Ignore` unless otherwise specified.
692
+
693
+ * default: true
694
+ * **note:**
695
+ If this option is disabled, the mocked functions will return
696
+ a default value (0) when called (and only if they have to return something of course).
697
+
698
+ * `:inline_function_patterns`:
699
+ An array containing a list of strings to detect inline functions.
700
+ This option is only taken into account if you enable :treat_inlines.
701
+ These strings are interpreted as regex patterns so be sure to escape
702
+ certain characters. For example, use `:inline_function_patterns: ['static inline __attribute__ \(\(always_inline\)\)']`
703
+ to recognize `static inline __attribute__ ((always_inline)) int my_func(void)`
704
+ as an inline function.
705
+ The default patterns are are:
706
+
707
+ * default: ['(static\s+inline|inline\s+static)\s*', '(\bstatic\b|\binline\b)\s*']
708
+ * **note:**
709
+ The order of patterns is important here!
710
+ We go from specific patterns ('static inline') to general patterns ('inline'),
711
+ otherwise we would miss functions that use 'static inline' iso 'inline'.
712
+
713
+
714
+ Compiled Options:
715
+ -----------------
716
+
717
+ A number of #defines also exist for customizing the cmock experience.
718
+ Feel free to pass these into your compiler or whatever is most
719
+ convenient. CMock will otherwise do its best to guess what you want
720
+ based on other settings, particularly Unity's settings.
721
+
722
+ * `CMOCK_MEM_STATIC` or `CMOCK_MEM_DYNAMIC`
723
+ Define one of these to determine if you want to dynamically add
724
+ memory during tests as required from the heap. If static, you
725
+ can control the total footprint of Cmock. If dynamic, you will
726
+ need to make sure you make some heap space available for Cmock.
727
+
728
+ * `CMOCK_MEM_SIZE`
729
+ In static mode this is the total amount of memory you are allocating
730
+ to Cmock. In Dynamic mode this is the size of each chunk allocated
731
+ at once (larger numbers grab more memory but require fewer mallocs).
732
+
733
+ * `CMOCK_MEM_ALIGN`
734
+ The way to align your data to. Not everything is as flexible as
735
+ a PC, as most embedded designers know. This defaults to 2, meaning
736
+ align to the closest 2^2 -> 4 bytes (32 bits). You can turn off alignment
737
+ by setting 0, force alignment to the closest uint16 with 1 or even
738
+ to the closest uint64 with 3.
739
+
740
+ * `CMOCK_MEM_PTR_AS_INT`
741
+ This is used internally to hold pointers... it needs to be big
742
+ enough. On most processors a pointer is the same as an unsigned
743
+ long... but maybe that's not true for yours?
744
+
745
+ * `CMOCK_MEM_INDEX_TYPE`
746
+ This needs to be something big enough to point anywhere in Cmock's
747
+ memory space... usually it's a size_t.
748
+
749
+ Other Tips
750
+ ==========
751
+
752
+ resetTest
753
+ ---------
754
+
755
+ While this isn't strictly a CMock feature, often users of CMock are using
756
+ either the test runner generator scripts in Unity or using Ceedling. In
757
+ either case, there is a handy function called `resetTest` which gets
758
+ generated with your runner. You can then use this handy function in your tests
759
+ themselves. Call it during a test to have CMock validate everything to this point
760
+ and start over clean. This is really useful when wanting to test a function in
761
+ an iterative manner with different arguments.
762
+
763
+ C++ Support
764
+ ---------
765
+ C++ unit test/mocking frameworks often use a completely different approach (vs.
766
+ CMock) that relies on overloading virtual class members and does not support
767
+ directly mocking static class member methods or free functions (i.e., functions
768
+ in plain C). One workaround is to wrap the non-virtual functions in an object
769
+ that exposes them as virtual methods and modify your code to inject mocks at
770
+ run-time... but there is another way!
771
+
772
+ Simply use CMock to mock the static member methods and a C++ mocking framework
773
+ to handle the virtual methods. (Yes, you can mix mocks from CMock and a C++
774
+ mocking framework together in the same test!)
775
+
776
+ Keep in mind that since C++ mocking frameworks often link the real object to the
777
+ unit test too, we need to resolve multiple definition errors with something like
778
+ the following in the source of the real implementation for any functions that
779
+ CMock mocks:
780
+
781
+ #if defined(TEST)
782
+ __attribute__((weak))
783
+ #endif
784
+
785
+ To address potential issues with re-using the same function name in different
786
+ namespaces/classes, the generated function names include the namespace(s) and
787
+ class. For example:
788
+
789
+ namespace MyNamespace {
790
+ class MyClass {
791
+ static int DoesSomething(int a, int b);
792
+ };
793
+ }
794
+
795
+ Will generate functions like
796
+
797
+ void MyNamespace_MyClass_DoesSomething_ExpectAndReturn(int a, int b, int toReturn);
798
+
799
+ Examples
800
+ ========
801
+
802
+ You can look in the [examples directory](/examples/) for a couple of examples on how
803
+ you might tool CMock into your build process. You may also want to consider
804
+ using [Ceedling](https://throwtheswitch.org/ceedling). Please note that
805
+ these examples are meant to show how the build process works. They have
806
+ failing tests ON PURPOSE to show what that would look like. Don't be alarmed. ;)