ceedling 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +18 -14
  4. data/README.md +6 -4
  5. data/assets/project_as_gem.yml +1 -1
  6. data/assets/rakefile_as_gem.rb +2 -0
  7. data/assets/rakefile_with_guts.rb +3 -1
  8. data/ceedling.gemspec +1 -0
  9. data/examples/blinky/rakefile.rb +2 -2
  10. data/examples/temp_sensor/rakefile.rb +1 -1
  11. data/examples/temp_sensor/src/TemperatureFilter.c +1 -2
  12. data/examples/temp_sensor/test/TestTemperatureCalculator.c +1 -1
  13. data/examples/temp_sensor/test/TestTemperatureFilter.c +12 -2
  14. data/lib/ceedling.rb +94 -22
  15. data/lib/{build_invoker_utils.rb → ceedling/build_invoker_utils.rb} +27 -27
  16. data/lib/{cacheinator.rb → ceedling/cacheinator.rb} +42 -42
  17. data/lib/{cacheinator_helper.rb → ceedling/cacheinator_helper.rb} +12 -12
  18. data/lib/{cmock_builder.rb → ceedling/cmock_builder.rb} +15 -15
  19. data/lib/{configurator.rb → ceedling/configurator.rb} +333 -329
  20. data/lib/{configurator_builder.rb → ceedling/configurator_builder.rb} +437 -437
  21. data/lib/{configurator_plugins.rb → ceedling/configurator_plugins.rb} +124 -124
  22. data/lib/{configurator_setup.rb → ceedling/configurator_setup.rb} +124 -124
  23. data/lib/{configurator_validator.rb → ceedling/configurator_validator.rb} +184 -184
  24. data/lib/{constants.rb → ceedling/constants.rb} +20 -17
  25. data/lib/{defaults.rb → ceedling/defaults.rb} +19 -18
  26. data/lib/{dependinator.rb → ceedling/dependinator.rb} +92 -92
  27. data/lib/{erb_wrapper.rb → ceedling/erb_wrapper.rb} +8 -8
  28. data/lib/{file_finder.rb → ceedling/file_finder.rb} +132 -132
  29. data/lib/{file_finder_helper.rb → ceedling/file_finder_helper.rb} +54 -54
  30. data/lib/{file_path_utils.rb → ceedling/file_path_utils.rb} +189 -189
  31. data/lib/{file_system_utils.rb → ceedling/file_system_utils.rb} +69 -69
  32. data/lib/{file_system_wrapper.rb → ceedling/file_system_wrapper.rb} +9 -9
  33. data/lib/{file_wrapper.rb → ceedling/file_wrapper.rb} +79 -79
  34. data/lib/{flaginator.rb → ceedling/flaginator.rb} +54 -54
  35. data/lib/{generator.rb → ceedling/generator.rb} +164 -164
  36. data/lib/{generator_helper.rb → ceedling/generator_helper.rb} +40 -40
  37. data/lib/{generator_test_results.rb → ceedling/generator_test_results.rb} +86 -89
  38. data/lib/{generator_test_results_sanity_checker.rb → ceedling/generator_test_results_sanity_checker.rb} +64 -62
  39. data/lib/{generator_test_runner.rb → ceedling/generator_test_runner.rb} +63 -63
  40. data/lib/{loginator.rb → ceedling/loginator.rb} +31 -31
  41. data/lib/{makefile.rb → ceedling/makefile.rb} +0 -0
  42. data/lib/{objects.yml → ceedling/objects.yml} +0 -0
  43. data/lib/{par_map.rb → ceedling/par_map.rb} +0 -0
  44. data/lib/{plugin.rb → ceedling/plugin.rb} +80 -80
  45. data/lib/{plugin_builder.rb → ceedling/plugin_builder.rb} +52 -52
  46. data/lib/{plugin_manager.rb → ceedling/plugin_manager.rb} +107 -107
  47. data/lib/{plugin_manager_helper.rb → ceedling/plugin_manager_helper.rb} +19 -19
  48. data/lib/{plugin_reportinator.rb → ceedling/plugin_reportinator.rb} +2 -2
  49. data/lib/{plugin_reportinator_helper.rb → ceedling/plugin_reportinator_helper.rb} +1 -1
  50. data/lib/{preprocessinator.rb → ceedling/preprocessinator.rb} +43 -43
  51. data/lib/{preprocessinator_extractor.rb → ceedling/preprocessinator_extractor.rb} +30 -30
  52. data/lib/{preprocessinator_file_handler.rb → ceedling/preprocessinator_file_handler.rb} +21 -21
  53. data/lib/{preprocessinator_helper.rb → ceedling/preprocessinator_helper.rb} +46 -46
  54. data/lib/ceedling/preprocessinator_includes_handler.rb +82 -0
  55. data/lib/{project_config_manager.rb → ceedling/project_config_manager.rb} +38 -38
  56. data/lib/{project_file_loader.rb → ceedling/project_file_loader.rb} +64 -64
  57. data/lib/{rake_utils.rb → ceedling/rake_utils.rb} +17 -17
  58. data/lib/{rake_wrapper.rb → ceedling/rake_wrapper.rb} +33 -33
  59. data/lib/{rakefile.rb → ceedling/rakefile.rb} +78 -74
  60. data/lib/{release_invoker.rb → ceedling/release_invoker.rb} +58 -58
  61. data/lib/{release_invoker_helper.rb → ceedling/release_invoker_helper.rb} +16 -16
  62. data/lib/{reportinator.rb → ceedling/reportinator.rb} +9 -9
  63. data/lib/{rules_cmock.rake → ceedling/rules_cmock.rake} +9 -9
  64. data/lib/{rules_preprocess.rake → ceedling/rules_preprocess.rake} +26 -26
  65. data/lib/{rules_release.rake → ceedling/rules_release.rake} +79 -79
  66. data/lib/{rules_release_deep_dependencies.rake → ceedling/rules_release_deep_dependencies.rake} +15 -15
  67. data/lib/{rules_tests.rake → ceedling/rules_tests.rake} +59 -59
  68. data/lib/{rules_tests_deep_dependencies.rake → ceedling/rules_tests_deep_dependencies.rake} +15 -15
  69. data/lib/{setupinator.rb → ceedling/setupinator.rb} +51 -51
  70. data/lib/{stream_wrapper.rb → ceedling/stream_wrapper.rb} +20 -20
  71. data/lib/{streaminator.rb → ceedling/streaminator.rb} +40 -41
  72. data/lib/{streaminator_helper.rb → ceedling/streaminator_helper.rb} +15 -15
  73. data/lib/{system_utils.rb → ceedling/system_utils.rb} +0 -0
  74. data/lib/{system_wrapper.rb → ceedling/system_wrapper.rb} +76 -76
  75. data/lib/{target_loader.rb → ceedling/target_loader.rb} +0 -0
  76. data/lib/{task_invoker.rb → ceedling/task_invoker.rb} +89 -89
  77. data/lib/{tasks_base.rake → ceedling/tasks_base.rake} +104 -104
  78. data/lib/{tasks_filesystem.rake → ceedling/tasks_filesystem.rake} +91 -91
  79. data/lib/{tasks_release.rake → ceedling/tasks_release.rake} +28 -28
  80. data/lib/{tasks_release_deep_dependencies.rake → ceedling/tasks_release_deep_dependencies.rake} +9 -9
  81. data/lib/{tasks_tests.rake → ceedling/tasks_tests.rake} +52 -52
  82. data/lib/{tasks_tests_deep_dependencies.rake → ceedling/tasks_tests_deep_dependencies.rake} +9 -9
  83. data/lib/{tasks_vendor.rake → ceedling/tasks_vendor.rake} +36 -36
  84. data/lib/{test_includes_extractor.rb → ceedling/test_includes_extractor.rb} +81 -81
  85. data/lib/{test_invoker.rb → ceedling/test_invoker.rb} +97 -97
  86. data/lib/{test_invoker_helper.rb → ceedling/test_invoker_helper.rb} +28 -28
  87. data/lib/{tool_executor.rb → ceedling/tool_executor.rb} +215 -212
  88. data/lib/{tool_executor_helper.rb → ceedling/tool_executor_helper.rb} +115 -115
  89. data/lib/{verbosinator.rb → ceedling/verbosinator.rb} +10 -10
  90. data/lib/ceedling/version.rb +1 -1
  91. data/lib/{yaml_wrapper.rb → ceedling/yaml_wrapper.rb} +17 -16
  92. data/license.txt +31 -0
  93. data/plugins/bullseye/lib/bullseye.rb +2 -2
  94. data/plugins/gcov/gcov.rb +2 -2
  95. data/plugins/module_generator/lib/module_generator.rb +4 -3
  96. data/plugins/stdout_ide_tests_report/lib/stdout_ide_tests_report.rb +8 -8
  97. data/plugins/stdout_pretty_tests_report/lib/stdout_pretty_tests_report.rb +3 -3
  98. data/plugins/teamcity_tests_report/config/teamcity_tests_report.yml +4 -0
  99. data/plugins/teamcity_tests_report/lib/teamcity_tests_report.rb +57 -0
  100. data/plugins/xml_tests_report/xml_tests_report.rb +4 -4
  101. data/release/version.info +1 -1
  102. data/spec/ceedling_spec.rb +154 -0
  103. data/spec/par_map_spec.rb +1 -1
  104. data/spec/preprocessinator_extractor_spec.rb +26 -27
  105. data/spec/preprocessinator_includes_handler_spec.rb +175 -0
  106. data/spec/spec_helper.rb +8 -27
  107. data/test_graveyard/integration/paths_test.rb +2 -2
  108. data/test_graveyard/unit/busted/configurator_builder_test.rb +2 -2
  109. data/test_graveyard/unit/busted/configurator_test.rb +1 -1
  110. data/test_graveyard/unit/busted/configurator_validator_test.rb +1 -1
  111. data/test_graveyard/unit/busted/dependinator_test.rb +1 -1
  112. data/test_graveyard/unit/busted/file_finder_helper_test.rb +1 -1
  113. data/test_graveyard/unit/busted/file_finder_test.rb +1 -1
  114. data/test_graveyard/unit/busted/file_path_utils_test.rb +1 -1
  115. data/test_graveyard/unit/busted/file_system_utils_test.rb +1 -1
  116. data/test_graveyard/unit/busted/generator_test.rb +1 -1
  117. data/test_graveyard/unit/busted/generator_test_results_test.rb +1 -1
  118. data/test_graveyard/unit/busted/generator_test_runner_test.rb +1 -1
  119. data/test_graveyard/unit/busted/preprocessinator_file_handler_test.rb +1 -1
  120. data/test_graveyard/unit/busted/preprocessinator_helper_test.rb +1 -1
  121. data/test_graveyard/unit/busted/preprocessinator_includes_handler_test.rb +1 -1
  122. data/test_graveyard/unit/busted/preprocessinator_test.rb +1 -1
  123. data/test_graveyard/unit/busted/project_file_loader_test.rb +1 -1
  124. data/test_graveyard/unit/busted/setupinator_test.rb +1 -1
  125. data/test_graveyard/unit/busted/streaminator_test.rb +2 -2
  126. data/test_graveyard/unit/busted/task_invoker_test.rb +1 -1
  127. data/test_graveyard/unit/busted/test_includes_extractor_test.rb +1 -1
  128. data/test_graveyard/unit/busted/test_invoker_helper_test.rb +1 -1
  129. data/test_graveyard/unit/busted/test_invoker_test.rb +1 -1
  130. data/test_graveyard/unit/busted/tool_executor_helper_test.rb +1 -1
  131. data/test_graveyard/unit/busted/tool_executor_test.rb +1 -1
  132. data/test_graveyard/unit/busted/verbosinator_test.rb +1 -1
  133. data/test_graveyard/unit/preprocessinator_extractor_test.rb +1 -1
  134. data/vendor/c_exception/Gemfile +4 -0
  135. data/vendor/c_exception/lib/CException.h +1 -1
  136. data/vendor/c_exception/test/TestException.c +25 -14
  137. data/vendor/c_exception/test/TestException_Runner.c +74 -57
  138. data/vendor/cmock/Gemfile +11 -0
  139. data/vendor/cmock/lib/cmock_generator.rb +13 -12
  140. data/vendor/cmock/lib/cmock_generator_plugin_ignore_arg.rb +44 -0
  141. data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +74 -0
  142. data/vendor/cmock/lib/cmock_generator_utils.rb +67 -42
  143. data/vendor/cmock/src/cmock.c +20 -30
  144. data/vendor/cmock/src/cmock.h +1 -0
  145. data/vendor/cmock/src/cmock_internals.h +43 -0
  146. data/vendor/cmock/test/c/TestCMockC.c +79 -36
  147. data/vendor/cmock/test/c/TestCMockC_Runner.c +2 -0
  148. data/vendor/cmock/test/spec/cmock_file_writer_spec.rb +21 -1
  149. data/vendor/cmock/test/spec/cmock_generator_plugin_array_spec.rb +52 -0
  150. data/vendor/cmock/test/system/test_interactions/all_plugins_coexist.yml +2 -0
  151. data/vendor/cmock/test/system/test_interactions/return_thru_ptr_ignore_arg.yml +235 -0
  152. data/vendor/cmock/test/test_helper.rb +10 -5
  153. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +38 -0
  154. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_arg_test.rb +116 -0
  155. data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +134 -0
  156. data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +58 -33
  157. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
  158. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
  159. data/vendor/cmock/vendor/c_exception/docs/license.txt +30 -0
  160. data/vendor/cmock/vendor/c_exception/docs/readme.txt +236 -0
  161. data/vendor/cmock/vendor/c_exception/lib/CException.c +39 -0
  162. data/vendor/cmock/vendor/c_exception/lib/CException.h +70 -0
  163. data/vendor/cmock/vendor/c_exception/makefile +24 -0
  164. data/vendor/cmock/vendor/c_exception/rakefile.rb +41 -0
  165. data/vendor/cmock/vendor/c_exception/release/build.info +2 -0
  166. data/vendor/cmock/vendor/c_exception/release/version.info +2 -0
  167. data/vendor/cmock/vendor/c_exception/test/CExceptionConfig.h +27 -0
  168. data/vendor/cmock/vendor/c_exception/test/TestException.c +291 -0
  169. data/vendor/cmock/vendor/c_exception/test/TestException_Runner.c +62 -0
  170. data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +94 -0
  171. data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +39 -0
  172. data/vendor/cmock/vendor/unity/auto/generate_config.yml +36 -0
  173. data/vendor/cmock/vendor/unity/auto/generate_module.rb +202 -0
  174. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +313 -0
  175. data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +23 -0
  176. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +139 -0
  177. data/vendor/cmock/vendor/unity/docs/Unity Summary.odt +0 -0
  178. data/vendor/cmock/vendor/unity/docs/Unity Summary.pdf +0 -0
  179. data/vendor/cmock/vendor/unity/docs/Unity Summary.txt +217 -0
  180. data/vendor/cmock/vendor/unity/docs/license.txt +31 -0
  181. data/vendor/cmock/vendor/unity/examples/helper/UnityHelper.c +10 -0
  182. data/vendor/cmock/vendor/unity/examples/helper/UnityHelper.h +12 -0
  183. data/vendor/cmock/vendor/unity/examples/makefile +40 -0
  184. data/vendor/cmock/vendor/unity/examples/rakefile.rb +32 -0
  185. data/vendor/cmock/vendor/unity/examples/rakefile_helper.rb +256 -0
  186. data/vendor/cmock/vendor/unity/examples/readme.txt +18 -0
  187. data/vendor/cmock/vendor/unity/examples/src/ProductionCode.c +24 -0
  188. data/vendor/cmock/vendor/unity/examples/src/ProductionCode.h +3 -0
  189. data/vendor/cmock/vendor/unity/examples/src/ProductionCode2.c +9 -0
  190. data/vendor/cmock/vendor/unity/examples/src/ProductionCode2.h +2 -0
  191. data/vendor/cmock/vendor/unity/examples/test/TestProductionCode.c +62 -0
  192. data/vendor/cmock/vendor/unity/examples/test/TestProductionCode2.c +31 -0
  193. data/vendor/cmock/vendor/unity/examples/test/no_ruby/TestProductionCode2_Runner.c +46 -0
  194. data/vendor/cmock/vendor/unity/examples/test/no_ruby/TestProductionCode_Runner.c +50 -0
  195. data/vendor/{unity → cmock/vendor/unity}/extras/fixture/build/MakefileWorker.mk +0 -0
  196. data/vendor/{unity → cmock/vendor/unity}/extras/fixture/build/filterGcov.sh +0 -0
  197. data/vendor/cmock/vendor/unity/extras/fixture/rakefile.rb +37 -0
  198. data/vendor/cmock/vendor/unity/extras/fixture/rakefile_helper.rb +178 -0
  199. data/vendor/cmock/vendor/unity/extras/fixture/readme.txt +9 -0
  200. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +381 -0
  201. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +81 -0
  202. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +44 -0
  203. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +16 -0
  204. data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +21 -0
  205. data/vendor/cmock/vendor/unity/extras/fixture/test/testunity_fixture.c +39 -0
  206. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +321 -0
  207. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +40 -0
  208. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.c +56 -0
  209. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
  210. data/vendor/cmock/vendor/unity/makefile +35 -0
  211. data/vendor/cmock/vendor/unity/rakefile.rb +48 -0
  212. data/vendor/cmock/vendor/unity/rakefile_helper.rb +240 -0
  213. data/vendor/cmock/vendor/unity/release/build.info +2 -0
  214. data/vendor/cmock/vendor/unity/release/version.info +2 -0
  215. data/vendor/cmock/vendor/unity/src/unity.c +979 -0
  216. data/vendor/cmock/vendor/unity/src/unity.h +232 -0
  217. data/vendor/cmock/vendor/unity/src/unity_internals.h +424 -0
  218. data/vendor/cmock/vendor/unity/targets/gcc.yml +43 -0
  219. data/vendor/cmock/vendor/unity/targets/gcc_64.yml +44 -0
  220. data/vendor/cmock/vendor/unity/targets/hitech_picc18.yml +101 -0
  221. data/vendor/cmock/vendor/unity/targets/iar_arm_v4.yml +89 -0
  222. data/vendor/cmock/vendor/unity/targets/iar_arm_v5.yml +79 -0
  223. data/vendor/cmock/vendor/unity/targets/iar_arm_v5_3.yml +79 -0
  224. data/vendor/cmock/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -0
  225. data/vendor/cmock/vendor/unity/targets/iar_cortexm3_v5.yml +83 -0
  226. data/vendor/cmock/vendor/unity/targets/iar_msp430.yml +94 -0
  227. data/vendor/cmock/vendor/unity/targets/iar_sh2a_v6.yml +85 -0
  228. data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +54 -0
  229. data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +50 -0
  230. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_cmd.c +76 -0
  231. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_def.c +72 -0
  232. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new1.c +85 -0
  233. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new2.c +85 -0
  234. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_param.c +73 -0
  235. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run1.c +85 -0
  236. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run2.c +85 -0
  237. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_yaml.c +86 -0
  238. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +60 -0
  239. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +63 -0
  240. data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +51 -0
  241. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +60 -0
  242. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +63 -0
  243. data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +64 -0
  244. data/vendor/cmock/vendor/unity/test/test_generate_test_runner.rb +94 -0
  245. data/vendor/cmock/vendor/unity/test/testdata/mocksample.c +51 -0
  246. data/vendor/cmock/vendor/unity/test/testdata/sample.yml +9 -0
  247. data/vendor/cmock/vendor/unity/test/testdata/testsample.c +51 -0
  248. data/vendor/cmock/vendor/unity/test/testparameterized.c +101 -0
  249. data/vendor/cmock/vendor/unity/test/testunity.c +2024 -0
  250. data/vendor/unity/Gemfile +4 -0
  251. data/vendor/unity/auto/generate_test_runner.rb +6 -3
  252. data/vendor/unity/examples/makefile +2 -2
  253. data/vendor/unity/examples/rakefile.rb +13 -2
  254. data/vendor/unity/extras/fixture/rakefile.rb +1 -1
  255. data/vendor/unity/extras/fixture/rakefile_helper.rb +4 -3
  256. data/vendor/unity/extras/fixture/src/unity_fixture.c +15 -12
  257. data/vendor/unity/extras/fixture/src/unity_fixture.h +5 -5
  258. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +1 -1
  259. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +6 -3
  260. data/vendor/unity/makefile +2 -2
  261. data/vendor/unity/src/unity.c +183 -16
  262. data/vendor/unity/src/unity.h +18 -5
  263. data/vendor/unity/src/unity_internals.h +57 -23
  264. data/vendor/unity/targets/gcc_64.yml +45 -0
  265. data/vendor/unity/test/testunity.c +436 -28
  266. metadata +200 -137
  267. data/ceedling-0.13.0.rc4.gem +0 -0
  268. data/ceedling.sublime-project +0 -8
  269. data/ceedling.sublime-workspace +0 -365
  270. data/lib/preprocessinator_includes_handler.rb +0 -55
  271. data/tags +0 -977
  272. data/vendor/cmock/vendor/hardmock/CHANGES +0 -78
  273. data/vendor/cmock/vendor/hardmock/LICENSE +0 -7
  274. data/vendor/cmock/vendor/hardmock/README +0 -70
  275. data/vendor/cmock/vendor/hardmock/Rakefile +0 -8
  276. data/vendor/cmock/vendor/hardmock/config/environment.rb +0 -12
  277. data/vendor/cmock/vendor/hardmock/lib/assert_error.rb +0 -23
  278. data/vendor/cmock/vendor/hardmock/lib/extend_test_unit.rb +0 -14
  279. data/vendor/cmock/vendor/hardmock/lib/hardmock.rb +0 -86
  280. data/vendor/cmock/vendor/hardmock/lib/hardmock/errors.rb +0 -22
  281. data/vendor/cmock/vendor/hardmock/lib/hardmock/expectation.rb +0 -229
  282. data/vendor/cmock/vendor/hardmock/lib/hardmock/expectation_builder.rb +0 -9
  283. data/vendor/cmock/vendor/hardmock/lib/hardmock/expector.rb +0 -26
  284. data/vendor/cmock/vendor/hardmock/lib/hardmock/method_cleanout.rb +0 -33
  285. data/vendor/cmock/vendor/hardmock/lib/hardmock/mock.rb +0 -180
  286. data/vendor/cmock/vendor/hardmock/lib/hardmock/mock_control.rb +0 -53
  287. data/vendor/cmock/vendor/hardmock/lib/hardmock/stubbing.rb +0 -210
  288. data/vendor/cmock/vendor/hardmock/lib/hardmock/trapper.rb +0 -31
  289. data/vendor/cmock/vendor/hardmock/lib/hardmock/utils.rb +0 -9
  290. data/vendor/cmock/vendor/hardmock/lib/test_unit_before_after.rb +0 -169
  291. data/vendor/cmock/vendor/hardmock/rake_tasks/rdoc.rake +0 -19
  292. data/vendor/cmock/vendor/hardmock/rake_tasks/rdoc_options.rb +0 -4
  293. data/vendor/cmock/vendor/hardmock/rake_tasks/test.rake +0 -22
  294. data/vendor/cmock/vendor/hardmock/test/functional/assert_error_test.rb +0 -52
  295. data/vendor/cmock/vendor/hardmock/test/functional/auto_verify_test.rb +0 -178
  296. data/vendor/cmock/vendor/hardmock/test/functional/direct_mock_usage_test.rb +0 -396
  297. data/vendor/cmock/vendor/hardmock/test/functional/hardmock_test.rb +0 -434
  298. data/vendor/cmock/vendor/hardmock/test/functional/stubbing_test.rb +0 -479
  299. data/vendor/cmock/vendor/hardmock/test/test_helper.rb +0 -43
  300. data/vendor/cmock/vendor/hardmock/test/unit/expectation_builder_test.rb +0 -19
  301. data/vendor/cmock/vendor/hardmock/test/unit/expectation_test.rb +0 -372
  302. data/vendor/cmock/vendor/hardmock/test/unit/expector_test.rb +0 -57
  303. data/vendor/cmock/vendor/hardmock/test/unit/method_cleanout_test.rb +0 -36
  304. data/vendor/cmock/vendor/hardmock/test/unit/mock_control_test.rb +0 -175
  305. data/vendor/cmock/vendor/hardmock/test/unit/mock_test.rb +0 -279
  306. data/vendor/cmock/vendor/hardmock/test/unit/test_unit_before_after_test.rb +0 -452
  307. data/vendor/cmock/vendor/hardmock/test/unit/trapper_test.rb +0 -62
  308. data/vendor/cmock/vendor/hardmock/test/unit/verify_error_test.rb +0 -40
@@ -20,6 +20,7 @@
20
20
  CMOCK_MEM_INDEX_TYPE CMock_Guts_MemNew(CMOCK_MEM_INDEX_TYPE size);
21
21
  CMOCK_MEM_INDEX_TYPE CMock_Guts_MemChain(CMOCK_MEM_INDEX_TYPE root_index, CMOCK_MEM_INDEX_TYPE obj_index);
22
22
  CMOCK_MEM_INDEX_TYPE CMock_Guts_MemNext(CMOCK_MEM_INDEX_TYPE previous_item_index);
23
+ CMOCK_MEM_INDEX_TYPE CMock_Guts_MemEndOfChain(CMOCK_MEM_INDEX_TYPE root_index);
23
24
 
24
25
  void* CMock_Guts_GetAddressFor(CMOCK_MEM_INDEX_TYPE index);
25
26
 
@@ -0,0 +1,43 @@
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
+ #ifndef CMOCK_FRAMEWORK_INTERNALS_H
8
+ #define CMOCK_FRAMEWORK_INTERNALS_H
9
+
10
+ #include "cmock.h"
11
+
12
+ //define CMOCK_MEM_DYNAMIC to grab memory as needed with malloc
13
+ //when you do that, CMOCK_MEM_SIZE is used for incremental size instead of total
14
+ #ifdef CMOCK_MEM_STATIC
15
+ #undef CMOCK_MEM_DYNAMIC
16
+ #endif
17
+
18
+ #ifdef CMOCK_MEM_DYNAMIC
19
+ #include <stdlib.h>
20
+ #endif
21
+
22
+ //this is used internally during pointer arithmetic. make sure this type is the same size as the target's pointer type
23
+ #ifndef CMOCK_MEM_PTR_AS_INT
24
+ #define CMOCK_MEM_PTR_AS_INT unsigned long
25
+ #endif
26
+
27
+ //0 for no alignment, 1 for 16-bit, 2 for 32-bit, 3 for 64-bit
28
+ #ifndef CMOCK_MEM_ALIGN
29
+ #define CMOCK_MEM_ALIGN (2)
30
+ #endif
31
+
32
+ //amount of memory to allow cmock to use in its internal heap
33
+ #ifndef CMOCK_MEM_SIZE
34
+ #define CMOCK_MEM_SIZE (32768)
35
+ #endif
36
+
37
+ //automatically calculated defs for easier reading
38
+ #define CMOCK_MEM_ALIGN_SIZE (1u << CMOCK_MEM_ALIGN)
39
+ #define CMOCK_MEM_ALIGN_MASK (CMOCK_MEM_ALIGN_SIZE - 1)
40
+ #define CMOCK_MEM_INDEX_SIZE (CMOCK_MEM_PTR_AS_INT)((sizeof(CMOCK_MEM_INDEX_TYPE) > CMOCK_MEM_ALIGN_SIZE) ? sizeof(CMOCK_MEM_INDEX_TYPE) : CMOCK_MEM_ALIGN_SIZE)
41
+
42
+
43
+ #endif //CMOCK_FRAMEWORK_INTERNALS
@@ -5,7 +5,7 @@
5
5
  ========================================== */
6
6
 
7
7
  #include "unity.h"
8
- #include "cmock.h"
8
+ #include "cmock_internals.h"
9
9
 
10
10
  #define TEST_MEM_INDEX_SIZE (sizeof(CMOCK_MEM_INDEX_TYPE))
11
11
 
@@ -21,7 +21,7 @@ void tearDown(void)
21
21
  void test_MemNewWillReturnNullIfGivenIllegalSizes(void)
22
22
  {
23
23
  TEST_ASSERT_EQUAL_HEX( CMOCK_GUTS_NONE, CMock_Guts_MemNew(0) );
24
- TEST_ASSERT_EQUAL_HEX( CMOCK_GUTS_NONE, CMock_Guts_MemNew(CMOCK_MEM_SIZE - TEST_MEM_INDEX_SIZE + 1) );
24
+ TEST_ASSERT_EQUAL_HEX( CMOCK_GUTS_NONE, CMock_Guts_MemNew(CMOCK_MEM_SIZE - TEST_MEM_INDEX_SIZE + 1) );
25
25
  TEST_ASSERT_NULL( CMock_Guts_GetAddressFor(CMOCK_GUTS_NONE) );
26
26
 
27
27
  //verify we're cleared still
@@ -30,7 +30,7 @@ void test_MemNewWillReturnNullIfGivenIllegalSizes(void)
30
30
  }
31
31
 
32
32
  void test_MemChainWillReturnNullAndDoNothingIfGivenIllegalInformation(void)
33
- {
33
+ {
34
34
  CMOCK_MEM_INDEX_TYPE next = CMock_Guts_MemNew(4);
35
35
  TEST_ASSERT_EQUAL(4 + TEST_MEM_INDEX_SIZE, CMock_Guts_MemBytesUsed());
36
36
  TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - 4 - TEST_MEM_INDEX_SIZE, CMock_Guts_MemBytesFree());
@@ -57,7 +57,7 @@ void test_MemNextWillReturnNullIfGivenABadRoot(void)
57
57
  void test_ThatWeCanClaimAndChainAFewElementsTogether(void)
58
58
  {
59
59
  unsigned int i;
60
- CMOCK_MEM_INDEX_TYPE next;
60
+ CMOCK_MEM_INDEX_TYPE next;
61
61
  CMOCK_MEM_INDEX_TYPE first = CMOCK_GUTS_NONE;
62
62
  CMOCK_MEM_INDEX_TYPE element[4];
63
63
 
@@ -73,8 +73,8 @@ void test_ThatWeCanClaimAndChainAFewElementsTogether(void)
73
73
  *((unsigned int*)CMock_Guts_GetAddressFor(element[0])) = 0;
74
74
 
75
75
  //verify we're using the right amount of memory
76
- TEST_ASSERT_EQUAL(1 * (TEST_MEM_INDEX_SIZE + 4), CMock_Guts_MemBytesUsed());
77
- TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - 1 * (TEST_MEM_INDEX_SIZE + 4), CMock_Guts_MemBytesFree());
76
+ TEST_ASSERT_EQUAL(1 * (TEST_MEM_INDEX_SIZE + sizeof(unsigned int)), CMock_Guts_MemBytesUsed());
77
+ TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - 1 * (TEST_MEM_INDEX_SIZE + sizeof(unsigned int)), CMock_Guts_MemBytesFree());
78
78
 
79
79
  //second element
80
80
  element[1] = CMock_Guts_MemNew(sizeof(unsigned int));
@@ -84,8 +84,8 @@ void test_ThatWeCanClaimAndChainAFewElementsTogether(void)
84
84
  *((unsigned int*)CMock_Guts_GetAddressFor(element[1])) = 1;
85
85
 
86
86
  //verify we're using the right amount of memory
87
- TEST_ASSERT_EQUAL(2 * (TEST_MEM_INDEX_SIZE + 4), CMock_Guts_MemBytesUsed());
88
- TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - 2 * (TEST_MEM_INDEX_SIZE + 4), CMock_Guts_MemBytesFree());
87
+ TEST_ASSERT_EQUAL(2 * (TEST_MEM_INDEX_SIZE + sizeof(unsigned int)), CMock_Guts_MemBytesUsed());
88
+ TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - 2 * (TEST_MEM_INDEX_SIZE + sizeof(unsigned int)), CMock_Guts_MemBytesFree());
89
89
 
90
90
  //third element
91
91
  element[2] = CMock_Guts_MemNew(sizeof(unsigned int));
@@ -96,8 +96,8 @@ void test_ThatWeCanClaimAndChainAFewElementsTogether(void)
96
96
  *((unsigned int*)CMock_Guts_GetAddressFor(element[2])) = 2;
97
97
 
98
98
  //verify we're using the right amount of memory
99
- TEST_ASSERT_EQUAL(3 * (TEST_MEM_INDEX_SIZE + 4), CMock_Guts_MemBytesUsed());
100
- TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - 3 * (TEST_MEM_INDEX_SIZE + 4), CMock_Guts_MemBytesFree());
99
+ TEST_ASSERT_EQUAL(3 * (TEST_MEM_INDEX_SIZE + sizeof(unsigned int)), CMock_Guts_MemBytesUsed());
100
+ TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - 3 * (TEST_MEM_INDEX_SIZE + sizeof(unsigned int)), CMock_Guts_MemBytesFree());
101
101
 
102
102
  //fourth element
103
103
  element[3] = CMock_Guts_MemNew(sizeof(unsigned int));
@@ -109,8 +109,8 @@ void test_ThatWeCanClaimAndChainAFewElementsTogether(void)
109
109
  *((unsigned int*)CMock_Guts_GetAddressFor(element[3])) = 3;
110
110
 
111
111
  //verify we're using the right amount of memory
112
- TEST_ASSERT_EQUAL(4 * (TEST_MEM_INDEX_SIZE + 4), CMock_Guts_MemBytesUsed());
113
- TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - 4 * (TEST_MEM_INDEX_SIZE + 4), CMock_Guts_MemBytesFree());
112
+ TEST_ASSERT_EQUAL(4 * (TEST_MEM_INDEX_SIZE + sizeof(unsigned int)), CMock_Guts_MemBytesUsed());
113
+ TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - 4 * (TEST_MEM_INDEX_SIZE + sizeof(unsigned int)), CMock_Guts_MemBytesFree());
114
114
 
115
115
  //traverse list
116
116
  next = first;
@@ -125,8 +125,8 @@ void test_ThatWeCanClaimAndChainAFewElementsTogether(void)
125
125
  TEST_ASSERT_EQUAL_HEX(CMOCK_GUTS_NONE, next);
126
126
 
127
127
  //verify we're using the right amount of memory
128
- TEST_ASSERT_EQUAL(4 * (TEST_MEM_INDEX_SIZE + 4), CMock_Guts_MemBytesUsed());
129
- TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - 4 * (TEST_MEM_INDEX_SIZE + 4), CMock_Guts_MemBytesFree());
128
+ TEST_ASSERT_EQUAL(4 * (TEST_MEM_INDEX_SIZE + sizeof(unsigned int)), CMock_Guts_MemBytesUsed());
129
+ TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - 4 * (TEST_MEM_INDEX_SIZE + sizeof(unsigned int)), CMock_Guts_MemBytesFree());
130
130
 
131
131
  //Free it all
132
132
  CMock_Guts_MemFreeAll();
@@ -138,17 +138,17 @@ void test_ThatWeCanClaimAndChainAFewElementsTogether(void)
138
138
 
139
139
  void test_ThatCMockStopsReturningMoreDataWhenItRunsOutOfMemory(void)
140
140
  {
141
- unsigned int i;
141
+ unsigned int i;
142
142
  CMOCK_MEM_INDEX_TYPE first = CMOCK_GUTS_NONE;
143
143
  CMOCK_MEM_INDEX_TYPE next;
144
144
 
145
- //even though we are asking for one byte, we've told it to align to closest 4 bytes, therefore it will waste a byte each time
146
- //so each call will use 8 bytes (4 for the index, 1 for the data, and 3 wasted).
147
- //therefore we can safely allocated total/8 times.
148
- for (i = 0; i < (CMOCK_MEM_SIZE / 8); i++)
145
+ //even though we are asking for one byte, we've told it to align to closest CMOCK_MEM_ALIGN_SIZE bytes, therefore it will waste a byte each time
146
+ //so each call will use (CMOCK_MEM_INDEX_SIZE + CMOCK_MEM_ALIGN_SIZE) bytes (CMOCK_MEM_INDEX_SIZE for the index, 1 for the data, and (CMOCK_MEM_ALIGN_SIZE - 1) wasted).
147
+ //therefore we can safely allocated total/(CMOCK_MEM_INDEX_SIZE + CMOCK_MEM_ALIGN_SIZE) times.
148
+ for (i = 0; i < (CMOCK_MEM_SIZE / (CMOCK_MEM_INDEX_SIZE + CMOCK_MEM_ALIGN_SIZE)); i++)
149
149
  {
150
- TEST_ASSERT_EQUAL(i*8, CMock_Guts_MemBytesUsed());
151
- TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - i*8, CMock_Guts_MemBytesFree());
150
+ TEST_ASSERT_EQUAL(i*(CMOCK_MEM_INDEX_SIZE + CMOCK_MEM_ALIGN_SIZE), CMock_Guts_MemBytesUsed());
151
+ TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - i*(CMOCK_MEM_INDEX_SIZE + CMOCK_MEM_ALIGN_SIZE), CMock_Guts_MemBytesFree());
152
152
 
153
153
  next = CMock_Guts_MemNew(1);
154
154
  TEST_ASSERT_MESSAGE(next != CMOCK_GUTS_NONE, "Should Not Have Returned CMOCK_GUTS_NONE");
@@ -172,28 +172,29 @@ void test_ThatCMockStopsReturningMoreDataWhenItRunsOutOfMemory(void)
172
172
 
173
173
  //verify we can still walk through the elements allocated
174
174
  next = first;
175
- for (i = 0; i < (CMOCK_MEM_SIZE / 8); i++)
175
+ for (i = 0; i < (CMOCK_MEM_SIZE / (CMOCK_MEM_INDEX_SIZE + CMOCK_MEM_ALIGN_SIZE)); i++)
176
176
  {
177
177
  TEST_ASSERT_MESSAGE(next != CMOCK_GUTS_NONE, "Should Not Have Returned CMOCK_GUTS_NONE");
178
178
  next = CMock_Guts_MemNext(next);
179
179
  }
180
180
 
181
181
  //there aren't any after that
182
- TEST_ASSERT_EQUAL_HEX(CMOCK_GUTS_NONE, next);
182
+ TEST_ASSERT_EQUAL_HEX(CMOCK_GUTS_NONE, (_UU32)next);
183
183
  }
184
184
 
185
185
  void test_ThatCMockStopsReturningMoreDataWhenAskForMoreThanItHasLeftEvenIfNotAtExactEnd(void)
186
186
  {
187
- unsigned int i;
187
+ unsigned int i;
188
188
  CMOCK_MEM_INDEX_TYPE first = CMOCK_GUTS_NONE;
189
189
  CMOCK_MEM_INDEX_TYPE next;
190
190
 
191
- //we're asking for 12 bytes each time now (4 for index, 8 for data).
192
- //10 requests will give us 120 bytes used, which isn't enough for another 12 bytes if total memory is 128
193
- for (i = 0; i < 10; i++)
191
+ //we're asking for (CMOCK_MEM_INDEX_SIZE + 8) bytes each time now (CMOCK_MEM_INDEX_SIZE for index, 8 for data).
192
+ //CMOCK_MEM_SIZE/(CMOCK_MEM_INDEX_SIZE + 8) requests will request as much data as possible, while ensuring that there isn't enough
193
+ //memory for the next request
194
+ for (i = 0; i < CMOCK_MEM_SIZE/(CMOCK_MEM_INDEX_SIZE + 8); i++)
194
195
  {
195
- TEST_ASSERT_EQUAL(i*12, CMock_Guts_MemBytesUsed());
196
- TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - i*12, CMock_Guts_MemBytesFree());
196
+ TEST_ASSERT_EQUAL(i*(CMOCK_MEM_INDEX_SIZE + 8), CMock_Guts_MemBytesUsed());
197
+ TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - i*(CMOCK_MEM_INDEX_SIZE + 8), CMock_Guts_MemBytesFree());
197
198
 
198
199
  next = CMock_Guts_MemNew(8);
199
200
  TEST_ASSERT_MESSAGE(next != CMOCK_GUTS_NONE, "Should Not Have Returned CMOCK_GUTS_NONE");
@@ -206,22 +207,22 @@ void test_ThatCMockStopsReturningMoreDataWhenAskForMoreThanItHasLeftEvenIfNotAtE
206
207
  }
207
208
 
208
209
  //verify we're at top of memory
209
- TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - 8, CMock_Guts_MemBytesUsed());
210
- TEST_ASSERT_EQUAL(8, CMock_Guts_MemBytesFree());
210
+ TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - CMOCK_MEM_SIZE % (CMOCK_MEM_INDEX_SIZE + 8), CMock_Guts_MemBytesUsed());
211
+ TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE % (CMOCK_MEM_INDEX_SIZE + 8), CMock_Guts_MemBytesFree());
211
212
 
212
213
  //The very next call will return a NONE, and any after that
213
214
  TEST_ASSERT_EQUAL_HEX(CMOCK_GUTS_NONE, CMock_Guts_MemNew(8));
214
215
  TEST_ASSERT_EQUAL_HEX(CMOCK_GUTS_NONE, CMock_Guts_MemNew(5));
215
216
 
216
217
  //verify nothing has changed
217
- TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - 8, CMock_Guts_MemBytesUsed());
218
- TEST_ASSERT_EQUAL(8, CMock_Guts_MemBytesFree());
218
+ TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE - CMOCK_MEM_SIZE % (CMOCK_MEM_INDEX_SIZE + 8), CMock_Guts_MemBytesUsed());
219
+ TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE % (CMOCK_MEM_INDEX_SIZE + 8), CMock_Guts_MemBytesFree());
219
220
 
220
221
  //verify we can still walk through the elements allocated
221
222
  next = first;
222
- for (i = 0; i < 10; i++)
223
+ for (i = 0; i < CMOCK_MEM_SIZE/(CMOCK_MEM_INDEX_SIZE + 8); i++)
223
224
  {
224
- TEST_ASSERT_MESSAGE(next != CMOCK_GUTS_NONE, "Should Not Have Returned CMOCK_GUTS_NONE");
225
+ TEST_ASSERT_MESSAGE(next != CMOCK_GUTS_NONE, "Should Not Have Returned CMOCK_GUTS_NONE");
225
226
  TEST_ASSERT_EQUAL(i, *((unsigned int*)CMock_Guts_GetAddressFor(next)));
226
227
  next = CMock_Guts_MemNext(next);
227
228
  }
@@ -232,7 +233,11 @@ void test_ThatCMockStopsReturningMoreDataWhenAskForMoreThanItHasLeftEvenIfNotAtE
232
233
 
233
234
  void test_ThatWeCanAskForAllSortsOfSizes(void)
234
235
  {
235
- unsigned int i;
236
+ #if CMOCK_MEM_ALIGN != 2
237
+ TEST_IGNORE_MESSAGE("Test relies on a particular environmental setup, which is not present");
238
+ #else
239
+
240
+ unsigned int i;
236
241
  CMOCK_MEM_INDEX_TYPE first = CMOCK_GUTS_NONE;
237
242
  CMOCK_MEM_INDEX_TYPE next;
238
243
  unsigned int sizes[5] = {3, 1, 80, 5, 4};
@@ -277,4 +282,42 @@ void test_ThatWeCanAskForAllSortsOfSizes(void)
277
282
 
278
283
  //there aren't any after that
279
284
  TEST_ASSERT_EQUAL_HEX(CMOCK_GUTS_NONE, next);
285
+ #endif
286
+ }
287
+
288
+ void test_MemEndOfChain(void)
289
+ {
290
+ CMOCK_MEM_INDEX_TYPE first = CMOCK_GUTS_NONE;
291
+ CMOCK_MEM_INDEX_TYPE element[4];
292
+
293
+ //verify we're cleared first
294
+ TEST_ASSERT_EQUAL(0, CMock_Guts_MemBytesUsed());
295
+ TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE, CMock_Guts_MemBytesFree());
296
+
297
+ //first element
298
+ element[0] = CMock_Guts_MemNew(sizeof(unsigned int));
299
+ first = CMock_Guts_MemChain(first, element[0]);
300
+ TEST_ASSERT_MESSAGE(element[0] == CMock_Guts_MemEndOfChain(first), "Should have returned element[0]");
301
+
302
+ //second element
303
+ element[1] = CMock_Guts_MemNew(sizeof(unsigned int));
304
+ CMock_Guts_MemChain(first, element[1]);
305
+ TEST_ASSERT_MESSAGE(element[1] == CMock_Guts_MemEndOfChain(first), "Should have returned element[1]");
306
+
307
+ //third element
308
+ element[2] = CMock_Guts_MemNew(sizeof(unsigned int));
309
+ CMock_Guts_MemChain(first, element[2]);
310
+ TEST_ASSERT_MESSAGE(element[2] == CMock_Guts_MemEndOfChain(first), "Should have returned element[2]");
311
+
312
+ //fourth element
313
+ element[3] = CMock_Guts_MemNew(sizeof(unsigned int));
314
+ CMock_Guts_MemChain(first, element[3]);
315
+ TEST_ASSERT_MESSAGE(element[3] == CMock_Guts_MemEndOfChain(first), "Should have returned element[3]");
316
+
317
+ //Free it all
318
+ CMock_Guts_MemFreeAll();
319
+
320
+ //verify we're cleared
321
+ TEST_ASSERT_EQUAL(0, CMock_Guts_MemBytesUsed());
322
+ TEST_ASSERT_EQUAL(CMOCK_MEM_SIZE, CMock_Guts_MemBytesFree());
280
323
  }
@@ -15,6 +15,7 @@ extern void test_MemNewWillReturnNullIfGivenIllegalSizes(void);
15
15
  extern void test_MemChainWillReturnNullAndDoNothingIfGivenIllegalInformation(void);
16
16
  extern void test_MemNextWillReturnNullIfGivenABadRoot(void);
17
17
  extern void test_ThatWeCanClaimAndChainAFewElementsTogether(void);
18
+ extern void test_MemEndOfChain(void);
18
19
  extern void test_ThatCMockStopsReturningMoreDataWhenItRunsOutOfMemory(void);
19
20
  extern void test_ThatCMockStopsReturningMoreDataWhenAskForMoreThanItHasLeftEvenIfNotAtExactEnd(void);
20
21
  extern void test_ThatWeCanAskForAllSortsOfSizes(void);
@@ -28,6 +29,7 @@ int main(void)
28
29
  RUN_TEST(test_MemChainWillReturnNullAndDoNothingIfGivenIllegalInformation, 32);
29
30
  RUN_TEST(test_MemNextWillReturnNullIfGivenABadRoot, 46);
30
31
  RUN_TEST(test_ThatWeCanClaimAndChainAFewElementsTogether, 57);
32
+ RUN_TEST(test_MemEndOfChain, 282);
31
33
  RUN_TEST(test_ThatCMockStopsReturningMoreDataWhenItRunsOutOfMemory, 139);
32
34
  RUN_TEST(test_ThatCMockStopsReturningMoreDataWhenAskForMoreThanItHasLeftEvenIfNotAtExactEnd, 185);
33
35
  RUN_TEST(test_ThatWeCanAskForAllSortsOfSizes, 233);
@@ -5,6 +5,7 @@ require 'cmock_file_writer'
5
5
  describe CMockFileWriter do
6
6
  before do
7
7
  @cmConfig = Object.new
8
+
8
9
  #create instance of class under test
9
10
  @subject = CMockFileWriter.new(@cmConfig)
10
11
  end
@@ -17,9 +18,28 @@ describe CMockFileWriter do
17
18
  end
18
19
 
19
20
  describe 'create_file' do
20
- it "complain if a block was not specified when calling create" do
21
+
22
+ it "should complain if a block was not specified when calling create" do
21
23
  expect {@subject.create_file("text.txt")}.should raise_error
22
24
  # should.be_false
23
25
  end
26
+
27
+ it "should perform block on new file" do
28
+ # mock(@cmConfig).enforce_strict_ordering {false}
29
+ mock(@cmConfig).mock_path {"testPath"}
30
+ mock(@cmConfig).mock_path {"testPath"}
31
+
32
+ FakeFile = Object.new
33
+ mock(File).open("testPath/test.txt.new", "w").yields(FakeFile, "test.txt")
34
+ mock(FakeFile).write("hello world"){nil}
35
+
36
+ mock(File).exist?("testPath/test.txt") {true}
37
+ mock(FileUtils).rm("testPath/test.txt")
38
+ mock(FileUtils).cp("testPath/test.txt.new", "testPath/test.txt")
39
+ mock(FileUtils).rm("testPath/test.txt.new")
40
+ # Call function under test
41
+ @subject.create_file("test.txt") {|f| f.write("hello world")}
42
+ end
43
+
24
44
  end
25
45
  end
@@ -0,0 +1,52 @@
1
+ here = File.expand_path(File.dirname(__FILE__))
2
+ require "#{here}/spec_helper" #add this to execute tests from the spec directory
3
+ require 'cmock_generator_plugin_array'
4
+
5
+ describe :CMockGeneratorPluginArray do
6
+ before do
7
+ @cmConfig = Object.new
8
+ @cmUtils = Object.new
9
+ mock(@cmConfig).when_ptr {:compare_data}
10
+ mock(@cmConfig).enforce_strict_ordering {false}
11
+ mock(@cmUtils).helpers { {} }
12
+ #create instance of class under test
13
+ @subject = CMockGeneratorPluginArray.new(@cmConfig, @cmUtils)
14
+ end
15
+
16
+ it "should not respond to include_files" do
17
+ # @subject.should_not respond_to(:include_files)
18
+ end
19
+
20
+ # it "should not add to typedef structure for functions of " +
21
+ # "style 'int* func(void)'" do
22
+ # function = {:name => "Oak", :args => [], :return => :int_ptr}
23
+ # returned = @subject.instance_typedefs(function)
24
+ # returned.should == ""
25
+ # end
26
+
27
+ # it "should add to typedef structure mock needs of functions of style "+
28
+ # "'void func(int chicken, int* pork)'" do
29
+ # arg1 = { :name => "chicken", :type => "int", :ptr? => false}
30
+ # arg2 = { :name => "pork", :type => "int*", :ptr? => true}
31
+ # function = {:name => "Cedar",
32
+ # :args => [arg1, arg2],
33
+ # :return => :void}
34
+ # expected = " int Expected_pork_Depth;\n"
35
+ # returned = @subject.instance_typedefs(function)
36
+ # returned.should == expected
37
+ # end
38
+
39
+ # it "should not add an additional mock interface for functions not containing pointers" do
40
+ # function = {:name => "Maple", :args_string => "int blah", :return => :string,
41
+ # :contains_ptr? => false}
42
+ # returned = @subject.mock_function_declarations(function)
43
+ # returned.should_be nil
44
+ # end
45
+
46
+ # describe 'create_file' do
47
+ # it "complain if a block was not specified when calling create" do
48
+ # expect {@subject.create_file("text.txt")}.should raise_error
49
+ # # should.be_false
50
+ # end
51
+ # end
52
+ end
@@ -6,6 +6,8 @@
6
6
  - :cexception
7
7
  - :ignore
8
8
  - :callback
9
+ - :return_thru_ptr
10
+ - :ignore_arg
9
11
  :callback_after_arg_check: true
10
12
  :callback_include_count: false
11
13
  :treat_externs: :include
@@ -0,0 +1,235 @@
1
+ ---
2
+ :cmock:
3
+ :mock_path: test/mocks
4
+ :mock_prefix: mock_
5
+ :treat_as:
6
+ abs_struct: PTR
7
+ intptr: INT*
8
+ :when_ptr: :smart
9
+ :plugins:
10
+ - :array
11
+ - :ignore_arg
12
+ - :return_thru_ptr
13
+
14
+ :systest:
15
+ :types: |
16
+ typedef int *intptr;
17
+
18
+ struct a_struct
19
+ {
20
+ int i1;
21
+ int i2;
22
+ int i3;
23
+ };
24
+
25
+ struct _abs_struct
26
+ {
27
+ int abs_i1;
28
+ int abs_i2;
29
+ };
30
+
31
+ typedef struct _abs_struct abs_struct;
32
+
33
+ :mockable: |
34
+ void ptr_ret_int(int *r);
35
+ void ptr_ret_ints(int *r, int *s);
36
+ void ptr_ret_array(char r[], int len);
37
+ void ptr_ret_typedef(intptr r);
38
+ void ptr_ret_struct(struct a_struct *r);
39
+ void ptr_ret_abstract(abs_struct *r);
40
+ void ptr_ret_abstract_array(abs_struct *r, int len);
41
+ void ptr_ret_const_int(int *r, const int *s);
42
+ void ptr_ret_string(char *s);
43
+
44
+ :source:
45
+ :header: |
46
+ #include <string.h>
47
+ #define lengthof(x) (sizeof(x)/sizeof((x)[0]))
48
+
49
+ :code: |
50
+
51
+ :tests:
52
+ :common: |
53
+ void setUp(void) {}
54
+ void tearDown(void) {}
55
+
56
+ :units:
57
+ - :pass: TRUE
58
+ :should: "handle a single int* argument"
59
+ :code: |
60
+ test()
61
+ {
62
+ int r = 1;
63
+ int res = 4;
64
+
65
+ ptr_ret_int_Expect(&r);
66
+ ptr_ret_int_ReturnThruPtr_r(&res);
67
+ ptr_ret_int(&r);
68
+ TEST_ASSERT_EQUAL(4, r);
69
+ }
70
+
71
+ - :pass: TRUE
72
+ :should: "handle multiple calls"
73
+ :code: |
74
+ test()
75
+ {
76
+ int r = 1;
77
+ int res1 = 4;
78
+ int res2 = 8;
79
+ int res3 = 16;
80
+
81
+ ptr_ret_int_Expect(&r);
82
+ ptr_ret_int_ReturnThruPtr_r(&res1);
83
+ ptr_ret_int_Expect(&r);
84
+ ptr_ret_int_ReturnThruPtr_r(&res2);
85
+ ptr_ret_int_Expect(&r);
86
+ ptr_ret_int_ReturnThruPtr_r(&res3);
87
+
88
+ ptr_ret_int(&r);
89
+ TEST_ASSERT_EQUAL(4, r);
90
+ ptr_ret_int(&r);
91
+ TEST_ASSERT_EQUAL(8, r);
92
+ ptr_ret_int(&r);
93
+ TEST_ASSERT_EQUAL(16, r);
94
+
95
+ }
96
+
97
+ - :pass: TRUE
98
+ :should: "ignore an argument"
99
+ :code: |
100
+ test()
101
+ {
102
+ int r = 1, s = 2;
103
+ int res = 4;
104
+
105
+ ptr_ret_int_Expect(&r);
106
+ ptr_ret_int_IgnoreArg_r();
107
+ ptr_ret_int_ReturnThruPtr_r(&res);
108
+ ptr_ret_int(&s);
109
+ TEST_ASSERT_EQUAL(4, s);
110
+ }
111
+
112
+ - :pass: TRUE
113
+ :should: "ignore a null pointer argument"
114
+ :code: |
115
+ test()
116
+ {
117
+ int r = 1;
118
+ int res = 4;
119
+
120
+ ptr_ret_int_Expect(NULL);
121
+ ptr_ret_int_IgnoreArg_r();
122
+ ptr_ret_int_ReturnThruPtr_r(&res);
123
+ ptr_ret_int(&r);
124
+ TEST_ASSERT_EQUAL(4, r);
125
+ }
126
+
127
+ - :pass: TRUE
128
+ :should: "handle multiple int* arguments"
129
+ :code: |
130
+ test()
131
+ {
132
+ int r, s = 0x0880AA55;
133
+ int r_res = 4;
134
+ int s_res = 6;
135
+
136
+ ptr_ret_ints_Expect(&r, &s);
137
+ ptr_ret_ints_ReturnThruPtr_r(&r_res);
138
+ ptr_ret_ints_ReturnThruPtr_s(&s_res);
139
+ ptr_ret_ints(&r, &s);
140
+ TEST_ASSERT_EQUAL(4, r);
141
+ TEST_ASSERT_EQUAL(6, s);
142
+ }
143
+
144
+ - :pass: TRUE
145
+ :should: "only return through pointer when asked to"
146
+ :code: |
147
+ test()
148
+ {
149
+ int r = 0x0880AA55;
150
+ int s = 0xAA55;
151
+ int r_res = 4;
152
+
153
+ ptr_ret_ints_Expect(&r, &s);
154
+ ptr_ret_ints_ReturnThruPtr_r(&r_res);
155
+ ptr_ret_ints(&r, &s);
156
+ TEST_ASSERT_EQUAL(4, r);
157
+ TEST_ASSERT_EQUAL(0xAA55, s);
158
+ }
159
+
160
+ - :pass: TRUE
161
+ :should: "return an array through a pointer correctly"
162
+ :code: |
163
+ test()
164
+ {
165
+ char r_a[] = "booboorooboo";
166
+ char r_a_ret[] = "FEEFI";
167
+
168
+ ptr_ret_array_Expect(r_a, lengthof(r_a));
169
+ ptr_ret_array_ReturnArrayThruPtr_r(r_a_ret, strlen(r_a_ret));
170
+ ptr_ret_array(r_a, lengthof(r_a));
171
+ TEST_ASSERT_EQUAL_STRING("FEEFIorooboo", r_a);
172
+ }
173
+
174
+ - :pass: TRUE
175
+ :should: "handle structs"
176
+ :code: |
177
+ test()
178
+ {
179
+ struct a_struct r_s = { .i1 = 2, .i2 = 3, .i3 = 4, };
180
+ struct a_struct r_s_ret = { .i1 = 8, .i2 = 16, .i3 = 32, };
181
+
182
+ ptr_ret_struct_Expect(&r_s);
183
+ ptr_ret_struct_ReturnThruPtr_r(&r_s_ret);
184
+ ptr_ret_struct(&r_s);
185
+ TEST_ASSERT_EQUAL_MEMORY(&r_s_ret, &r_s, sizeof(struct a_struct));
186
+ }
187
+
188
+ - :pass: TRUE
189
+ :should: "handle typedefs"
190
+ :code: |
191
+ test()
192
+ {
193
+ abs_struct r_as = {.abs_i1 = 0x1234, .abs_i2 = 0x4567};
194
+ abs_struct r_as_ret = {.abs_i1 = 0xFFAA55, .abs_i2 = 0xAAFFAA};
195
+ ptr_ret_abstract_Expect(&r_as);
196
+ ptr_ret_abstract_ReturnMemThruPtr_r(&r_as_ret, sizeof(abs_struct));
197
+ ptr_ret_abstract(&r_as);
198
+ TEST_ASSERT_EQUAL_MEMORY(&r_as_ret, &r_as, sizeof(abs_struct));
199
+ }
200
+
201
+ - :pass: TRUE
202
+ :should: "only generate ReturnThruPtr definitions for non-const arguments"
203
+ :code: |
204
+ test()
205
+ {
206
+ #if !defined(ptr_ret_const_int_ReturnThruPtr_r)
207
+ TEST_FAIL_MESSAGE("ReturnThruPtr not defined for a pointer argument.");
208
+ #endif
209
+
210
+ #if defined(ptr_ret_const_int_ReturnThruPtr_s)
211
+ TEST_FAIL_MESSAGE("ReturnThruPtr defined for a const pointer argument.");
212
+ #endif
213
+ }
214
+
215
+ - :pass: TRUE
216
+ :should: "generate ReturnThruPtr definitions for string arguments"
217
+ :code: |
218
+ test()
219
+ {
220
+ #if !defined(ptr_ret_string_ReturnThruPtr_s)
221
+ TEST_FAIL_MESSAGE("ReturnThruPtr not defined for a string argument.");
222
+ #endif
223
+ }
224
+
225
+ - :pass: TRUE
226
+ :should: "generate IgnoreArg definitions"
227
+ :code: |
228
+ test()
229
+ {
230
+ #if !defined(ptr_ret_array_IgnoreArg_r) \
231
+ || !defined(ptr_ret_array_IgnoreArg_len) \
232
+ || !defined(ptr_ret_const_int_IgnoreArg_s)
233
+ TEST_FAIL_MESSAGE("IgnoreArg not defined for an argument.");
234
+ #endif
235
+ }