ceedling 0.18.0 → 0.19.0

Sign up to get free protection for your applications and to get access to all the features.
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