ceedling 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (626) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +17 -13
  3. data/ceedling-0.18.0.gem +0 -0
  4. data/docs/CeedlingPacket.md +7 -5
  5. data/lib/ceedling/configurator_builder.rb +10 -21
  6. data/lib/ceedling/configurator_setup.rb +16 -17
  7. data/lib/ceedling/constants.rb +4 -3
  8. data/lib/ceedling/defaults.rb +9 -4
  9. data/lib/ceedling/dependinator.rb +0 -1
  10. data/lib/ceedling/file_path_utils.rb +22 -26
  11. data/lib/ceedling/flaginator.rb +5 -5
  12. data/lib/ceedling/generator.rb +8 -7
  13. data/lib/ceedling/preprocessinator_file_handler.rb +6 -6
  14. data/lib/ceedling/preprocessinator_includes_handler.rb +1 -1
  15. data/lib/ceedling/rules_release.rake +5 -3
  16. data/lib/ceedling/rules_tests.rake +2 -1
  17. data/lib/ceedling/tasks_base.rake +1 -1
  18. data/lib/ceedling/tasks_vendor.rake +9 -10
  19. data/lib/ceedling/tool_executor.rb +23 -22
  20. data/lib/ceedling/version.rb +3 -3
  21. data/plugins/module_generator/lib/module_generator.rb +3 -3
  22. data/plugins/xml_tests_report/xml_tests_report.rb +1 -1
  23. data/spec/preprocessinator_includes_handler_spec.rb +1 -1
  24. data/spec/spec_system_helper.rb +192 -192
  25. data/vendor/c_exception/vendor/unity/Gemfile +4 -0
  26. data/vendor/c_exception/vendor/unity/Gemfile.lock +12 -0
  27. data/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +115 -0
  28. data/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +39 -0
  29. data/vendor/c_exception/vendor/unity/auto/generate_config.yml +36 -0
  30. data/vendor/c_exception/vendor/unity/auto/generate_module.rb +202 -0
  31. data/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +320 -0
  32. data/vendor/c_exception/vendor/unity/auto/parseOutput.rb +189 -0
  33. data/vendor/c_exception/vendor/unity/auto/test_file_filter.rb +23 -0
  34. data/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +139 -0
  35. data/vendor/c_exception/vendor/unity/docs/Unity Summary.odt +0 -0
  36. data/vendor/c_exception/vendor/unity/docs/Unity Summary.pdf +0 -0
  37. data/vendor/c_exception/vendor/unity/docs/Unity Summary.txt +216 -0
  38. data/vendor/c_exception/vendor/unity/docs/license.txt +31 -0
  39. data/vendor/c_exception/vendor/unity/examples/example_1/makefile +41 -0
  40. data/vendor/c_exception/vendor/unity/examples/example_1/readme.txt +5 -0
  41. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode.c +24 -0
  42. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode.h +3 -0
  43. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.c +9 -0
  44. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.h +2 -0
  45. data/vendor/c_exception/vendor/unity/examples/example_1/test/TestProductionCode.c +62 -0
  46. data/vendor/c_exception/vendor/unity/examples/example_1/test/TestProductionCode2.c +31 -0
  47. data/vendor/{unity/examples/example_3/test/no_ruby → c_exception/vendor/unity/examples/example_1/test/test_runners}/TestProductionCode2_Runner.c +16 -3
  48. data/vendor/{unity/examples/example_3/test/no_ruby → c_exception/vendor/unity/examples/example_1/test/test_runners}/TestProductionCode_Runner.c +16 -3
  49. data/vendor/c_exception/vendor/unity/examples/example_2/makefile +45 -0
  50. data/vendor/c_exception/vendor/unity/examples/example_2/readme.txt +5 -0
  51. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode.c +24 -0
  52. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode.h +3 -0
  53. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.c +9 -0
  54. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.h +2 -0
  55. data/vendor/c_exception/vendor/unity/examples/example_2/test/TestProductionCode.c +64 -0
  56. data/vendor/c_exception/vendor/unity/examples/example_2/test/TestProductionCode2.c +33 -0
  57. data/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +9 -0
  58. data/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +11 -0
  59. data/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -0
  60. data/vendor/c_exception/vendor/unity/examples/example_3/helper/UnityHelper.c +10 -0
  61. data/vendor/c_exception/vendor/unity/examples/example_3/helper/UnityHelper.h +12 -0
  62. data/vendor/c_exception/vendor/unity/examples/example_3/makefile +41 -0
  63. data/vendor/c_exception/vendor/unity/examples/example_3/rakefile.rb +44 -0
  64. data/vendor/c_exception/vendor/unity/examples/example_3/rakefile_helper.rb +256 -0
  65. data/vendor/c_exception/vendor/unity/examples/example_3/readme.txt +19 -0
  66. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode.c +24 -0
  67. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode.h +3 -0
  68. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.c +9 -0
  69. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.h +2 -0
  70. data/vendor/c_exception/vendor/unity/examples/example_3/target_gcc_32.yml +46 -0
  71. data/vendor/c_exception/vendor/unity/examples/example_3/test/TestProductionCode.c +62 -0
  72. data/vendor/c_exception/vendor/unity/examples/example_3/test/TestProductionCode2.c +31 -0
  73. data/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode2_Runner.c +46 -0
  74. data/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode_Runner.c +50 -0
  75. data/vendor/c_exception/vendor/unity/extras/eclipse/error_parsers.txt +26 -0
  76. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +37 -0
  77. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +179 -0
  78. data/vendor/c_exception/vendor/unity/extras/fixture/readme.txt +9 -0
  79. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +387 -0
  80. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +82 -0
  81. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +44 -0
  82. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +16 -0
  83. data/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +21 -0
  84. data/vendor/c_exception/vendor/unity/extras/fixture/test/testunity_fixture.c +39 -0
  85. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +341 -0
  86. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +41 -0
  87. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +56 -0
  88. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
  89. data/vendor/c_exception/vendor/unity/makefile +37 -0
  90. data/vendor/c_exception/vendor/unity/rakefile.rb +61 -0
  91. data/vendor/c_exception/vendor/unity/rakefile_helper.rb +249 -0
  92. data/vendor/c_exception/vendor/unity/release/build.info +2 -0
  93. data/vendor/c_exception/vendor/unity/release/version.info +2 -0
  94. data/vendor/c_exception/vendor/unity/src/unity.c +1145 -0
  95. data/vendor/c_exception/vendor/unity/src/unity.h +307 -0
  96. data/vendor/c_exception/vendor/unity/src/unity_internals.h +620 -0
  97. data/vendor/c_exception/vendor/unity/targets/clang_strict.yml +83 -0
  98. data/vendor/c_exception/vendor/unity/targets/gcc_32.yml +44 -0
  99. data/vendor/c_exception/vendor/unity/targets/gcc_64.yml +45 -0
  100. data/vendor/c_exception/vendor/unity/targets/hitech_picc18.yml +101 -0
  101. data/vendor/c_exception/vendor/unity/targets/iar_arm_v4.yml +89 -0
  102. data/vendor/c_exception/vendor/unity/targets/iar_arm_v5.yml +79 -0
  103. data/vendor/c_exception/vendor/unity/targets/iar_arm_v5_3.yml +79 -0
  104. data/vendor/c_exception/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -0
  105. data/vendor/c_exception/vendor/unity/targets/iar_cortexm3_v5.yml +83 -0
  106. data/vendor/c_exception/vendor/unity/targets/iar_msp430.yml +94 -0
  107. data/vendor/c_exception/vendor/unity/targets/iar_sh2a_v6.yml +85 -0
  108. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_cmd.c +57 -0
  109. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_def.c +53 -0
  110. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_cmd.c +79 -0
  111. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_def.c +75 -0
  112. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new1.c +88 -0
  113. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new2.c +88 -0
  114. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_param.c +76 -0
  115. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run1.c +88 -0
  116. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run2.c +88 -0
  117. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_yaml.c +89 -0
  118. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new1.c +63 -0
  119. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new2.c +66 -0
  120. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_param.c +54 -0
  121. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run1.c +63 -0
  122. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run2.c +66 -0
  123. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_yaml.c +67 -0
  124. data/vendor/c_exception/vendor/unity/test/test_generate_test_runner.rb +88 -0
  125. data/vendor/c_exception/vendor/unity/test/testdata/mocksample.c +51 -0
  126. data/vendor/c_exception/vendor/unity/test/testdata/sample.yml +9 -0
  127. data/vendor/c_exception/vendor/unity/test/testdata/testsample.c +51 -0
  128. data/vendor/c_exception/vendor/unity/test/testparameterized.c +101 -0
  129. data/vendor/c_exception/vendor/unity/test/testunity.c +3447 -0
  130. data/vendor/cmock/README.md +1 -1
  131. data/vendor/cmock/Rakefile +106 -104
  132. data/vendor/cmock/config/production_environment.rb +14 -14
  133. data/vendor/cmock/config/test_environment.rb +16 -16
  134. data/vendor/cmock/docs/CMock_Summary.md +9 -0
  135. data/vendor/cmock/docs/license.txt +2 -2
  136. data/vendor/cmock/examples/make_example/Makefile +30 -0
  137. data/vendor/cmock/examples/make_example/src/foo.c +5 -0
  138. data/vendor/cmock/examples/make_example/src/foo.h +5 -0
  139. data/vendor/cmock/examples/make_example/src/main.c +15 -0
  140. data/vendor/cmock/examples/make_example/test/test_foo.c +17 -0
  141. data/vendor/cmock/examples/make_example/test/test_main.c +15 -0
  142. data/vendor/cmock/examples/{gcc.yml → temp_sensor/gcc.yml} +43 -43
  143. data/vendor/cmock/examples/{iar_v4.yml → temp_sensor/iar_v4.yml} +91 -91
  144. data/vendor/cmock/examples/{iar_v5.yml → temp_sensor/iar_v5.yml} +80 -80
  145. data/vendor/cmock/examples/{rakefile.rb → temp_sensor/rakefile.rb} +32 -32
  146. data/vendor/cmock/examples/{rakefile_helper.rb → temp_sensor/rakefile_helper.rb} +270 -270
  147. data/vendor/cmock/examples/{src → temp_sensor/src}/AT91SAM7X256.h +2556 -2556
  148. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcConductor.c +42 -42
  149. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcConductor.h +11 -11
  150. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcHardware.c +27 -27
  151. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcHardware.h +9 -9
  152. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcHardwareConfigurator.c +18 -18
  153. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcHardwareConfigurator.h +10 -10
  154. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcModel.c +33 -33
  155. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcModel.h +13 -13
  156. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcTemperatureSensor.c +51 -51
  157. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcTemperatureSensor.h +10 -10
  158. data/vendor/cmock/examples/{src → temp_sensor/src}/Executor.c +25 -25
  159. data/vendor/cmock/examples/{src → temp_sensor/src}/Executor.h +9 -9
  160. data/vendor/cmock/examples/{src → temp_sensor/src}/IntrinsicsWrapper.c +18 -18
  161. data/vendor/cmock/examples/{src → temp_sensor/src}/IntrinsicsWrapper.h +7 -7
  162. data/vendor/cmock/examples/{src → temp_sensor/src}/Main.c +46 -46
  163. data/vendor/cmock/examples/{src → temp_sensor/src}/Main.h +7 -7
  164. data/vendor/cmock/examples/{src → temp_sensor/src}/Model.c +10 -10
  165. data/vendor/cmock/examples/{src → temp_sensor/src}/Model.h +8 -8
  166. data/vendor/cmock/examples/{src → temp_sensor/src}/ModelConfig.h +7 -7
  167. data/vendor/cmock/examples/{src → temp_sensor/src}/TaskScheduler.c +72 -72
  168. data/vendor/cmock/examples/{src → temp_sensor/src}/TaskScheduler.h +11 -11
  169. data/vendor/cmock/examples/{src → temp_sensor/src}/TemperatureCalculator.c +27 -27
  170. data/vendor/cmock/examples/{src → temp_sensor/src}/TemperatureCalculator.h +6 -6
  171. data/vendor/cmock/examples/{src → temp_sensor/src}/TemperatureFilter.c +39 -39
  172. data/vendor/cmock/examples/{src → temp_sensor/src}/TemperatureFilter.h +10 -10
  173. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerConductor.c +15 -15
  174. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerConductor.h +9 -9
  175. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerConfigurator.c +51 -51
  176. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerConfigurator.h +15 -15
  177. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerHardware.c +15 -15
  178. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerHardware.h +8 -8
  179. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerInterruptConfigurator.c +55 -55
  180. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerInterruptConfigurator.h +13 -13
  181. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerInterruptHandler.c +25 -25
  182. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerInterruptHandler.h +10 -10
  183. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerModel.c +9 -9
  184. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerModel.h +8 -8
  185. data/vendor/cmock/examples/{src → temp_sensor/src}/Types.h +103 -103
  186. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartBaudRateRegisterCalculator.c +18 -18
  187. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartBaudRateRegisterCalculator.h +6 -6
  188. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartConductor.c +21 -21
  189. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartConductor.h +7 -7
  190. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartConfigurator.c +39 -39
  191. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartConfigurator.h +13 -13
  192. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartHardware.c +22 -22
  193. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartHardware.h +9 -9
  194. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartModel.c +34 -34
  195. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartModel.h +10 -10
  196. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartPutChar.c +16 -16
  197. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartPutChar.h +8 -8
  198. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartTransmitBufferStatus.c +7 -7
  199. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartTransmitBufferStatus.h +8 -8
  200. data/vendor/cmock/examples/{test → temp_sensor/test}/TestAdcConductor.c +121 -121
  201. data/vendor/cmock/examples/{test → temp_sensor/test}/TestAdcHardware.c +44 -44
  202. data/vendor/cmock/examples/{test → temp_sensor/test}/TestAdcHardwareConfigurator.c +43 -43
  203. data/vendor/cmock/examples/{test → temp_sensor/test}/TestAdcModel.c +33 -33
  204. data/vendor/cmock/examples/{test → temp_sensor/test}/TestAdcTemperatureSensor.c +47 -47
  205. data/vendor/cmock/examples/{test → temp_sensor/test}/TestExecutor.c +36 -36
  206. data/vendor/cmock/examples/{test → temp_sensor/test}/TestMain.c +24 -24
  207. data/vendor/cmock/examples/{test → temp_sensor/test}/TestModel.c +20 -20
  208. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTaskScheduler.c +104 -104
  209. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTemperatureCalculator.c +33 -33
  210. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTemperatureFilter.c +69 -69
  211. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTimerConductor.c +32 -32
  212. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTimerConfigurator.c +112 -112
  213. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTimerHardware.c +26 -26
  214. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTimerInterruptConfigurator.c +78 -78
  215. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTimerInterruptHandler.c +66 -66
  216. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTimerModel.c +18 -18
  217. data/vendor/cmock/examples/{test → temp_sensor/test}/TestUsartBaudRateRegisterCalculator.c +21 -21
  218. data/vendor/cmock/examples/{test → temp_sensor/test}/TestUsartConductor.c +40 -40
  219. data/vendor/cmock/examples/{test → temp_sensor/test}/TestUsartConfigurator.c +77 -77
  220. data/vendor/cmock/examples/{test → temp_sensor/test}/TestUsartHardware.c +37 -37
  221. data/vendor/cmock/examples/{test → temp_sensor/test}/TestUsartModel.c +36 -36
  222. data/vendor/cmock/examples/{test → temp_sensor/test}/TestUsartPutChar.c +43 -43
  223. data/vendor/cmock/examples/{test → temp_sensor/test}/TestUsartTransmitBufferStatus.c +22 -22
  224. data/vendor/cmock/iar/iar_v4/Resource/at91SAM7X256_FLASH.xcl +185 -185
  225. data/vendor/cmock/iar/iar_v4/Resource/at91SAM7X256_RAM.xcl +185 -185
  226. data/vendor/cmock/iar/iar_v4/Resource/ioat91sam7x256.ddf +2259 -2259
  227. data/vendor/cmock/iar/iar_v4/cmock_demo.dep +3691 -3691
  228. data/vendor/cmock/iar/iar_v4/cmock_demo.ewp +2581 -2581
  229. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X-EK.h +61 -61
  230. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256.inc +2314 -2314
  231. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256.rdf +4704 -4704
  232. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256.tcl +3407 -3407
  233. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256_inc.h +2268 -2268
  234. data/vendor/cmock/iar/iar_v4/incIAR/ioat91sam7x256.h +4380 -4380
  235. data/vendor/cmock/iar/iar_v4/incIAR/lib_AT91SAM7X256.h +4211 -4211
  236. data/vendor/cmock/iar/iar_v4/settings/cmock_demo.cspy.bat +32 -32
  237. data/vendor/cmock/iar/iar_v4/srcIAR/Cstartup.s79 +265 -265
  238. data/vendor/cmock/iar/iar_v4/srcIAR/Cstartup_SAM7.c +98 -98
  239. data/vendor/cmock/iar/iar_v5/Resource/at91SAM7X256_FLASH.icf +43 -43
  240. data/vendor/cmock/iar/iar_v5/Resource/at91SAM7X256_RAM.icf +42 -42
  241. data/vendor/cmock/iar/iar_v5/cmock_demo.dep +4204 -4204
  242. data/vendor/cmock/iar/iar_v5/cmock_demo.ewp +2426 -2426
  243. data/vendor/cmock/iar/iar_v5/incIAR/AT91SAM7X-EK.h +61 -61
  244. data/vendor/cmock/iar/iar_v5/incIAR/AT91SAM7X256_inc.h +2268 -2268
  245. data/vendor/cmock/iar/iar_v5/incIAR/lib_AT91SAM7X256.h +4211 -4211
  246. data/vendor/cmock/iar/iar_v5/incIAR/project.h +30 -30
  247. data/vendor/cmock/iar/iar_v5/settings/BasicInterrupt_SAM7X.cspy.bat +33 -33
  248. data/vendor/cmock/iar/iar_v5/settings/BasicInterrupt_SAM7X_FLASH_Debug.jlink +12 -12
  249. data/vendor/cmock/iar/iar_v5/settings/cmock_demo.cspy.bat +33 -33
  250. data/vendor/cmock/iar/iar_v5/settings/cmock_demo_Binary.jlink +12 -12
  251. data/vendor/cmock/iar/iar_v5/settings/cmock_demo_FLASH_Debug.jlink +12 -12
  252. data/vendor/cmock/iar/iar_v5/settings/cmock_demo_RAM_Debug.jlink +12 -12
  253. data/vendor/cmock/iar/iar_v5/srcIAR/Cstartup.s +299 -299
  254. data/vendor/cmock/iar/iar_v5/srcIAR/Cstartup_SAM7.c +98 -98
  255. data/vendor/cmock/lib/cmock.rb +89 -89
  256. data/vendor/cmock/lib/cmock_config.rb +134 -133
  257. data/vendor/cmock/lib/cmock_file_writer.rb +40 -33
  258. data/vendor/cmock/lib/cmock_generator.rb +234 -215
  259. data/vendor/cmock/lib/cmock_generator_plugin_array.rb +63 -63
  260. data/vendor/cmock/lib/cmock_generator_plugin_callback.rb +96 -78
  261. data/vendor/cmock/lib/cmock_generator_plugin_cexception.rb +52 -51
  262. data/vendor/cmock/lib/cmock_generator_plugin_expect.rb +104 -86
  263. data/vendor/cmock/lib/cmock_generator_plugin_expect_any_args.rb +68 -68
  264. data/vendor/cmock/lib/cmock_generator_plugin_ignore.rb +72 -71
  265. data/vendor/cmock/lib/cmock_generator_plugin_ignore_arg.rb +1 -1
  266. data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +2 -2
  267. data/vendor/cmock/lib/cmock_generator_utils.rb +228 -213
  268. data/vendor/cmock/lib/cmock_header_parser.rb +1 -1
  269. data/vendor/cmock/lib/cmock_plugin_manager.rb +40 -40
  270. data/vendor/cmock/lib/cmock_unityhelper_parser.rb +75 -75
  271. data/vendor/cmock/rakefile_helper.rb +381 -381
  272. data/vendor/cmock/release/build.info +1 -1
  273. data/vendor/cmock/release/version.info +1 -1
  274. data/vendor/cmock/scripts/create_makefile.rb +161 -0
  275. data/vendor/cmock/scripts/create_mock.rb +8 -0
  276. data/vendor/cmock/scripts/create_runner.rb +20 -0
  277. data/vendor/cmock/scripts/test_summary.rb +11 -0
  278. data/vendor/cmock/src/cmock.c +203 -192
  279. data/vendor/cmock/src/cmock.h +38 -36
  280. data/vendor/cmock/src/cmock_internals.h +11 -1
  281. data/vendor/cmock/targets/clang_strict.yml +90 -85
  282. data/vendor/cmock/targets/gcc.yml +58 -55
  283. data/vendor/cmock/targets/gcc_64.yml +58 -55
  284. data/vendor/cmock/targets/gcc_tiny.yml +80 -0
  285. data/vendor/cmock/targets/iar_arm_v4.yml +110 -108
  286. data/vendor/cmock/targets/iar_arm_v5.yml +95 -93
  287. data/vendor/cmock/test/c/TestCMockC.c +323 -323
  288. data/vendor/cmock/test/c/TestCMockC.yml +1 -0
  289. data/vendor/cmock/test/c/TestCMockCDynamic.c +186 -186
  290. data/vendor/cmock/test/c/TestCMockCDynamic_Runner.c +36 -36
  291. data/vendor/cmock/test/c/TestCMockC_Runner.c +39 -39
  292. data/vendor/cmock/test/system/systest_generator.rb +194 -194
  293. data/vendor/cmock/test/system/test_compilation/callingconv.h +11 -11
  294. data/vendor/cmock/test/system/test_compilation/osek.h +275 -275
  295. data/vendor/cmock/test/system/test_compilation/parsing.h +2 -0
  296. data/vendor/cmock/test/system/test_interactions/all_plugins_but_other_limits.yml +375 -375
  297. data/vendor/cmock/test/system/test_interactions/all_plugins_coexist.yml +459 -389
  298. data/vendor/cmock/test/system/test_interactions/array_and_pointer_handling.yml +62 -0
  299. data/vendor/cmock/test/system/test_interactions/doesnt_leave_details_behind.yml +308 -0
  300. data/vendor/cmock/test/system/test_interactions/enforce_strict_ordering.yml +23 -23
  301. data/vendor/cmock/test/system/test_interactions/out_of_memory.yml +65 -0
  302. data/vendor/cmock/test/system/test_interactions/parsing_challenges.yml +38 -20
  303. data/vendor/cmock/test/system/test_interactions/struct_union_enum_expect_and_return_with_plugins.yml +280 -0
  304. data/vendor/cmock/test/test_helper.rb +47 -47
  305. data/vendor/cmock/test/unit/cmock_config_test.rb +118 -118
  306. data/vendor/cmock/test/unit/cmock_config_test.yml +5 -5
  307. data/vendor/cmock/test/unit/cmock_file_writer_test.rb +27 -27
  308. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +507 -489
  309. data/vendor/cmock/test/unit/cmock_generator_plugin_array_test.rb +133 -133
  310. data/vendor/cmock/test/unit/cmock_generator_plugin_callback_test.rb +257 -189
  311. data/vendor/cmock/test/unit/cmock_generator_plugin_cexception_test.rb +96 -93
  312. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_a_test.rb +186 -0
  313. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_any_args_test.rb +60 -81
  314. data/vendor/cmock/test/unit/{cmock_generator_plugin_expect_test.rb → cmock_generator_plugin_expect_b_test.rb} +202 -205
  315. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_arg_test.rb +116 -116
  316. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_test.rb +105 -103
  317. data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +134 -134
  318. data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +377 -334
  319. data/vendor/cmock/test/unit/cmock_header_parser_test.rb +1381 -1337
  320. data/vendor/cmock/test/unit/cmock_plugin_manager_test.rb +95 -95
  321. data/vendor/cmock/test/unit/cmock_unityhelper_parser_test.rb +223 -223
  322. data/vendor/cmock/vendor/c_exception/Gemfile +4 -0
  323. data/vendor/cmock/vendor/c_exception/Gemfile.lock +12 -0
  324. data/vendor/cmock/vendor/c_exception/LICENSE.txt +30 -0
  325. data/vendor/cmock/vendor/c_exception/README.md +146 -0
  326. data/vendor/cmock/vendor/c_exception/Rakefile +42 -0
  327. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
  328. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
  329. data/vendor/cmock/vendor/c_exception/docs/readme.txt +242 -0
  330. data/vendor/cmock/vendor/c_exception/lib/CException.c +46 -0
  331. data/vendor/cmock/vendor/c_exception/lib/CException.h +86 -0
  332. data/vendor/cmock/vendor/c_exception/makefile +24 -0
  333. data/vendor/cmock/vendor/c_exception/release/build.info +2 -0
  334. data/vendor/cmock/vendor/c_exception/release/version.info +2 -0
  335. data/vendor/cmock/vendor/c_exception/test/CExceptionConfig.h +46 -0
  336. data/vendor/cmock/vendor/c_exception/test/TestException.c +342 -0
  337. data/vendor/cmock/vendor/c_exception/test/TestException_Runner.c +74 -0
  338. data/vendor/cmock/vendor/c_exception/vendor/unity/Gemfile +4 -0
  339. data/vendor/cmock/vendor/c_exception/vendor/unity/Gemfile.lock +12 -0
  340. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +115 -0
  341. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +39 -0
  342. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_config.yml +36 -0
  343. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_module.rb +202 -0
  344. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +320 -0
  345. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/parseOutput.rb +189 -0
  346. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/test_file_filter.rb +23 -0
  347. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +139 -0
  348. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/Unity Summary.odt +0 -0
  349. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/Unity Summary.pdf +0 -0
  350. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/Unity Summary.txt +216 -0
  351. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/license.txt +31 -0
  352. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/makefile +41 -0
  353. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/readme.txt +5 -0
  354. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode.c +24 -0
  355. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode.h +3 -0
  356. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.c +9 -0
  357. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.h +2 -0
  358. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/TestProductionCode.c +62 -0
  359. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/TestProductionCode2.c +31 -0
  360. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +46 -0
  361. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +50 -0
  362. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/makefile +45 -0
  363. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/readme.txt +5 -0
  364. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode.c +24 -0
  365. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode.h +3 -0
  366. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.c +9 -0
  367. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.h +2 -0
  368. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/TestProductionCode.c +64 -0
  369. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/TestProductionCode2.c +33 -0
  370. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +9 -0
  371. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +11 -0
  372. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -0
  373. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/helper/UnityHelper.c +10 -0
  374. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/helper/UnityHelper.h +12 -0
  375. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/makefile +41 -0
  376. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/rakefile.rb +44 -0
  377. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/rakefile_helper.rb +256 -0
  378. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/readme.txt +19 -0
  379. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode.c +24 -0
  380. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode.h +3 -0
  381. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.c +9 -0
  382. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.h +2 -0
  383. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/target_gcc_32.yml +46 -0
  384. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/test/TestProductionCode.c +62 -0
  385. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/test/TestProductionCode2.c +31 -0
  386. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode2_Runner.c +46 -0
  387. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode_Runner.c +50 -0
  388. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/eclipse/error_parsers.txt +26 -0
  389. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +37 -0
  390. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +179 -0
  391. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/readme.txt +9 -0
  392. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +387 -0
  393. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +82 -0
  394. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +44 -0
  395. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +16 -0
  396. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +21 -0
  397. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/testunity_fixture.c +39 -0
  398. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +341 -0
  399. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +41 -0
  400. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +56 -0
  401. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
  402. data/vendor/cmock/vendor/c_exception/vendor/unity/makefile +37 -0
  403. data/vendor/cmock/vendor/c_exception/vendor/unity/rakefile.rb +61 -0
  404. data/vendor/cmock/vendor/c_exception/vendor/unity/rakefile_helper.rb +249 -0
  405. data/vendor/cmock/vendor/c_exception/vendor/unity/release/build.info +2 -0
  406. data/vendor/cmock/vendor/c_exception/vendor/unity/release/version.info +2 -0
  407. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.c +1145 -0
  408. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.h +307 -0
  409. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity_internals.h +620 -0
  410. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/clang_strict.yml +83 -0
  411. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/gcc_32.yml +44 -0
  412. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/gcc_64.yml +45 -0
  413. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/hitech_picc18.yml +101 -0
  414. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/iar_arm_v4.yml +89 -0
  415. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/iar_arm_v5.yml +79 -0
  416. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/iar_arm_v5_3.yml +79 -0
  417. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -0
  418. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/iar_cortexm3_v5.yml +83 -0
  419. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/iar_msp430.yml +94 -0
  420. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/iar_sh2a_v6.yml +85 -0
  421. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_cmd.c +57 -0
  422. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_def.c +53 -0
  423. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_cmd.c +79 -0
  424. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_def.c +75 -0
  425. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new1.c +88 -0
  426. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new2.c +88 -0
  427. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_param.c +76 -0
  428. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run1.c +88 -0
  429. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run2.c +88 -0
  430. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_yaml.c +89 -0
  431. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_new1.c +63 -0
  432. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_new2.c +66 -0
  433. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_param.c +54 -0
  434. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_run1.c +63 -0
  435. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_run2.c +66 -0
  436. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_yaml.c +67 -0
  437. data/vendor/cmock/vendor/c_exception/vendor/unity/test/test_generate_test_runner.rb +88 -0
  438. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/mocksample.c +51 -0
  439. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/sample.yml +9 -0
  440. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/testsample.c +51 -0
  441. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testparameterized.c +101 -0
  442. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testunity.c +3447 -0
  443. data/vendor/cmock/vendor/unity/README.md +211 -0
  444. data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +115 -0
  445. data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +39 -0
  446. data/vendor/cmock/vendor/unity/auto/generate_config.yml +36 -0
  447. data/vendor/cmock/vendor/unity/auto/generate_module.rb +202 -0
  448. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +374 -0
  449. data/vendor/cmock/vendor/unity/auto/parseOutput.rb +191 -0
  450. data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +23 -0
  451. data/vendor/cmock/vendor/unity/auto/type_sanitizer.rb +8 -0
  452. data/vendor/cmock/vendor/unity/auto/unity_test_summary.py +135 -0
  453. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +148 -0
  454. data/vendor/cmock/vendor/unity/docs/Unity Summary.odt +0 -0
  455. data/vendor/cmock/vendor/unity/docs/Unity Summary.pdf +0 -0
  456. data/vendor/cmock/vendor/unity/docs/Unity Summary.txt +224 -0
  457. data/vendor/cmock/vendor/unity/docs/license.txt +21 -0
  458. data/vendor/{unity/examples/example_3 → cmock/vendor/unity/examples/example_1}/makefile +9 -5
  459. data/vendor/cmock/vendor/unity/examples/example_1/readme.txt +5 -0
  460. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.c +24 -0
  461. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.h +3 -0
  462. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.c +11 -0
  463. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.h +2 -0
  464. data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode.c +62 -0
  465. data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode2.c +31 -0
  466. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -0
  467. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -0
  468. data/vendor/cmock/vendor/unity/examples/example_2/makefile +71 -0
  469. data/vendor/cmock/vendor/unity/examples/example_2/readme.txt +5 -0
  470. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.c +24 -0
  471. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.h +3 -0
  472. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.c +11 -0
  473. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.h +2 -0
  474. data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode.c +64 -0
  475. data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode2.c +33 -0
  476. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +9 -0
  477. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +11 -0
  478. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -0
  479. data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.c +10 -0
  480. data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.h +12 -0
  481. data/vendor/cmock/vendor/unity/examples/example_3/rakefile.rb +43 -0
  482. data/vendor/cmock/vendor/unity/examples/example_3/rakefile_helper.rb +256 -0
  483. data/vendor/cmock/vendor/unity/examples/example_3/readme.txt +19 -0
  484. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.c +24 -0
  485. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.h +3 -0
  486. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.c +11 -0
  487. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.h +2 -0
  488. data/vendor/cmock/vendor/unity/examples/example_3/target_gcc_32.yml +46 -0
  489. data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode.c +62 -0
  490. data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode2.c +31 -0
  491. data/vendor/cmock/vendor/unity/extras/eclipse/error_parsers.txt +26 -0
  492. data/vendor/cmock/vendor/unity/extras/fixture/rakefile.rb +48 -0
  493. data/vendor/cmock/vendor/unity/extras/fixture/rakefile_helper.rb +179 -0
  494. data/vendor/cmock/vendor/unity/extras/fixture/readme.txt +9 -0
  495. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +423 -0
  496. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +78 -0
  497. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +46 -0
  498. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +45 -0
  499. data/vendor/cmock/vendor/unity/extras/fixture/test/Makefile +19 -0
  500. data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +21 -0
  501. data/vendor/cmock/vendor/unity/extras/fixture/test/testunity_fixture.c +39 -0
  502. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +373 -0
  503. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +43 -0
  504. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.c +57 -0
  505. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
  506. data/vendor/cmock/vendor/unity/release/build.info +2 -0
  507. data/vendor/cmock/vendor/unity/release/version.info +2 -0
  508. data/vendor/cmock/vendor/unity/src/unity.c +1324 -0
  509. data/vendor/cmock/vendor/unity/src/unity.h +285 -0
  510. data/vendor/cmock/vendor/unity/src/unity_internals.h +758 -0
  511. data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +57 -0
  512. data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +53 -0
  513. data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.c +51 -0
  514. data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.h +12 -0
  515. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_cmd.c +80 -0
  516. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_def.c +76 -0
  517. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -0
  518. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.h +11 -0
  519. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new1.c +89 -0
  520. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new2.c +89 -0
  521. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_param.c +77 -0
  522. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run1.c +89 -0
  523. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run2.c +89 -0
  524. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_yaml.c +90 -0
  525. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +63 -0
  526. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +66 -0
  527. data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +54 -0
  528. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +63 -0
  529. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +66 -0
  530. data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +67 -0
  531. data/vendor/cmock/vendor/unity/test/rakefile +60 -0
  532. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +255 -0
  533. data/vendor/cmock/vendor/unity/test/targets/clang_file.yml +84 -0
  534. data/vendor/cmock/vendor/unity/test/targets/clang_strict.yml +84 -0
  535. data/vendor/cmock/vendor/unity/test/targets/gcc_32.yml +50 -0
  536. data/vendor/cmock/vendor/unity/test/targets/gcc_64.yml +51 -0
  537. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_limits.yml +47 -0
  538. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_sizeof.yml +48 -0
  539. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_stdint.yml +59 -0
  540. data/vendor/cmock/vendor/unity/test/targets/gcc_manual_math.yml +47 -0
  541. data/vendor/cmock/vendor/unity/test/targets/hitech_picc18.yml +101 -0
  542. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v4.yml +89 -0
  543. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5.yml +79 -0
  544. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5_3.yml +79 -0
  545. data/vendor/cmock/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -0
  546. data/vendor/cmock/vendor/unity/test/targets/iar_cortexm3_v5.yml +83 -0
  547. data/vendor/cmock/vendor/unity/test/targets/iar_msp430.yml +94 -0
  548. data/vendor/cmock/vendor/unity/test/targets/iar_sh2a_v6.yml +85 -0
  549. data/vendor/cmock/vendor/unity/test/testdata/mocksample.c +51 -0
  550. data/vendor/cmock/vendor/unity/test/testdata/sample.yml +9 -0
  551. data/vendor/cmock/vendor/unity/test/testdata/testsample.c +51 -0
  552. data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +102 -0
  553. data/vendor/cmock/vendor/unity/test/tests/testparameterized.c +104 -0
  554. data/vendor/cmock/vendor/unity/test/tests/testunity.c +3656 -0
  555. data/vendor/unity/README.md +211 -203
  556. data/vendor/unity/auto/colour_reporter.rb +38 -38
  557. data/vendor/unity/auto/generate_config.yml +36 -36
  558. data/vendor/unity/auto/generate_module.rb +202 -202
  559. data/vendor/unity/auto/generate_test_runner.rb +389 -347
  560. data/vendor/unity/auto/parseOutput.rb +2 -0
  561. data/vendor/unity/auto/unity_test_summary.py +135 -135
  562. data/vendor/unity/auto/unity_test_summary.rb +148 -139
  563. data/vendor/unity/docs/Unity Summary.odt +0 -0
  564. data/vendor/unity/docs/Unity Summary.pdf +0 -0
  565. data/vendor/unity/docs/Unity Summary.txt +224 -216
  566. data/vendor/unity/docs/license.txt +21 -21
  567. data/vendor/unity/examples/example_1/makefile +7 -3
  568. data/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +29 -9
  569. data/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +26 -6
  570. data/vendor/unity/examples/example_2/makefile +7 -4
  571. data/vendor/unity/extras/fixture/rakefile.rb +48 -48
  572. data/vendor/unity/extras/fixture/rakefile_helper.rb +179 -179
  573. data/vendor/unity/extras/fixture/src/unity_fixture.c +123 -78
  574. data/vendor/unity/extras/fixture/src/unity_fixture.h +6 -14
  575. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +12 -15
  576. data/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +25 -0
  577. data/vendor/unity/extras/fixture/test/Makefile +35 -0
  578. data/vendor/unity/extras/fixture/test/main/AllTests.c +2 -1
  579. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +99 -4
  580. data/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +10 -0
  581. data/vendor/unity/extras/fixture/test/unity_output_Spy.c +3 -1
  582. data/vendor/unity/release/build.info +1 -1
  583. data/vendor/unity/release/version.info +1 -1
  584. data/vendor/unity/src/unity.c +1324 -1177
  585. data/vendor/unity/src/unity.h +285 -272
  586. data/vendor/unity/src/unity_internals.h +758 -692
  587. data/vendor/unity/test/expectdata/testsample_head1.c +51 -0
  588. data/vendor/unity/test/expectdata/testsample_head1.h +12 -0
  589. data/vendor/unity/test/expectdata/testsample_mock_cmd.c +1 -0
  590. data/vendor/unity/test/expectdata/testsample_mock_def.c +1 -0
  591. data/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -0
  592. data/vendor/unity/test/expectdata/testsample_mock_head1.h +11 -0
  593. data/vendor/unity/test/expectdata/testsample_mock_new1.c +3 -2
  594. data/vendor/unity/test/expectdata/testsample_mock_new2.c +1 -0
  595. data/vendor/unity/test/expectdata/testsample_mock_param.c +1 -0
  596. data/vendor/unity/test/expectdata/testsample_mock_run1.c +3 -2
  597. data/vendor/unity/test/expectdata/testsample_mock_run2.c +1 -0
  598. data/vendor/unity/test/expectdata/testsample_mock_yaml.c +4 -3
  599. data/vendor/unity/test/expectdata/testsample_new1.c +2 -2
  600. data/vendor/unity/test/expectdata/testsample_run1.c +2 -2
  601. data/vendor/unity/test/expectdata/testsample_yaml.c +3 -3
  602. data/vendor/unity/test/rakefile +60 -60
  603. data/vendor/unity/test/rakefile_helper.rb +255 -249
  604. data/vendor/unity/test/targets/clang_file.yml +83 -0
  605. data/vendor/unity/test/targets/clang_strict.yml +83 -83
  606. data/vendor/unity/test/targets/gcc_32.yml +49 -49
  607. data/vendor/unity/test/targets/gcc_64.yml +50 -50
  608. data/vendor/unity/test/targets/gcc_auto_limits.yml +46 -46
  609. data/vendor/unity/test/targets/gcc_auto_sizeof.yml +47 -47
  610. data/vendor/unity/test/targets/gcc_auto_stdint.yml +58 -58
  611. data/vendor/unity/test/targets/gcc_manual_math.yml +46 -0
  612. data/vendor/unity/test/targets/hitech_picc18.yml +101 -101
  613. data/vendor/unity/test/targets/iar_arm_v4.yml +89 -89
  614. data/vendor/unity/test/targets/iar_arm_v5.yml +79 -79
  615. data/vendor/unity/test/targets/iar_arm_v5_3.yml +79 -79
  616. data/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -93
  617. data/vendor/unity/test/targets/iar_cortexm3_v5.yml +83 -83
  618. data/vendor/unity/test/targets/iar_msp430.yml +94 -94
  619. data/vendor/unity/test/targets/iar_sh2a_v6.yml +85 -85
  620. data/vendor/unity/test/testdata/mocksample.c +51 -51
  621. data/vendor/unity/test/testdata/sample.yml +8 -8
  622. data/vendor/unity/test/testdata/testsample.c +51 -51
  623. data/vendor/unity/test/tests/test_generate_test_runner.rb +102 -88
  624. data/vendor/unity/test/tests/testparameterized.c +104 -101
  625. data/vendor/unity/test/tests/testunity.c +3676 -3447
  626. metadata +549 -191
@@ -1,47 +1,47 @@
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
-
8
- require 'minitest/autorun'
9
-
10
- def create_mocks(*mocks)
11
- mocks.each do |mock|
12
- eval "@#{mock} = Minitest::Mock.new"
13
- end
14
- end
15
-
16
- def create_stub(funcs)
17
- stub = Class.new
18
- #if (RUBY_VERSION.split('.')[0].to_i >= 2)
19
- # funcs.each_pair {|k,v| stub.define_singleton_method(k) {|*unused| return v } }
20
- #else
21
- blob = "class << stub\n"
22
- funcs.each_pair {|k,v| blob += "def #{k.to_s}(unused=nil)\n #{v.inspect}\nend\n" }
23
- blob += "end"
24
- eval blob
25
- #end
26
- stub
27
- end
28
-
29
- def test_return
30
- {
31
- :int => {:type => "int", :name => 'cmock_to_return', :ptr? => false, :const? => false, :void? => false, :str => 'int cmock_to_return'},
32
- :int_ptr => {:type => "int*", :name => 'cmock_to_return', :ptr? => true, :const? => false, :void? => false, :str => 'int* cmock_to_return'},
33
- :void => {:type => "void", :name => 'cmock_to_return', :ptr? => false, :const? => false, :void? => true, :str => 'void cmock_to_return'},
34
- :string => {:type => "char*", :name => 'cmock_to_return', :ptr? => false, :const? => true, :void? => false, :str => 'const char* cmock_to_return'},
35
- }
36
- end
37
-
38
- def test_arg
39
- {
40
- :int => {:type => "int", :name => 'MyInt', :ptr? => false, :const? => false},
41
- :int_ptr => {:type => "int*", :name => 'MyIntPtr', :ptr? => true, :const? => false},
42
- :mytype => {:type => "MY_TYPE", :name => 'MyMyType', :ptr? => false, :const? => true},
43
- :mytype_ptr => {:type => "MY_TYPE*", :name => 'MyMyTypePtr', :ptr? => true, :const? => false},
44
- :string => {:type => "char*", :name => 'MyStr', :ptr? => false, :const? => true},
45
- }
46
- end
47
-
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
+
8
+ require 'minitest/autorun'
9
+
10
+ def create_mocks(*mocks)
11
+ mocks.each do |mock|
12
+ eval "@#{mock} = Minitest::Mock.new"
13
+ end
14
+ end
15
+
16
+ def create_stub(funcs)
17
+ stub = Class.new
18
+ #if (RUBY_VERSION.split('.')[0].to_i >= 2)
19
+ # funcs.each_pair {|k,v| stub.define_singleton_method(k) {|*unused| return v } }
20
+ #else
21
+ blob = "class << stub\n"
22
+ funcs.each_pair {|k,v| blob += "def #{k.to_s}(unused=nil)\n #{v.inspect}\nend\n" }
23
+ blob += "end"
24
+ eval blob
25
+ #end
26
+ stub
27
+ end
28
+
29
+ def test_return
30
+ {
31
+ :int => {:type => "int", :name => 'cmock_to_return', :ptr? => false, :const? => false, :void? => false, :str => 'int cmock_to_return'},
32
+ :int_ptr => {:type => "int*", :name => 'cmock_to_return', :ptr? => true, :const? => false, :void? => false, :str => 'int* cmock_to_return'},
33
+ :void => {:type => "void", :name => 'cmock_to_return', :ptr? => false, :const? => false, :void? => true, :str => 'void cmock_to_return'},
34
+ :string => {:type => "char*", :name => 'cmock_to_return', :ptr? => false, :const? => true, :void? => false, :str => 'const char* cmock_to_return'},
35
+ }
36
+ end
37
+
38
+ def test_arg
39
+ {
40
+ :int => {:type => "int", :name => 'MyInt', :ptr? => false, :const? => false},
41
+ :int_ptr => {:type => "int*", :name => 'MyIntPtr', :ptr? => true, :const? => false},
42
+ :mytype => {:type => "MY_TYPE", :name => 'MyMyType', :ptr? => false, :const? => true},
43
+ :mytype_ptr => {:type => "MY_TYPE*", :name => 'MyMyTypePtr', :ptr? => true, :const? => false},
44
+ :string => {:type => "char*", :name => 'MyStr', :ptr? => false, :const? => true},
45
+ }
46
+ end
47
+
@@ -1,118 +1,118 @@
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
-
8
- require File.expand_path(File.dirname(__FILE__)) + "/../test_helper"
9
- require 'cmock_config'
10
-
11
-
12
- describe CMockConfig, "Verify CMockConfig Module" do
13
-
14
- it "use default settings when no parameters are specified" do
15
- config = CMockConfig.new
16
- assert_equal(CMockConfig::CMockDefaultOptions[:mock_path], config.mock_path)
17
- assert_equal(CMockConfig::CMockDefaultOptions[:includes], config.includes)
18
- assert_equal(CMockConfig::CMockDefaultOptions[:attributes], config.attributes)
19
- assert_equal(CMockConfig::CMockDefaultOptions[:plugins], config.plugins)
20
- assert_equal(CMockConfig::CMockDefaultOptions[:treat_externs], config.treat_externs)
21
- end
22
-
23
- it "replace only options specified in a hash" do
24
- test_includes = ['hello']
25
- test_attributes = ['blah', 'bleh']
26
- config = CMockConfig.new(:includes => test_includes, :attributes => test_attributes)
27
- assert_equal(CMockConfig::CMockDefaultOptions[:mock_path], config.mock_path)
28
- assert_equal(test_includes, config.includes)
29
- assert_equal(test_attributes, config.attributes)
30
- assert_equal(CMockConfig::CMockDefaultOptions[:plugins], config.plugins)
31
- assert_equal(CMockConfig::CMockDefaultOptions[:treat_externs], config.treat_externs)
32
- end
33
-
34
- it "replace only options specified in a yaml file" do
35
- test_plugins = [:soda, :pizza]
36
- config = CMockConfig.new("#{File.expand_path(File.dirname(__FILE__))}/cmock_config_test.yml")
37
- assert_equal(CMockConfig::CMockDefaultOptions[:mock_path], config.mock_path)
38
- assert_equal(CMockConfig::CMockDefaultOptions[:includes], config.includes)
39
- assert_equal(test_plugins, config.plugins)
40
- assert_equal(:include, config.treat_externs)
41
- end
42
-
43
- it "populate treat_as map with internal standard_treat_as_map defaults, redefine defaults, and add custom values" do
44
-
45
- user_treat_as1 = {
46
- 'BOOL' => 'UINT8', # redefine standard default
47
- 'unsigned long' => 'INT', # redefine standard default
48
- 'U8' => 'UINT8', # custom value
49
- 'U16' => 'UINT16' # custom value
50
- }
51
- user_treat_as2 = {
52
- 'BOOL' => 'INT16', # redefine standard default
53
- 'U16' => 'HEX16' # custom value
54
- }
55
-
56
- config1 = CMockConfig.new({:treat_as => user_treat_as1})
57
- config2 = CMockConfig.new({:treat_as => user_treat_as2})
58
-
59
- # ----- USER SET 1
60
- # standard defaults
61
- assert_equal('INT', config1.treat_as['BOOL_T'])
62
- assert_equal('HEX32', config1.treat_as['unsigned int'])
63
- assert_equal('PTR', config1.treat_as['void*'])
64
- assert_equal('STRING', config1.treat_as['CSTRING'])
65
- assert_equal('STRING', config1.treat_as['char*'])
66
- assert_equal('HEX8', config1.treat_as['unsigned char'])
67
- assert_equal('INT', config1.treat_as['long'])
68
- assert_equal('INT16', config1.treat_as['short'])
69
-
70
- # overrides
71
- assert_equal('UINT8', config1.treat_as['BOOL'])
72
- assert_equal('INT', config1.treat_as['unsigned long'])
73
-
74
- # added custom values
75
- assert_equal('UINT8', config1.treat_as['U8'])
76
- assert_equal('UINT16', config1.treat_as['U16'])
77
-
78
- # standard_treat_as_map: unchanged
79
- assert_equal('INT', config1.standard_treat_as_map['BOOL'])
80
- assert_equal('HEX32', config1.standard_treat_as_map['unsigned long'])
81
- assert_equal('STRING', config1.standard_treat_as_map['char*'])
82
-
83
- # ----- USER SET 2
84
- # standard defaults
85
- assert_equal('INT', config2.treat_as['BOOL_T'])
86
- assert_equal('HEX32', config2.treat_as['unsigned int'])
87
- assert_equal('PTR', config2.treat_as['void*'])
88
- assert_equal('STRING', config2.treat_as['CSTRING'])
89
- assert_equal('STRING', config2.treat_as['char*'])
90
- assert_equal('HEX8', config2.treat_as['unsigned char'])
91
- assert_equal('INT', config2.treat_as['long'])
92
- assert_equal('INT16', config2.treat_as['short'])
93
- assert_equal('HEX32', config2.treat_as['unsigned long'])
94
-
95
- # overrides
96
- assert_equal('INT16', config2.treat_as['BOOL'])
97
-
98
- # added custom values
99
- assert_equal('HEX16', config2.treat_as['U16'])
100
-
101
- # standard_treat_as_map: unchanged
102
- assert_equal('INT', config2.standard_treat_as_map['BOOL'])
103
- assert_equal('HEX32', config2.standard_treat_as_map['unsigned long'])
104
- assert_equal('STRING', config2.standard_treat_as_map['char*'])
105
- end
106
-
107
- it "standard treat_as map should be incorruptable" do
108
- config = CMockConfig.new({})
109
-
110
- assert_equal('INT', config.standard_treat_as_map['BOOL_T'])
111
-
112
- local = config.standard_treat_as_map
113
- local['BOOL_T'] = "U8"
114
-
115
- assert_equal('INT', config.standard_treat_as_map['BOOL_T'])
116
- end
117
-
118
- 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
+
8
+ require File.expand_path(File.dirname(__FILE__)) + "/../test_helper"
9
+ require 'cmock_config'
10
+
11
+
12
+ describe CMockConfig, "Verify CMockConfig Module" do
13
+
14
+ it "use default settings when no parameters are specified" do
15
+ config = CMockConfig.new
16
+ assert_equal(CMockConfig::CMockDefaultOptions[:mock_path], config.mock_path)
17
+ assert_equal(CMockConfig::CMockDefaultOptions[:includes], config.includes)
18
+ assert_equal(CMockConfig::CMockDefaultOptions[:attributes], config.attributes)
19
+ assert_equal(CMockConfig::CMockDefaultOptions[:plugins], config.plugins)
20
+ assert_equal(CMockConfig::CMockDefaultOptions[:treat_externs], config.treat_externs)
21
+ end
22
+
23
+ it "replace only options specified in a hash" do
24
+ test_includes = ['hello']
25
+ test_attributes = ['blah', 'bleh']
26
+ config = CMockConfig.new(:includes => test_includes, :attributes => test_attributes)
27
+ assert_equal(CMockConfig::CMockDefaultOptions[:mock_path], config.mock_path)
28
+ assert_equal(test_includes, config.includes)
29
+ assert_equal(test_attributes, config.attributes)
30
+ assert_equal(CMockConfig::CMockDefaultOptions[:plugins], config.plugins)
31
+ assert_equal(CMockConfig::CMockDefaultOptions[:treat_externs], config.treat_externs)
32
+ end
33
+
34
+ it "replace only options specified in a yaml file" do
35
+ test_plugins = [:soda, :pizza]
36
+ config = CMockConfig.new("#{File.expand_path(File.dirname(__FILE__))}/cmock_config_test.yml")
37
+ assert_equal(CMockConfig::CMockDefaultOptions[:mock_path], config.mock_path)
38
+ assert_equal(CMockConfig::CMockDefaultOptions[:includes], config.includes)
39
+ assert_equal(test_plugins, config.plugins)
40
+ assert_equal(:include, config.treat_externs)
41
+ end
42
+
43
+ it "populate treat_as map with internal standard_treat_as_map defaults, redefine defaults, and add custom values" do
44
+
45
+ user_treat_as1 = {
46
+ 'BOOL' => 'UINT8', # redefine standard default
47
+ 'unsigned long' => 'INT', # redefine standard default
48
+ 'U8' => 'UINT8', # custom value
49
+ 'U16' => 'UINT16' # custom value
50
+ }
51
+ user_treat_as2 = {
52
+ 'BOOL' => 'INT16', # redefine standard default
53
+ 'U16' => 'HEX16' # custom value
54
+ }
55
+
56
+ config1 = CMockConfig.new({:treat_as => user_treat_as1})
57
+ config2 = CMockConfig.new({:treat_as => user_treat_as2})
58
+
59
+ # ----- USER SET 1
60
+ # standard defaults
61
+ assert_equal('INT', config1.treat_as['BOOL_T'])
62
+ assert_equal('HEX32', config1.treat_as['unsigned int'])
63
+ assert_equal('HEX8_ARRAY',config1.treat_as['void*'])
64
+ assert_equal('STRING', config1.treat_as['CSTRING'])
65
+ assert_equal('STRING', config1.treat_as['char*'])
66
+ assert_equal('HEX8', config1.treat_as['unsigned char'])
67
+ assert_equal('INT', config1.treat_as['long'])
68
+ assert_equal('INT16', config1.treat_as['short'])
69
+
70
+ # overrides
71
+ assert_equal('UINT8', config1.treat_as['BOOL'])
72
+ assert_equal('INT', config1.treat_as['unsigned long'])
73
+
74
+ # added custom values
75
+ assert_equal('UINT8', config1.treat_as['U8'])
76
+ assert_equal('UINT16', config1.treat_as['U16'])
77
+
78
+ # standard_treat_as_map: unchanged
79
+ assert_equal('INT', config1.standard_treat_as_map['BOOL'])
80
+ assert_equal('HEX32', config1.standard_treat_as_map['unsigned long'])
81
+ assert_equal('STRING', config1.standard_treat_as_map['char*'])
82
+
83
+ # ----- USER SET 2
84
+ # standard defaults
85
+ assert_equal('INT', config2.treat_as['BOOL_T'])
86
+ assert_equal('HEX32', config2.treat_as['unsigned int'])
87
+ assert_equal('HEX8_ARRAY',config2.treat_as['void*'])
88
+ assert_equal('STRING', config2.treat_as['CSTRING'])
89
+ assert_equal('STRING', config2.treat_as['char*'])
90
+ assert_equal('HEX8', config2.treat_as['unsigned char'])
91
+ assert_equal('INT', config2.treat_as['long'])
92
+ assert_equal('INT16', config2.treat_as['short'])
93
+ assert_equal('HEX32', config2.treat_as['unsigned long'])
94
+
95
+ # overrides
96
+ assert_equal('INT16', config2.treat_as['BOOL'])
97
+
98
+ # added custom values
99
+ assert_equal('HEX16', config2.treat_as['U16'])
100
+
101
+ # standard_treat_as_map: unchanged
102
+ assert_equal('INT', config2.standard_treat_as_map['BOOL'])
103
+ assert_equal('HEX32', config2.standard_treat_as_map['unsigned long'])
104
+ assert_equal('STRING', config2.standard_treat_as_map['char*'])
105
+ end
106
+
107
+ it "standard treat_as map should be incorruptable" do
108
+ config = CMockConfig.new({})
109
+
110
+ assert_equal('INT', config.standard_treat_as_map['BOOL_T'])
111
+
112
+ local = config.standard_treat_as_map
113
+ local['BOOL_T'] = "U8"
114
+
115
+ assert_equal('INT', config.standard_treat_as_map['BOOL_T'])
116
+ end
117
+
118
+ end
@@ -1,5 +1,5 @@
1
- :cmock:
2
- :plugins:
3
- - 'soda'
4
- - 'pizza'
5
- :treat_externs: :include
1
+ :cmock:
2
+ :plugins:
3
+ - 'soda'
4
+ - 'pizza'
5
+ :treat_externs: :include
@@ -1,27 +1,27 @@
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
- require File.expand_path(File.dirname(__FILE__)) + "/../test_helper"
8
- require 'cmock_file_writer'
9
-
10
- describe CMockFileWriter, "Verify CMockFileWriter Module" do
11
-
12
- before do
13
- create_mocks :config
14
- @cmock_file_writer = CMockFileWriter.new(@config)
15
- end
16
-
17
- after do
18
- end
19
-
20
- it "complain if a block was not specified when calling create" do
21
- begin
22
- @cmock_file_writer.create_file("test.txt")
23
- assert false, "Should Have Thrown An Error When Calling Without A Block"
24
- rescue
25
- end
26
- end
27
- 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
+ require File.expand_path(File.dirname(__FILE__)) + "/../test_helper"
8
+ require 'cmock_file_writer'
9
+
10
+ describe CMockFileWriter, "Verify CMockFileWriter Module" do
11
+
12
+ before do
13
+ create_mocks :config
14
+ @cmock_file_writer = CMockFileWriter.new(@config)
15
+ end
16
+
17
+ after do
18
+ end
19
+
20
+ it "complain if a block was not specified when calling create" do
21
+ begin
22
+ @cmock_file_writer.create_file("test.txt")
23
+ assert false, "Should Have Thrown An Error When Calling Without A Block"
24
+ rescue
25
+ end
26
+ end
27
+ end
@@ -1,489 +1,507 @@
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
- $ThisIsOnlyATest = true
8
-
9
- require File.expand_path(File.dirname(__FILE__)) + "/../test_helper"
10
- require 'cmock_generator'
11
-
12
- class MockedPluginHelper
13
- def initialize return_this
14
- @return_this = return_this
15
- end
16
-
17
- def include_files
18
- return @return_this
19
- end
20
-
21
- def instance_structure( name, args, rettype )
22
- return " #{@return_this}_#{name}(#{args}, #{rettype})"
23
- end
24
-
25
- def mock_verify( name )
26
- return " #{@return_this}_#{name}"
27
- end
28
-
29
- def mock_destroy( name, args, rettype )
30
- return " #{@return_this}_#{name}(#{args}, #{rettype})"
31
- end
32
-
33
- def mock_implementation(name, args)
34
- return " Mock#{name}#{@return_this}(#{args.join(", ")})"
35
- end
36
- end
37
-
38
- describe CMockGenerator, "Verify CMockGenerator Module" do
39
-
40
- before do
41
- create_mocks :config, :file_writer, :utils, :plugins
42
- @module_name = "PoutPoutFish"
43
-
44
- #no strict handling
45
- @config.expect :mock_prefix, "Mock"
46
- @config.expect :enforce_strict_ordering, nil
47
- @config.expect :framework, :unity
48
- @config.expect :includes, ["ConfigRequiredHeader1.h","ConfigRequiredHeader2.h"]
49
- #@config.expect :includes_h_pre_orig_header, nil #not called because includes called
50
- @config.expect :includes_h_post_orig_header, nil
51
- @config.expect :includes_c_pre_header, nil
52
- @config.expect :includes_c_post_header, nil
53
- @cmock_generator = CMockGenerator.new(@config, @file_writer, @utils, @plugins)
54
- @cmock_generator.module_name = @module_name
55
- @cmock_generator.mock_name = "Mock#{@module_name}"
56
- @cmock_generator.clean_mock_name = "Mock#{@module_name}"
57
-
58
- #strict handling
59
- @config.expect :mock_prefix, "Mock"
60
- @config.expect :enforce_strict_ordering, true
61
- @config.expect :framework, :unity
62
- @config.expect :includes, nil
63
- @config.expect :includes_h_pre_orig_header, nil
64
- @config.expect :includes_h_post_orig_header, nil
65
- @config.expect :includes_c_pre_header, nil
66
- @config.expect :includes_c_post_header, nil
67
- @cmock_generator_strict = CMockGenerator.new(@config, @file_writer, @utils, @plugins)
68
- @cmock_generator_strict.module_name = @module_name
69
- @cmock_generator_strict.mock_name = "Mock#{@module_name}"
70
- @cmock_generator_strict.clean_mock_name = "Mock#{@module_name}"
71
- end
72
-
73
- after do
74
- end
75
-
76
- it "create the top of a header file with optional include files from config and include file from plugin" do
77
- @config.expect :mock_prefix, "Mock"
78
- orig_filename = "PoutPoutFish.h"
79
- define_name = "MOCKPOUTPOUTFISH_H"
80
- mock_name = "MockPoutPoutFish"
81
- output = []
82
- expected = [
83
- "/* AUTOGENERATED FILE. DO NOT EDIT. */\n",
84
- "#ifndef _#{define_name}\n",
85
- "#define _#{define_name}\n\n",
86
- "#include \"ConfigRequiredHeader1.h\"\n",
87
- "#include \"ConfigRequiredHeader2.h\"\n",
88
- "#include \"#{orig_filename}\"\n",
89
- "#include \"PluginRequiredHeader.h\"\n",
90
- "\n",
91
- "/* Ignore the following warnings, since we are copying code */\n",
92
- "#if defined(__GNUC__) && !defined(__ICC)\n",
93
- "#if !defined(__clang__)\n",
94
- "#pragma GCC diagnostic ignored \"-Wpragmas\"\n",
95
- "#endif\n",
96
- "#pragma GCC diagnostic ignored \"-Wunknown-pragmas\"\n",
97
- "#pragma GCC diagnostic ignored \"-Wduplicate-decl-specifier\"\n",
98
- "#endif\n",
99
- "\n",
100
- ]
101
-
102
- @config.expect :orig_header_include_fmt, "#include \"%s\""
103
- @plugins.expect :run, "#include \"PluginRequiredHeader.h\"\n", [:include_files]
104
-
105
- @cmock_generator.create_mock_header_header(output, "MockPoutPoutFish.h")
106
-
107
- assert_equal(expected, output)
108
- end
109
-
110
- it "handle dashes and spaces in the module name" do
111
- #no strict handling
112
- @config.expect :mock_prefix, "Mock"
113
- @config.expect :enforce_strict_ordering, nil
114
- @config.expect :framework, :unity
115
- @config.expect :includes, ["ConfigRequiredHeader1.h","ConfigRequiredHeader2.h"]
116
- @config.expect :includes_h_post_orig_header, nil
117
- @config.expect :includes_c_pre_header, nil
118
- @config.expect :includes_c_post_header, nil
119
- @cmock_generator2 = CMockGenerator.new(@config, @file_writer, @utils, @plugins)
120
- @cmock_generator2.module_name = "Pout-Pout Fish"
121
- @cmock_generator2.mock_name = "MockPout-Pout Fish"
122
- @cmock_generator2.clean_mock_name = "MockPout_Pout_Fish"
123
-
124
- @config.expect :mock_prefix, "Mock"
125
- orig_filename = "Pout-Pout Fish.h"
126
- define_name = "MOCKPOUT_POUT_FISH_H"
127
- mock_name = "MockPout_Pout_Fish"
128
- output = []
129
- expected = [
130
- "/* AUTOGENERATED FILE. DO NOT EDIT. */\n",
131
- "#ifndef _#{define_name}\n",
132
- "#define _#{define_name}\n\n",
133
- "#include \"ConfigRequiredHeader1.h\"\n",
134
- "#include \"ConfigRequiredHeader2.h\"\n",
135
- "#include \"#{orig_filename}\"\n",
136
- "#include \"PluginRequiredHeader.h\"\n",
137
- "\n",
138
- "/* Ignore the following warnings, since we are copying code */\n",
139
- "#if defined(__GNUC__) && !defined(__ICC)\n",
140
- "#if !defined(__clang__)\n",
141
- "#pragma GCC diagnostic ignored \"-Wpragmas\"\n",
142
- "#endif\n",
143
- "#pragma GCC diagnostic ignored \"-Wunknown-pragmas\"\n",
144
- "#pragma GCC diagnostic ignored \"-Wduplicate-decl-specifier\"\n",
145
- "#endif\n",
146
- "\n",
147
- ]
148
-
149
- @config.expect :orig_header_include_fmt, "#include \"%s\""
150
- @plugins.expect :run, "#include \"PluginRequiredHeader.h\"\n", [:include_files]
151
-
152
- @cmock_generator2.create_mock_header_header(output, "MockPout-Pout Fish.h")
153
-
154
- assert_equal(expected, output)
155
- end
156
-
157
- it "create the top of a header file with optional include files from config" do
158
- @config.expect :mock_prefix, "Mock"
159
- orig_filename = "PoutPoutFish.h"
160
- define_name = "MOCKPOUTPOUTFISH_H"
161
- mock_name = "MockPoutPoutFish"
162
- output = []
163
- expected = [
164
- "/* AUTOGENERATED FILE. DO NOT EDIT. */\n",
165
- "#ifndef _#{define_name}\n",
166
- "#define _#{define_name}\n\n",
167
- "#include \"ConfigRequiredHeader1.h\"\n",
168
- "#include \"ConfigRequiredHeader2.h\"\n",
169
- "#include \"#{orig_filename}\"\n",
170
- "\n",
171
- "/* Ignore the following warnings, since we are copying code */\n",
172
- "#if defined(__GNUC__) && !defined(__ICC)\n",
173
- "#if !defined(__clang__)\n",
174
- "#pragma GCC diagnostic ignored \"-Wpragmas\"\n",
175
- "#endif\n",
176
- "#pragma GCC diagnostic ignored \"-Wunknown-pragmas\"\n",
177
- "#pragma GCC diagnostic ignored \"-Wduplicate-decl-specifier\"\n",
178
- "#endif\n",
179
- "\n",
180
- ]
181
-
182
- @config.expect :orig_header_include_fmt, "#include \"%s\""
183
- @plugins.expect :run, '', [:include_files]
184
-
185
- @cmock_generator.create_mock_header_header(output, "MockPoutPoutFish.h")
186
-
187
- assert_equal(expected, output)
188
- end
189
-
190
- it "create the top of a header file with include file from plugin" do
191
- @config.expect :mock_prefix, "Mock"
192
- orig_filename = "PoutPoutFish.h"
193
- define_name = "MOCKPOUTPOUTFISH_H"
194
- mock_name = "MockPoutPoutFish"
195
- output = []
196
- expected = [
197
- "/* AUTOGENERATED FILE. DO NOT EDIT. */\n",
198
- "#ifndef _#{define_name}\n",
199
- "#define _#{define_name}\n\n",
200
- "#include \"ConfigRequiredHeader1.h\"\n",
201
- "#include \"ConfigRequiredHeader2.h\"\n",
202
- "#include \"#{orig_filename}\"\n",
203
- "#include \"PluginRequiredHeader.h\"\n",
204
- "\n",
205
- "/* Ignore the following warnings, since we are copying code */\n",
206
- "#if defined(__GNUC__) && !defined(__ICC)\n",
207
- "#if !defined(__clang__)\n",
208
- "#pragma GCC diagnostic ignored \"-Wpragmas\"\n",
209
- "#endif\n",
210
- "#pragma GCC diagnostic ignored \"-Wunknown-pragmas\"\n",
211
- "#pragma GCC diagnostic ignored \"-Wduplicate-decl-specifier\"\n",
212
- "#endif\n",
213
- "\n",
214
- ]
215
-
216
- @config.expect :orig_header_include_fmt, "#include \"%s\""
217
- @plugins.expect :run, "#include \"PluginRequiredHeader.h\"\n", [:include_files]
218
-
219
- @cmock_generator.create_mock_header_header(output, "MockPoutPoutFish.h")
220
-
221
- assert_equal(expected, output)
222
- end
223
-
224
- it "write typedefs" do
225
- typedefs = [ 'typedef unsigned char U8;',
226
- 'typedef char S8;',
227
- 'typedef unsigned long U32;'
228
- ]
229
- output = []
230
- expected = [ "\n",
231
- "typedef unsigned char U8;\n",
232
- "typedef char S8;\n",
233
- "typedef unsigned long U32;\n",
234
- "\n\n"
235
- ]
236
-
237
- @cmock_generator.create_typedefs(output, typedefs)
238
-
239
- assert_equal(expected, output.flatten)
240
- end
241
-
242
- it "create the header file service call declarations" do
243
- mock_name = "MockPoutPoutFish"
244
-
245
- output = []
246
- expected = [ "void #{mock_name}_Init(void);\n",
247
- "void #{mock_name}_Destroy(void);\n",
248
- "void #{mock_name}_Verify(void);\n\n"
249
- ]
250
-
251
- @cmock_generator.create_mock_header_service_call_declarations(output)
252
-
253
- assert_equal(expected, output)
254
- end
255
-
256
- it "append the proper footer to the header file" do
257
- output = []
258
- expected = ["\n#endif\n"]
259
-
260
- @cmock_generator.create_mock_header_footer(output)
261
-
262
- assert_equal(expected, output)
263
- end
264
-
265
- it "create a proper heading for a source file" do
266
- output = []
267
- expected = [ "/* AUTOGENERATED FILE. DO NOT EDIT. */\n",
268
- "#include <string.h>\n",
269
- "#include <stdlib.h>\n",
270
- "#include <setjmp.h>\n",
271
- "#include \"unity.h\"\n",
272
- "#include \"cmock.h\"\n",
273
- "#include \"MockPoutPoutFish.h\"\n",
274
- "\n"
275
- ]
276
-
277
- @cmock_generator.create_source_header_section(output, "MockPoutPoutFish.c")
278
-
279
- assert_equal(expected, output)
280
- end
281
-
282
- it "create the instance structure where it is needed when no functions" do
283
- output = []
284
- functions = []
285
- expected = [ "static struct MockPoutPoutFishInstance\n",
286
- "{\n",
287
- " unsigned char placeHolder;\n",
288
- "} Mock;\n\n"
289
- ].join
290
-
291
- @cmock_generator.create_instance_structure(output, functions)
292
-
293
- assert_equal(expected, output.join)
294
- end
295
-
296
- it "create the instance structure where it is needed when functions required" do
297
- output = []
298
- functions = [ { :name => "First", :args => "int Candy", :return => test_return[:int] },
299
- { :name => "Second", :args => "bool Smarty", :return => test_return[:string] }
300
- ]
301
- expected = [ "typedef struct _CMOCK_First_CALL_INSTANCE\n{\n",
302
- " UNITY_LINE_TYPE LineNumber;\n",
303
- " b1 b2",
304
- "\n} CMOCK_First_CALL_INSTANCE;\n\n",
305
- "typedef struct _CMOCK_Second_CALL_INSTANCE\n{\n",
306
- " UNITY_LINE_TYPE LineNumber;\n",
307
- "\n} CMOCK_Second_CALL_INSTANCE;\n\n",
308
- "static struct MockPoutPoutFishInstance\n{\n",
309
- " d1",
310
- " CMOCK_MEM_INDEX_TYPE First_CallInstance;\n",
311
- " e1 e2 e3",
312
- " CMOCK_MEM_INDEX_TYPE Second_CallInstance;\n",
313
- "} Mock;\n\n"
314
- ].join
315
- @plugins.expect :run, [" b1"," b2"], [:instance_typedefs, functions[0]]
316
- @plugins.expect :run, [], [:instance_typedefs, functions[1]]
317
-
318
- @plugins.expect :run, [" d1"], [:instance_structure, functions[0]]
319
- @plugins.expect :run, [" e1"," e2"," e3"], [:instance_structure, functions[1]]
320
-
321
- @cmock_generator.create_instance_structure(output, functions)
322
-
323
- assert_equal(expected, output.join)
324
- end
325
-
326
- it "create extern declarations for source file" do
327
- output = []
328
- expected = [ "extern jmp_buf AbortFrame;\n",
329
- "\n" ]
330
-
331
- @cmock_generator.create_extern_declarations(output)
332
-
333
- assert_equal(expected, output.flatten)
334
- end
335
-
336
- it "create extern declarations for source file when using strict ordering" do
337
- output = []
338
- expected = [ "extern jmp_buf AbortFrame;\n",
339
- "extern int GlobalExpectCount;\n",
340
- "extern int GlobalVerifyOrder;\n",
341
- "\n" ]
342
-
343
- @cmock_generator_strict.create_extern_declarations(output)
344
-
345
- assert_equal(expected, output.flatten)
346
- end
347
-
348
- it "create mock verify functions in source file when no functions specified" do
349
- functions = []
350
- output = []
351
- expected = "void MockPoutPoutFish_Verify(void)\n{\n}\n\n"
352
-
353
- @cmock_generator.create_mock_verify_function(output, functions)
354
-
355
- assert_equal(expected, output.join)
356
- end
357
-
358
- it "create mock verify functions in source file when extra functions specified" do
359
- functions = [ { :name => "First", :args => "int Candy", :return => test_return[:int] },
360
- { :name => "Second", :args => "bool Smarty", :return => test_return[:string] }
361
- ]
362
- output = []
363
- expected = [ "void MockPoutPoutFish_Verify(void)\n{\n",
364
- " UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM;\n",
365
- " Uno_First" +
366
- " Dos_First" +
367
- " Uno_Second" +
368
- " Dos_Second",
369
- "}\n\n"
370
- ]
371
- @plugins.expect :run, [" Uno_First"," Dos_First"], [:mock_verify, functions[0]]
372
- @plugins.expect :run, [" Uno_Second"," Dos_Second"], [:mock_verify, functions[1]]
373
-
374
- @cmock_generator.ordered = true
375
- @cmock_generator.create_mock_verify_function(output, functions)
376
-
377
- assert_equal(expected, output.flatten)
378
- end
379
-
380
- it "create mock init functions in source file" do
381
- output = []
382
- expected = [ "void MockPoutPoutFish_Init(void)\n{\n",
383
- " MockPoutPoutFish_Destroy();\n",
384
- "}\n\n"
385
- ]
386
-
387
- @cmock_generator.create_mock_init_function(output)
388
-
389
- assert_equal(expected.join, output.join)
390
- end
391
-
392
- it "create mock destroy functions in source file" do
393
- functions = []
394
- output = []
395
- expected = [ "void MockPoutPoutFish_Destroy(void)\n{\n",
396
- " CMock_Guts_MemFreeAll();\n",
397
- " memset(&Mock, 0, sizeof(Mock));\n",
398
- "}\n\n"
399
- ]
400
-
401
- @cmock_generator.create_mock_destroy_function(output, functions)
402
-
403
- assert_equal(expected.join, output.join)
404
- end
405
-
406
- it "create mock destroy functions in source file when specified with strict ordering" do
407
- functions = [ { :name => "First", :args => "int Candy", :return => test_return[:int] },
408
- { :name => "Second", :args => "bool Smarty", :return => test_return[:string] }
409
- ]
410
- output = []
411
- expected = [ "void MockPoutPoutFish_Destroy(void)\n{\n",
412
- " CMock_Guts_MemFreeAll();\n",
413
- " memset(&Mock, 0, sizeof(Mock));\n",
414
- " uno",
415
- " GlobalExpectCount = 0;\n",
416
- " GlobalVerifyOrder = 0;\n",
417
- "}\n\n"
418
- ]
419
- @plugins.expect :run, [], [:mock_destroy, functions[0]]
420
- @plugins.expect :run, [" uno"], [:mock_destroy, functions[1]]
421
-
422
- @cmock_generator_strict.create_mock_destroy_function(output, functions)
423
-
424
- assert_equal(expected.join, output.join)
425
- end
426
-
427
- it "create mock implementation functions in source file" do
428
- function = { :modifier => "static",
429
- :return => test_return[:int],
430
- :args_string => "uint32 sandwiches, const char* named",
431
- :args => ["uint32 sandwiches", "const char* named"],
432
- :var_arg => nil,
433
- :name => "SupaFunction",
434
- :attributes => "__inline"
435
- }
436
- output = []
437
- expected = [ "static int SupaFunction(uint32 sandwiches, const char* named)\n",
438
- "{\n",
439
- " UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM;\n",
440
- " CMOCK_SupaFunction_CALL_INSTANCE* cmock_call_instance = (CMOCK_SupaFunction_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.SupaFunction_CallInstance);\n",
441
- " Mock.SupaFunction_CallInstance = CMock_Guts_MemNext(Mock.SupaFunction_CallInstance);\n",
442
- " uno",
443
- " UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, \"Function 'SupaFunction' called more times than expected.\");\n",
444
- " cmock_line = cmock_call_instance->LineNumber;\n",
445
- " dos",
446
- " tres",
447
- " return cmock_call_instance->ReturnVal;\n",
448
- "}\n\n"
449
- ]
450
- @plugins.expect :run, [" uno"], [:mock_implementation_precheck, function]
451
- @plugins.expect :run, [" dos"," tres"], [:mock_implementation, function]
452
-
453
- @cmock_generator.create_mock_implementation(output, function)
454
-
455
- assert_equal(expected.join, output.join)
456
- end
457
-
458
- it "create mock implementation functions in source file with different options" do
459
- function = { :modifier => "",
460
- :c_calling_convention => "__stdcall",
461
- :return => test_return[:int],
462
- :args_string => "uint32 sandwiches",
463
- :args => ["uint32 sandwiches"],
464
- :var_arg => "corn ...",
465
- :name => "SupaFunction",
466
- :attributes => nil
467
- }
468
- output = []
469
- expected = [ "int __stdcall SupaFunction(uint32 sandwiches, corn ...)\n",
470
- "{\n",
471
- " UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM;\n",
472
- " CMOCK_SupaFunction_CALL_INSTANCE* cmock_call_instance = (CMOCK_SupaFunction_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.SupaFunction_CallInstance);\n",
473
- " Mock.SupaFunction_CallInstance = CMock_Guts_MemNext(Mock.SupaFunction_CallInstance);\n",
474
- " uno",
475
- " UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, \"Function 'SupaFunction' called more times than expected.\");\n",
476
- " cmock_line = cmock_call_instance->LineNumber;\n",
477
- " dos",
478
- " tres",
479
- " return cmock_call_instance->ReturnVal;\n",
480
- "}\n\n"
481
- ]
482
- @plugins.expect :run, [" uno"], [:mock_implementation_precheck, function]
483
- @plugins.expect :run, [" dos"," tres"], [:mock_implementation, function]
484
-
485
- @cmock_generator.create_mock_implementation(output, function)
486
-
487
- assert_equal(expected.join, output.join)
488
- end
489
- 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
+ $ThisIsOnlyATest = true
8
+
9
+ require File.expand_path(File.dirname(__FILE__)) + "/../test_helper"
10
+ require 'cmock_generator'
11
+
12
+ class MockedPluginHelper
13
+ def initialize return_this
14
+ @return_this = return_this
15
+ end
16
+
17
+ def include_files
18
+ return @return_this
19
+ end
20
+
21
+ def instance_structure( name, args, rettype )
22
+ return " #{@return_this}_#{name}(#{args}, #{rettype})"
23
+ end
24
+
25
+ def mock_verify( name )
26
+ return " #{@return_this}_#{name}"
27
+ end
28
+
29
+ def mock_destroy( name, args, rettype )
30
+ return " #{@return_this}_#{name}(#{args}, #{rettype})"
31
+ end
32
+
33
+ def mock_implementation(name, args)
34
+ return " Mock#{name}#{@return_this}(#{args.join(", ")})"
35
+ end
36
+ end
37
+
38
+ describe CMockGenerator, "Verify CMockGenerator Module" do
39
+
40
+ before do
41
+ create_mocks :config, :file_writer, :utils, :plugins
42
+ @module_name = "PoutPoutFish"
43
+
44
+ #no strict handling
45
+ @config.expect :mock_prefix, "Mock"
46
+ @config.expect :enforce_strict_ordering, nil
47
+ @config.expect :framework, :unity
48
+ @config.expect :includes, ["ConfigRequiredHeader1.h","ConfigRequiredHeader2.h"]
49
+ #@config.expect :includes_h_pre_orig_header, nil #not called because includes called
50
+ @config.expect :includes_h_post_orig_header, nil
51
+ @config.expect :includes_c_pre_header, nil
52
+ @config.expect :includes_c_post_header, nil
53
+ @config.expect :subdir, nil
54
+ @cmock_generator = CMockGenerator.new(@config, @file_writer, @utils, @plugins)
55
+ @cmock_generator.module_name = @module_name
56
+ @cmock_generator.mock_name = "Mock#{@module_name}"
57
+ @cmock_generator.clean_mock_name = "Mock#{@module_name}"
58
+
59
+ #strict handling
60
+ @config.expect :mock_prefix, "Mock"
61
+ @config.expect :enforce_strict_ordering, true
62
+ @config.expect :framework, :unity
63
+ @config.expect :includes, nil
64
+ @config.expect :includes_h_pre_orig_header, nil
65
+ @config.expect :includes_h_post_orig_header, nil
66
+ @config.expect :includes_c_pre_header, nil
67
+ @config.expect :includes_c_post_header, nil
68
+ @config.expect :subdir, nil
69
+ @cmock_generator_strict = CMockGenerator.new(@config, @file_writer, @utils, @plugins)
70
+ @cmock_generator_strict.module_name = @module_name
71
+ @cmock_generator_strict.mock_name = "Mock#{@module_name}"
72
+ @cmock_generator_strict.clean_mock_name = "Mock#{@module_name}"
73
+ end
74
+
75
+ after do
76
+ end
77
+
78
+ it "create the top of a header file with optional include files from config and include file from plugin" do
79
+ @config.expect :mock_prefix, "Mock"
80
+ orig_filename = "PoutPoutFish.h"
81
+ define_name = "MOCKPOUTPOUTFISH_H"
82
+ mock_name = "MockPoutPoutFish"
83
+ output = []
84
+ expected = [
85
+ "/* AUTOGENERATED FILE. DO NOT EDIT. */\n",
86
+ "#ifndef _#{define_name}\n",
87
+ "#define _#{define_name}\n\n",
88
+ "#include \"ConfigRequiredHeader1.h\"\n",
89
+ "#include \"ConfigRequiredHeader2.h\"\n",
90
+ "#include \"#{orig_filename}\"\n",
91
+ "#include \"PluginRequiredHeader.h\"\n",
92
+ "\n",
93
+ "/* Ignore the following warnings, since we are copying code */\n",
94
+ "#if defined(__GNUC__) && !defined(__ICC)\n",
95
+ "#if !defined(__clang__)\n",
96
+ "#pragma GCC diagnostic ignored \"-Wpragmas\"\n",
97
+ "#endif\n",
98
+ "#pragma GCC diagnostic ignored \"-Wunknown-pragmas\"\n",
99
+ "#pragma GCC diagnostic ignored \"-Wduplicate-decl-specifier\"\n",
100
+ "#endif\n",
101
+ "\n",
102
+ ]
103
+
104
+ @config.expect :orig_header_include_fmt, "#include \"%s\""
105
+ @plugins.expect :run, "#include \"PluginRequiredHeader.h\"\n", [:include_files]
106
+
107
+ @cmock_generator.create_mock_header_header(output, "MockPoutPoutFish.h")
108
+
109
+ assert_equal(expected, output)
110
+ end
111
+
112
+ it "handle dashes and spaces in the module name" do
113
+ #no strict handling
114
+ @config.expect :mock_prefix, "Mock"
115
+ @config.expect :enforce_strict_ordering, nil
116
+ @config.expect :framework, :unity
117
+ @config.expect :includes, ["ConfigRequiredHeader1.h","ConfigRequiredHeader2.h"]
118
+ @config.expect :includes_h_post_orig_header, nil
119
+ @config.expect :includes_c_pre_header, nil
120
+ @config.expect :includes_c_post_header, nil
121
+ @config.expect :subdir, nil
122
+ @cmock_generator2 = CMockGenerator.new(@config, @file_writer, @utils, @plugins)
123
+ @cmock_generator2.module_name = "Pout-Pout Fish"
124
+ @cmock_generator2.mock_name = "MockPout-Pout Fish"
125
+ @cmock_generator2.clean_mock_name = "MockPout_Pout_Fish"
126
+
127
+ @config.expect :mock_prefix, "Mock"
128
+ orig_filename = "Pout-Pout Fish.h"
129
+ define_name = "MOCKPOUT_POUT_FISH_H"
130
+ mock_name = "MockPout_Pout_Fish"
131
+ output = []
132
+ expected = [
133
+ "/* AUTOGENERATED FILE. DO NOT EDIT. */\n",
134
+ "#ifndef _#{define_name}\n",
135
+ "#define _#{define_name}\n\n",
136
+ "#include \"ConfigRequiredHeader1.h\"\n",
137
+ "#include \"ConfigRequiredHeader2.h\"\n",
138
+ "#include \"#{orig_filename}\"\n",
139
+ "#include \"PluginRequiredHeader.h\"\n",
140
+ "\n",
141
+ "/* Ignore the following warnings, since we are copying code */\n",
142
+ "#if defined(__GNUC__) && !defined(__ICC)\n",
143
+ "#if !defined(__clang__)\n",
144
+ "#pragma GCC diagnostic ignored \"-Wpragmas\"\n",
145
+ "#endif\n",
146
+ "#pragma GCC diagnostic ignored \"-Wunknown-pragmas\"\n",
147
+ "#pragma GCC diagnostic ignored \"-Wduplicate-decl-specifier\"\n",
148
+ "#endif\n",
149
+ "\n",
150
+ ]
151
+
152
+ @config.expect :orig_header_include_fmt, "#include \"%s\""
153
+ @plugins.expect :run, "#include \"PluginRequiredHeader.h\"\n", [:include_files]
154
+
155
+ @cmock_generator2.create_mock_header_header(output, "MockPout-Pout Fish.h")
156
+
157
+ assert_equal(expected, output)
158
+ end
159
+
160
+ it "create the top of a header file with optional include files from config" do
161
+ @config.expect :mock_prefix, "Mock"
162
+ orig_filename = "PoutPoutFish.h"
163
+ define_name = "MOCKPOUTPOUTFISH_H"
164
+ mock_name = "MockPoutPoutFish"
165
+ output = []
166
+ expected = [
167
+ "/* AUTOGENERATED FILE. DO NOT EDIT. */\n",
168
+ "#ifndef _#{define_name}\n",
169
+ "#define _#{define_name}\n\n",
170
+ "#include \"ConfigRequiredHeader1.h\"\n",
171
+ "#include \"ConfigRequiredHeader2.h\"\n",
172
+ "#include \"#{orig_filename}\"\n",
173
+ "\n",
174
+ "/* Ignore the following warnings, since we are copying code */\n",
175
+ "#if defined(__GNUC__) && !defined(__ICC)\n",
176
+ "#if !defined(__clang__)\n",
177
+ "#pragma GCC diagnostic ignored \"-Wpragmas\"\n",
178
+ "#endif\n",
179
+ "#pragma GCC diagnostic ignored \"-Wunknown-pragmas\"\n",
180
+ "#pragma GCC diagnostic ignored \"-Wduplicate-decl-specifier\"\n",
181
+ "#endif\n",
182
+ "\n",
183
+ ]
184
+
185
+ @config.expect :orig_header_include_fmt, "#include \"%s\""
186
+ @plugins.expect :run, '', [:include_files]
187
+
188
+ @cmock_generator.create_mock_header_header(output, "MockPoutPoutFish.h")
189
+
190
+ assert_equal(expected, output)
191
+ end
192
+
193
+ it "create the top of a header file with include file from plugin" do
194
+ @config.expect :mock_prefix, "Mock"
195
+ orig_filename = "PoutPoutFish.h"
196
+ define_name = "MOCKPOUTPOUTFISH_H"
197
+ mock_name = "MockPoutPoutFish"
198
+ output = []
199
+ expected = [
200
+ "/* AUTOGENERATED FILE. DO NOT EDIT. */\n",
201
+ "#ifndef _#{define_name}\n",
202
+ "#define _#{define_name}\n\n",
203
+ "#include \"ConfigRequiredHeader1.h\"\n",
204
+ "#include \"ConfigRequiredHeader2.h\"\n",
205
+ "#include \"#{orig_filename}\"\n",
206
+ "#include \"PluginRequiredHeader.h\"\n",
207
+ "\n",
208
+ "/* Ignore the following warnings, since we are copying code */\n",
209
+ "#if defined(__GNUC__) && !defined(__ICC)\n",
210
+ "#if !defined(__clang__)\n",
211
+ "#pragma GCC diagnostic ignored \"-Wpragmas\"\n",
212
+ "#endif\n",
213
+ "#pragma GCC diagnostic ignored \"-Wunknown-pragmas\"\n",
214
+ "#pragma GCC diagnostic ignored \"-Wduplicate-decl-specifier\"\n",
215
+ "#endif\n",
216
+ "\n",
217
+ ]
218
+
219
+ @config.expect :orig_header_include_fmt, "#include \"%s\""
220
+ @plugins.expect :run, "#include \"PluginRequiredHeader.h\"\n", [:include_files]
221
+
222
+ @cmock_generator.create_mock_header_header(output, "MockPoutPoutFish.h")
223
+
224
+ assert_equal(expected, output)
225
+ end
226
+
227
+ it "write typedefs" do
228
+ typedefs = [ 'typedef unsigned char U8;',
229
+ 'typedef char S8;',
230
+ 'typedef unsigned long U32;'
231
+ ]
232
+ output = []
233
+ expected = [ "\n",
234
+ "typedef unsigned char U8;\n",
235
+ "typedef char S8;\n",
236
+ "typedef unsigned long U32;\n",
237
+ "\n\n"
238
+ ]
239
+
240
+ @cmock_generator.create_typedefs(output, typedefs)
241
+
242
+ assert_equal(expected, output.flatten)
243
+ end
244
+
245
+ it "create the header file service call declarations" do
246
+ mock_name = "MockPoutPoutFish"
247
+
248
+ output = []
249
+ expected = [ "void #{mock_name}_Init(void);\n",
250
+ "void #{mock_name}_Destroy(void);\n",
251
+ "void #{mock_name}_Verify(void);\n\n"
252
+ ]
253
+
254
+ @cmock_generator.create_mock_header_service_call_declarations(output)
255
+
256
+ assert_equal(expected, output)
257
+ end
258
+
259
+ it "append the proper footer to the header file" do
260
+ output = []
261
+ expected = ["\n#endif\n"]
262
+
263
+ @cmock_generator.create_mock_header_footer(output)
264
+
265
+ assert_equal(expected, output)
266
+ end
267
+
268
+ it "create a proper heading for a source file" do
269
+ output = []
270
+ functions = [ { :name => "uno", :args => [ { :name => "arg1" }, { :name => "arg2" } ] },
271
+ { :name => "dos", :args => [ { :name => "arg3" }, { :name => "arg2" } ] },
272
+ { :name => "tres", :args => [] }
273
+ ]
274
+ expected = [ "/* AUTOGENERATED FILE. DO NOT EDIT. */\n",
275
+ "#include <string.h>\n",
276
+ "#include <stdlib.h>\n",
277
+ "#include <setjmp.h>\n",
278
+ "#include \"unity.h\"\n",
279
+ "#include \"cmock.h\"\n",
280
+ "#include \"MockPoutPoutFish.h\"\n",
281
+ "\n",
282
+ "static const char* CMockString_arg1 = \"arg1\";\n",
283
+ "static const char* CMockString_arg2 = \"arg2\";\n",
284
+ "static const char* CMockString_arg3 = \"arg3\";\n",
285
+ "static const char* CMockString_dos = \"dos\";\n",
286
+ "static const char* CMockString_tres = \"tres\";\n",
287
+ "static const char* CMockString_uno = \"uno\";\n",
288
+ "\n"
289
+ ]
290
+
291
+ @cmock_generator.create_source_header_section(output, "MockPoutPoutFish.c", functions)
292
+
293
+ assert_equal(expected, output)
294
+ end
295
+
296
+ it "create the instance structure where it is needed when no functions" do
297
+ output = []
298
+ functions = []
299
+ expected = [ "static struct MockPoutPoutFishInstance\n",
300
+ "{\n",
301
+ " unsigned char placeHolder;\n",
302
+ "} Mock;\n\n"
303
+ ].join
304
+
305
+ @cmock_generator.create_instance_structure(output, functions)
306
+
307
+ assert_equal(expected, output.join)
308
+ end
309
+
310
+ it "create the instance structure where it is needed when functions required" do
311
+ output = []
312
+ functions = [ { :name => "First", :args => "int Candy", :return => test_return[:int] },
313
+ { :name => "Second", :args => "bool Smarty", :return => test_return[:string] }
314
+ ]
315
+ expected = [ "typedef struct _CMOCK_First_CALL_INSTANCE\n{\n",
316
+ " UNITY_LINE_TYPE LineNumber;\n",
317
+ " b1 b2",
318
+ "\n} CMOCK_First_CALL_INSTANCE;\n\n",
319
+ "typedef struct _CMOCK_Second_CALL_INSTANCE\n{\n",
320
+ " UNITY_LINE_TYPE LineNumber;\n",
321
+ "\n} CMOCK_Second_CALL_INSTANCE;\n\n",
322
+ "static struct MockPoutPoutFishInstance\n{\n",
323
+ " d1",
324
+ " CMOCK_MEM_INDEX_TYPE First_CallInstance;\n",
325
+ " e1 e2 e3",
326
+ " CMOCK_MEM_INDEX_TYPE Second_CallInstance;\n",
327
+ "} Mock;\n\n"
328
+ ].join
329
+ @plugins.expect :run, [" b1"," b2"], [:instance_typedefs, functions[0]]
330
+ @plugins.expect :run, [], [:instance_typedefs, functions[1]]
331
+
332
+ @plugins.expect :run, [" d1"], [:instance_structure, functions[0]]
333
+ @plugins.expect :run, [" e1"," e2"," e3"], [:instance_structure, functions[1]]
334
+
335
+ @cmock_generator.create_instance_structure(output, functions)
336
+
337
+ assert_equal(expected, output.join)
338
+ end
339
+
340
+ it "create extern declarations for source file" do
341
+ output = []
342
+ expected = [ "extern jmp_buf AbortFrame;\n",
343
+ "\n" ]
344
+
345
+ @cmock_generator.create_extern_declarations(output)
346
+
347
+ assert_equal(expected, output.flatten)
348
+ end
349
+
350
+ it "create extern declarations for source file when using strict ordering" do
351
+ output = []
352
+ expected = [ "extern jmp_buf AbortFrame;\n",
353
+ "extern int GlobalExpectCount;\n",
354
+ "extern int GlobalVerifyOrder;\n",
355
+ "\n" ]
356
+
357
+ @cmock_generator_strict.create_extern_declarations(output)
358
+
359
+ assert_equal(expected, output.flatten)
360
+ end
361
+
362
+ it "create mock verify functions in source file when no functions specified" do
363
+ functions = []
364
+ output = []
365
+ expected = "void MockPoutPoutFish_Verify(void)\n{\n}\n\n"
366
+
367
+ @cmock_generator.create_mock_verify_function(output, functions)
368
+
369
+ assert_equal(expected, output.join)
370
+ end
371
+
372
+ it "create mock verify functions in source file when extra functions specified" do
373
+ functions = [ { :name => "First", :args => "int Candy", :return => test_return[:int] },
374
+ { :name => "Second", :args => "bool Smarty", :return => test_return[:string] }
375
+ ]
376
+ output = []
377
+ expected = [ "void MockPoutPoutFish_Verify(void)\n{\n",
378
+ " UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM;\n",
379
+ " Uno_First" +
380
+ " Dos_First" +
381
+ " Uno_Second" +
382
+ " Dos_Second",
383
+ "}\n\n"
384
+ ]
385
+ @plugins.expect :run, [" Uno_First"," Dos_First"], [:mock_verify, functions[0]]
386
+ @plugins.expect :run, [" Uno_Second"," Dos_Second"], [:mock_verify, functions[1]]
387
+
388
+ @cmock_generator.ordered = true
389
+ @cmock_generator.create_mock_verify_function(output, functions)
390
+
391
+ assert_equal(expected, output.flatten)
392
+ end
393
+
394
+ it "create mock init functions in source file" do
395
+ output = []
396
+ expected = [ "void MockPoutPoutFish_Init(void)\n{\n",
397
+ " MockPoutPoutFish_Destroy();\n",
398
+ "}\n\n"
399
+ ]
400
+
401
+ @cmock_generator.create_mock_init_function(output)
402
+
403
+ assert_equal(expected.join, output.join)
404
+ end
405
+
406
+ it "create mock destroy functions in source file" do
407
+ functions = []
408
+ output = []
409
+ expected = [ "void MockPoutPoutFish_Destroy(void)\n{\n",
410
+ " CMock_Guts_MemFreeAll();\n",
411
+ " memset(&Mock, 0, sizeof(Mock));\n",
412
+ "}\n\n"
413
+ ]
414
+
415
+ @cmock_generator.create_mock_destroy_function(output, functions)
416
+
417
+ assert_equal(expected.join, output.join)
418
+ end
419
+
420
+ it "create mock destroy functions in source file when specified with strict ordering" do
421
+ functions = [ { :name => "First", :args => "int Candy", :return => test_return[:int] },
422
+ { :name => "Second", :args => "bool Smarty", :return => test_return[:string] }
423
+ ]
424
+ output = []
425
+ expected = [ "void MockPoutPoutFish_Destroy(void)\n{\n",
426
+ " CMock_Guts_MemFreeAll();\n",
427
+ " memset(&Mock, 0, sizeof(Mock));\n",
428
+ " uno",
429
+ " GlobalExpectCount = 0;\n",
430
+ " GlobalVerifyOrder = 0;\n",
431
+ "}\n\n"
432
+ ]
433
+ @plugins.expect :run, [], [:mock_destroy, functions[0]]
434
+ @plugins.expect :run, [" uno"], [:mock_destroy, functions[1]]
435
+
436
+ @cmock_generator_strict.create_mock_destroy_function(output, functions)
437
+
438
+ assert_equal(expected.join, output.join)
439
+ end
440
+
441
+ it "create mock implementation functions in source file" do
442
+ function = { :modifier => "static",
443
+ :return => test_return[:int],
444
+ :args_string => "uint32 sandwiches, const char* named",
445
+ :args => ["uint32 sandwiches", "const char* named"],
446
+ :var_arg => nil,
447
+ :name => "SupaFunction",
448
+ :attributes => "__inline"
449
+ }
450
+ output = []
451
+ expected = [ "static int SupaFunction(uint32 sandwiches, const char* named)\n",
452
+ "{\n",
453
+ " UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM;\n",
454
+ " UNITY_SET_DETAIL(CMockString_SupaFunction);\n",
455
+ " CMOCK_SupaFunction_CALL_INSTANCE* cmock_call_instance = (CMOCK_SupaFunction_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.SupaFunction_CallInstance);\n",
456
+ " Mock.SupaFunction_CallInstance = CMock_Guts_MemNext(Mock.SupaFunction_CallInstance);\n",
457
+ " uno",
458
+ " UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore);\n",
459
+ " cmock_line = cmock_call_instance->LineNumber;\n",
460
+ " dos",
461
+ " tres",
462
+ " UNITY_CLR_DETAILS();\n",
463
+ " return cmock_call_instance->ReturnVal;\n",
464
+ "}\n\n"
465
+ ]
466
+ @plugins.expect :run, [" uno"], [:mock_implementation_precheck, function]
467
+ @plugins.expect :run, [" dos"," tres"], [:mock_implementation, function]
468
+
469
+ @cmock_generator.create_mock_implementation(output, function)
470
+
471
+ assert_equal(expected.join, output.join)
472
+ end
473
+
474
+ it "create mock implementation functions in source file with different options" do
475
+ function = { :modifier => "",
476
+ :c_calling_convention => "__stdcall",
477
+ :return => test_return[:int],
478
+ :args_string => "uint32 sandwiches",
479
+ :args => ["uint32 sandwiches"],
480
+ :var_arg => "corn ...",
481
+ :name => "SupaFunction",
482
+ :attributes => nil
483
+ }
484
+ output = []
485
+ expected = [ "int __stdcall SupaFunction(uint32 sandwiches, corn ...)\n",
486
+ "{\n",
487
+ " UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM;\n",
488
+ " UNITY_SET_DETAIL(CMockString_SupaFunction);\n",
489
+ " CMOCK_SupaFunction_CALL_INSTANCE* cmock_call_instance = (CMOCK_SupaFunction_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.SupaFunction_CallInstance);\n",
490
+ " Mock.SupaFunction_CallInstance = CMock_Guts_MemNext(Mock.SupaFunction_CallInstance);\n",
491
+ " uno",
492
+ " UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore);\n",
493
+ " cmock_line = cmock_call_instance->LineNumber;\n",
494
+ " dos",
495
+ " tres",
496
+ " UNITY_CLR_DETAILS();\n",
497
+ " return cmock_call_instance->ReturnVal;\n",
498
+ "}\n\n"
499
+ ]
500
+ @plugins.expect :run, [" uno"], [:mock_implementation_precheck, function]
501
+ @plugins.expect :run, [" dos"," tres"], [:mock_implementation, function]
502
+
503
+ @cmock_generator.create_mock_implementation(output, function)
504
+
505
+ assert_equal(expected.join, output.join)
506
+ end
507
+ end