ceedling 0.25.0 → 0.27.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 (434) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/assets/project_as_gem.yml +13 -0
  4. data/assets/project_with_guts.yml +13 -0
  5. data/bin/ceedling +91 -67
  6. data/docs/CeedlingPacket.md +61 -23
  7. data/docs/CeedlingPacket.odt +0 -0
  8. data/docs/CeedlingPacket.pdf +0 -0
  9. data/docs/ThrowTheSwitchCodingStandard.md +207 -0
  10. data/examples/temp_sensor/test/TestTemperatureCalculator.c +4 -1
  11. data/lib/ceedling/configurator.rb +14 -1
  12. data/lib/ceedling/configurator_builder.rb +2 -1
  13. data/lib/ceedling/configurator_validator.rb +12 -3
  14. data/lib/ceedling/constants.rb +3 -1
  15. data/lib/ceedling/defaults.rb +12 -1
  16. data/lib/ceedling/file_finder.rb +3 -0
  17. data/lib/ceedling/file_path_utils.rb +1 -1
  18. data/lib/ceedling/file_wrapper.rb +4 -4
  19. data/lib/ceedling/generator.rb +12 -3
  20. data/lib/ceedling/preprocessinator_helper.rb +5 -5
  21. data/lib/ceedling/preprocessinator_includes_handler.rb +10 -1
  22. data/lib/ceedling/project_config_manager.rb +1 -2
  23. data/lib/ceedling/project_file_loader.rb +27 -9
  24. data/lib/ceedling/rakefile.rb +6 -6
  25. data/lib/ceedling/release_invoker.rb +21 -6
  26. data/lib/ceedling/rules_release.rake +9 -5
  27. data/lib/ceedling/rules_tests.rake +6 -1
  28. data/lib/ceedling/setupinator.rb +1 -0
  29. data/lib/ceedling/tasks_base.rake +3 -0
  30. data/lib/ceedling/tasks_filesystem.rake +10 -7
  31. data/lib/ceedling/tasks_release.rake +3 -1
  32. data/lib/ceedling/test_includes_extractor.rb +16 -12
  33. data/lib/ceedling/test_invoker.rb +40 -0
  34. data/lib/ceedling/version.rb +3 -3
  35. data/lib/ceedling/version.rb.erb +1 -1
  36. data/plugins/command_hooks/lib/command_hooks.rb +1 -1
  37. data/plugins/fake_function_framework/examples/fff_example/src/bar.h +1 -0
  38. data/plugins/fake_function_framework/examples/fff_example/src/event_processor.c +1 -0
  39. data/plugins/fake_function_framework/lib/fff_mock_generator.rb +4 -0
  40. data/plugins/fake_function_framework/spec/{fff_mock_generator_spec.rb → fff_mock_header_generator_spec.rb} +34 -194
  41. data/plugins/fake_function_framework/spec/fff_mock_source_generator_spec.rb +149 -0
  42. data/plugins/fake_function_framework/spec/header_generator.rb +51 -0
  43. data/plugins/junit_tests_report/lib/junit_tests_report.rb +115 -0
  44. data/plugins/subprojects/README.md +63 -0
  45. data/plugins/subprojects/config/defaults.yml +33 -0
  46. data/plugins/subprojects/lib/subprojects.rb +92 -0
  47. data/plugins/subprojects/subprojects.rake +78 -0
  48. data/spec/preprocessinator_includes_handler_spec.rb +15 -5
  49. data/spec/spec_helper.rb +2 -2
  50. data/spec/spec_system_helper.rb +49 -1
  51. data/spec/system/deployment_spec.rb +29 -0
  52. data/vendor/c_exception/README.md +8 -2
  53. data/vendor/c_exception/docs/{readme.txt → CException.md} +133 -102
  54. data/vendor/c_exception/docs/ThrowTheSwitchCodingStandard.md +207 -0
  55. data/vendor/c_exception/vendor/unity/README.md +19 -10
  56. data/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +67 -64
  57. data/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +20 -20
  58. data/vendor/c_exception/vendor/unity/auto/generate_module.rb +149 -142
  59. data/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +234 -232
  60. data/vendor/c_exception/vendor/unity/auto/parse_output.rb +220 -0
  61. data/vendor/c_exception/vendor/unity/auto/stylize_as_junit.rb +108 -120
  62. data/vendor/c_exception/vendor/unity/auto/test_file_filter.rb +11 -9
  63. data/vendor/c_exception/vendor/unity/auto/type_sanitizer.rb +1 -3
  64. data/vendor/c_exception/vendor/unity/auto/unity_test_summary.py +6 -2
  65. data/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +45 -57
  66. data/vendor/c_exception/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +207 -0
  67. data/vendor/c_exception/vendor/unity/docs/UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf +0 -0
  68. data/vendor/c_exception/vendor/unity/docs/UnityAssertionsReference.md +716 -0
  69. data/vendor/c_exception/vendor/unity/docs/UnityConfigurationGuide.md +398 -0
  70. data/vendor/c_exception/vendor/unity/docs/UnityGettingStartedGuide.md +191 -0
  71. data/vendor/c_exception/vendor/unity/docs/UnityHelperScriptsGuide.md +242 -0
  72. data/vendor/c_exception/vendor/unity/examples/example_1/makefile +22 -17
  73. data/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +1 -1
  74. data/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +1 -1
  75. data/vendor/c_exception/vendor/unity/examples/example_2/makefile +16 -17
  76. data/vendor/c_exception/vendor/unity/examples/example_3/rakefile.rb +15 -15
  77. data/vendor/c_exception/vendor/unity/examples/example_3/rakefile_helper.rb +93 -100
  78. data/vendor/c_exception/vendor/unity/examples/example_3/readme.txt +4 -10
  79. data/vendor/c_exception/vendor/unity/examples/unity_config.h +14 -26
  80. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +12 -12
  81. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +87 -88
  82. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +15 -8
  83. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +6 -1
  84. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +3 -0
  85. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +1 -0
  86. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +1 -1
  87. data/vendor/c_exception/vendor/unity/src/unity.c +396 -330
  88. data/vendor/c_exception/vendor/unity/src/unity.h +50 -4
  89. data/vendor/c_exception/vendor/unity/src/unity_internals.h +119 -84
  90. data/vendor/c_exception/vendor/unity/test/Makefile +17 -17
  91. data/vendor/c_exception/vendor/unity/test/rakefile +63 -3
  92. data/vendor/c_exception/vendor/unity/test/rakefile_helper.rb +108 -105
  93. data/vendor/c_exception/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -0
  94. data/vendor/c_exception/vendor/unity/test/targets/clang_file.yml +0 -6
  95. data/vendor/c_exception/vendor/unity/test/targets/clang_strict.yml +1 -9
  96. data/vendor/c_exception/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +2 -0
  97. data/vendor/c_exception/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +2 -2
  98. data/vendor/c_exception/vendor/unity/test/tests/test_generate_test_runner.rb +5 -5
  99. data/vendor/c_exception/vendor/unity/test/tests/testunity.c +1338 -151
  100. data/vendor/cmock/README.md +10 -1
  101. data/vendor/cmock/config/test_environment.rb +7 -7
  102. data/vendor/cmock/docs/CMock_Summary.md +325 -128
  103. data/vendor/cmock/docs/ThrowTheSwitchCodingStandard.md +207 -0
  104. data/vendor/cmock/examples/make_example/Makefile +2 -2
  105. data/vendor/cmock/examples/temp_sensor/gcc.yml +5 -4
  106. data/vendor/cmock/examples/temp_sensor/iar_v4.yml +5 -4
  107. data/vendor/cmock/examples/temp_sensor/iar_v5.yml +5 -4
  108. data/vendor/cmock/examples/temp_sensor/rakefile.rb +11 -1
  109. data/vendor/cmock/examples/temp_sensor/rakefile_helper.rb +12 -10
  110. data/vendor/cmock/lib/cmock.rb +0 -3
  111. data/vendor/cmock/lib/cmock_generator_plugin_callback.rb +6 -2
  112. data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +2 -1
  113. data/vendor/cmock/lib/cmock_header_parser.rb +5 -6
  114. data/vendor/cmock/release/version.info +1 -1
  115. data/vendor/cmock/scripts/create_makefile.rb +4 -2
  116. data/vendor/cmock/scripts/test_summary.rb +17 -9
  117. data/vendor/cmock/src/cmock.c +1 -0
  118. data/vendor/cmock/src/cmock.h +1 -1
  119. data/vendor/cmock/src/cmock_internals.h +14 -1
  120. data/vendor/cmock/test/c/TestCMockC.yml +4 -4
  121. data/vendor/cmock/test/c/TestCMockCDynamic.yml +4 -4
  122. data/vendor/cmock/{iar → test/iar}/iar_v4/Resource/SAM7_FLASH.mac +0 -0
  123. data/vendor/cmock/{iar → test/iar}/iar_v4/Resource/SAM7_RAM.mac +0 -0
  124. data/vendor/cmock/{iar → test/iar}/iar_v4/Resource/SAM7_SIM.mac +0 -0
  125. data/vendor/cmock/{iar → test/iar}/iar_v4/Resource/at91SAM7X256_FLASH.xcl +0 -0
  126. data/vendor/cmock/{iar → test/iar}/iar_v4/Resource/at91SAM7X256_RAM.xcl +0 -0
  127. data/vendor/cmock/{iar → test/iar}/iar_v4/Resource/ioat91sam7x256.ddf +0 -0
  128. data/vendor/cmock/{iar → test/iar}/iar_v4/cmock_demo.dep +0 -0
  129. data/vendor/cmock/{iar → test/iar}/iar_v4/cmock_demo.ewd +0 -0
  130. data/vendor/cmock/{iar → test/iar}/iar_v4/cmock_demo.ewp +0 -0
  131. data/vendor/cmock/{iar → test/iar}/iar_v4/cmock_demo.eww +0 -0
  132. data/vendor/cmock/{iar → test/iar}/iar_v4/incIAR/AT91SAM7X-EK.h +0 -0
  133. data/vendor/cmock/{iar → test/iar}/iar_v4/incIAR/AT91SAM7X256.inc +0 -0
  134. data/vendor/cmock/{iar → test/iar}/iar_v4/incIAR/AT91SAM7X256.rdf +0 -0
  135. data/vendor/cmock/{iar → test/iar}/iar_v4/incIAR/AT91SAM7X256.tcl +0 -0
  136. data/vendor/cmock/{iar → test/iar}/iar_v4/incIAR/AT91SAM7X256_inc.h +0 -0
  137. data/vendor/cmock/{iar → test/iar}/iar_v4/incIAR/ioat91sam7x256.h +0 -0
  138. data/vendor/cmock/{iar → test/iar}/iar_v4/incIAR/lib_AT91SAM7X256.h +0 -0
  139. data/vendor/cmock/{iar → test/iar}/iar_v4/settings/cmock_demo.cspy.bat +0 -0
  140. data/vendor/cmock/{iar → test/iar}/iar_v4/settings/cmock_demo.dbgdt +0 -0
  141. data/vendor/cmock/{iar → test/iar}/iar_v4/settings/cmock_demo.dni +0 -0
  142. data/vendor/cmock/{iar → test/iar}/iar_v4/settings/cmock_demo.wsdt +0 -0
  143. data/vendor/cmock/{iar → test/iar}/iar_v4/srcIAR/Cstartup.s79 +0 -0
  144. data/vendor/cmock/{iar → test/iar}/iar_v4/srcIAR/Cstartup_SAM7.c +0 -0
  145. data/vendor/cmock/{iar → test/iar}/iar_v5/Resource/SAM7_FLASH.mac +0 -0
  146. data/vendor/cmock/{iar → test/iar}/iar_v5/Resource/SAM7_RAM.mac +0 -0
  147. data/vendor/cmock/{iar → test/iar}/iar_v5/Resource/SAM7_SIM.mac +0 -0
  148. data/vendor/cmock/{iar → test/iar}/iar_v5/Resource/at91SAM7X256_FLASH.icf +0 -0
  149. data/vendor/cmock/{iar → test/iar}/iar_v5/Resource/at91SAM7X256_RAM.icf +0 -0
  150. data/vendor/cmock/{iar → test/iar}/iar_v5/cmock_demo.dep +0 -0
  151. data/vendor/cmock/{iar → test/iar}/iar_v5/cmock_demo.ewd +0 -0
  152. data/vendor/cmock/{iar → test/iar}/iar_v5/cmock_demo.ewp +0 -0
  153. data/vendor/cmock/{iar → test/iar}/iar_v5/cmock_demo.eww +0 -0
  154. data/vendor/cmock/{iar → test/iar}/iar_v5/incIAR/AT91SAM7X-EK.h +0 -0
  155. data/vendor/cmock/{iar → test/iar}/iar_v5/incIAR/AT91SAM7X256_inc.h +0 -0
  156. data/vendor/cmock/{iar → test/iar}/iar_v5/incIAR/lib_AT91SAM7X256.h +0 -0
  157. data/vendor/cmock/{iar → test/iar}/iar_v5/incIAR/project.h +0 -0
  158. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/BasicInterrupt_SAM7X.cspy.bat +0 -0
  159. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/BasicInterrupt_SAM7X.dbgdt +0 -0
  160. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/BasicInterrupt_SAM7X.dni +0 -0
  161. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/BasicInterrupt_SAM7X.wsdt +0 -0
  162. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/BasicInterrupt_SAM7X_FLASH_Debug.jlink +0 -0
  163. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/cmock_demo.cspy.bat +0 -0
  164. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/cmock_demo.dbgdt +0 -0
  165. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/cmock_demo.dni +0 -0
  166. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/cmock_demo.wsdt +0 -0
  167. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/cmock_demo_Binary.jlink +0 -0
  168. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/cmock_demo_FLASH_Debug.jlink +0 -0
  169. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/cmock_demo_RAM_Debug.jlink +0 -0
  170. data/vendor/cmock/{iar → test/iar}/iar_v5/srcIAR/Cstartup.s +0 -0
  171. data/vendor/cmock/{iar → test/iar}/iar_v5/srcIAR/Cstartup_SAM7.c +0 -0
  172. data/vendor/cmock/{Rakefile → test/rakefile} +9 -9
  173. data/vendor/cmock/{rakefile_helper.rb → test/rakefile_helper.rb} +13 -13
  174. data/vendor/cmock/test/system/test_compilation/config.yml +4 -4
  175. data/vendor/cmock/test/system/test_interactions/parsing_challenges.yml +2 -0
  176. data/vendor/cmock/{targets → test/targets}/clang_strict.yml +11 -11
  177. data/vendor/cmock/{targets → test/targets}/gcc.yml +9 -9
  178. data/vendor/cmock/{targets → test/targets}/gcc_64.yml +9 -9
  179. data/vendor/cmock/{targets → test/targets}/gcc_tiny.yml +9 -9
  180. data/vendor/cmock/{targets → test/targets}/iar_arm_v4.yml +9 -9
  181. data/vendor/cmock/{targets → test/targets}/iar_arm_v5.yml +10 -10
  182. data/vendor/cmock/test/test_helper.rb +4 -8
  183. data/vendor/cmock/test/unit/cmock_config_test.rb +1 -1
  184. data/vendor/cmock/test/unit/cmock_file_writer_test.rb +1 -1
  185. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +1 -1
  186. data/vendor/cmock/test/unit/cmock_generator_plugin_array_test.rb +1 -1
  187. data/vendor/cmock/test/unit/cmock_generator_plugin_callback_test.rb +3 -1
  188. data/vendor/cmock/test/unit/cmock_generator_plugin_cexception_test.rb +1 -1
  189. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_a_test.rb +1 -1
  190. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_any_args_test.rb +1 -1
  191. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_b_test.rb +1 -1
  192. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_arg_test.rb +1 -1
  193. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_test.rb +1 -1
  194. data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +1 -1
  195. data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +1 -1
  196. data/vendor/cmock/test/unit/cmock_header_parser_test.rb +15 -2
  197. data/vendor/cmock/test/unit/cmock_plugin_manager_test.rb +6 -10
  198. data/vendor/cmock/test/unit/cmock_unityhelper_parser_test.rb +1 -1
  199. data/vendor/cmock/vendor/c_exception/README.md +8 -2
  200. data/vendor/cmock/vendor/c_exception/docs/{readme.txt → CException.md} +133 -102
  201. data/vendor/cmock/vendor/c_exception/docs/ThrowTheSwitchCodingStandard.md +207 -0
  202. data/vendor/cmock/vendor/c_exception/vendor/unity/README.md +19 -10
  203. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +67 -64
  204. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +20 -20
  205. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_module.rb +149 -142
  206. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +234 -232
  207. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/parse_output.rb +220 -0
  208. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/stylize_as_junit.rb +108 -120
  209. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/test_file_filter.rb +11 -9
  210. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/type_sanitizer.rb +1 -3
  211. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/unity_test_summary.py +6 -2
  212. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +45 -57
  213. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +207 -0
  214. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf +0 -0
  215. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityAssertionsReference.md +716 -0
  216. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityConfigurationGuide.md +398 -0
  217. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityGettingStartedGuide.md +191 -0
  218. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityHelperScriptsGuide.md +242 -0
  219. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/makefile +22 -17
  220. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +1 -1
  221. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +1 -1
  222. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/makefile +16 -17
  223. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/rakefile.rb +15 -15
  224. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/rakefile_helper.rb +93 -100
  225. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/readme.txt +4 -10
  226. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/unity_config.h +14 -26
  227. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +12 -12
  228. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +87 -88
  229. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +15 -8
  230. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +6 -1
  231. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +3 -0
  232. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +1 -0
  233. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +1 -1
  234. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.c +396 -330
  235. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.h +50 -4
  236. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity_internals.h +119 -84
  237. data/vendor/cmock/vendor/c_exception/vendor/unity/test/Makefile +17 -17
  238. data/vendor/cmock/vendor/c_exception/vendor/unity/test/rakefile +63 -3
  239. data/vendor/cmock/vendor/c_exception/vendor/unity/test/rakefile_helper.rb +108 -105
  240. data/vendor/cmock/vendor/c_exception/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -0
  241. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/clang_file.yml +0 -6
  242. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/clang_strict.yml +1 -9
  243. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +2 -0
  244. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +2 -2
  245. data/vendor/cmock/vendor/c_exception/vendor/unity/test/tests/test_generate_test_runner.rb +5 -5
  246. data/vendor/cmock/vendor/c_exception/vendor/unity/test/tests/testunity.c +1338 -151
  247. data/vendor/cmock/vendor/unity/README.md +19 -10
  248. data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +67 -64
  249. data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +20 -20
  250. data/vendor/cmock/vendor/unity/auto/generate_module.rb +149 -142
  251. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +234 -232
  252. data/vendor/cmock/vendor/unity/auto/parse_output.rb +220 -0
  253. data/vendor/cmock/vendor/unity/auto/stylize_as_junit.rb +108 -120
  254. data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +11 -9
  255. data/vendor/cmock/vendor/unity/auto/type_sanitizer.rb +1 -3
  256. data/vendor/cmock/vendor/unity/auto/unity_test_summary.py +6 -2
  257. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +45 -57
  258. data/vendor/cmock/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +207 -0
  259. data/vendor/cmock/vendor/unity/docs/UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf +0 -0
  260. data/vendor/cmock/vendor/unity/docs/UnityAssertionsReference.md +716 -0
  261. data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.md +398 -0
  262. data/vendor/cmock/vendor/unity/docs/UnityGettingStartedGuide.md +191 -0
  263. data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.md +242 -0
  264. data/vendor/cmock/vendor/unity/examples/example_1/makefile +22 -17
  265. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +1 -1
  266. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +1 -1
  267. data/vendor/cmock/vendor/unity/examples/example_2/makefile +16 -17
  268. data/vendor/cmock/vendor/unity/examples/example_3/rakefile.rb +15 -15
  269. data/vendor/cmock/vendor/unity/examples/example_3/rakefile_helper.rb +93 -100
  270. data/vendor/cmock/vendor/unity/examples/example_3/readme.txt +4 -10
  271. data/vendor/cmock/vendor/unity/examples/unity_config.h +14 -26
  272. data/vendor/cmock/vendor/unity/extras/fixture/rakefile.rb +12 -12
  273. data/vendor/cmock/vendor/unity/extras/fixture/rakefile_helper.rb +87 -88
  274. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +15 -8
  275. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +6 -1
  276. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +3 -0
  277. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +1 -0
  278. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +1 -1
  279. data/vendor/cmock/vendor/unity/release/version.info +1 -1
  280. data/vendor/cmock/vendor/unity/src/unity.c +396 -330
  281. data/vendor/cmock/vendor/unity/src/unity.h +50 -4
  282. data/vendor/cmock/vendor/unity/src/unity_internals.h +119 -84
  283. data/vendor/cmock/vendor/unity/test/Makefile +17 -17
  284. data/vendor/cmock/vendor/unity/test/rakefile +63 -3
  285. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +108 -105
  286. data/vendor/cmock/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -0
  287. data/vendor/cmock/vendor/unity/test/targets/clang_file.yml +0 -6
  288. data/vendor/cmock/vendor/unity/test/targets/clang_strict.yml +1 -9
  289. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +2 -0
  290. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +2 -2
  291. data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +5 -5
  292. data/vendor/cmock/vendor/unity/test/tests/testunity.c +1338 -151
  293. data/vendor/deep_merge/Rakefile +1 -1
  294. data/vendor/unity/README.md +19 -10
  295. data/vendor/unity/auto/colour_prompt.rb +67 -64
  296. data/vendor/unity/auto/colour_reporter.rb +20 -20
  297. data/vendor/unity/auto/generate_module.rb +149 -142
  298. data/vendor/unity/auto/generate_test_runner.rb +234 -232
  299. data/vendor/unity/auto/parse_output.rb +220 -0
  300. data/vendor/unity/auto/stylize_as_junit.rb +108 -120
  301. data/vendor/unity/auto/test_file_filter.rb +11 -9
  302. data/vendor/unity/auto/type_sanitizer.rb +1 -3
  303. data/vendor/unity/auto/unity_test_summary.py +6 -2
  304. data/vendor/unity/auto/unity_test_summary.rb +45 -57
  305. data/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +207 -0
  306. data/vendor/unity/docs/UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf +0 -0
  307. data/vendor/unity/docs/UnityAssertionsReference.md +716 -0
  308. data/vendor/unity/docs/UnityConfigurationGuide.md +398 -0
  309. data/vendor/unity/docs/UnityGettingStartedGuide.md +191 -0
  310. data/vendor/unity/docs/UnityHelperScriptsGuide.md +242 -0
  311. data/vendor/unity/examples/example_1/makefile +22 -17
  312. data/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +1 -1
  313. data/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +1 -1
  314. data/vendor/unity/examples/example_2/makefile +16 -17
  315. data/vendor/unity/examples/example_3/rakefile.rb +15 -15
  316. data/vendor/unity/examples/example_3/rakefile_helper.rb +93 -100
  317. data/vendor/unity/examples/example_3/readme.txt +4 -10
  318. data/vendor/unity/examples/unity_config.h +14 -26
  319. data/vendor/unity/extras/fixture/rakefile.rb +12 -12
  320. data/vendor/unity/extras/fixture/rakefile_helper.rb +87 -88
  321. data/vendor/unity/extras/fixture/src/unity_fixture.c +15 -8
  322. data/vendor/unity/extras/fixture/src/unity_fixture.h +6 -1
  323. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +3 -0
  324. data/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +1 -0
  325. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +1 -1
  326. data/vendor/unity/release/version.info +1 -1
  327. data/vendor/unity/src/unity.c +396 -330
  328. data/vendor/unity/src/unity.h +50 -4
  329. data/vendor/unity/src/unity_internals.h +119 -84
  330. data/vendor/unity/test/Makefile +17 -17
  331. data/vendor/unity/test/rakefile +63 -3
  332. data/vendor/unity/test/rakefile_helper.rb +108 -105
  333. data/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -0
  334. data/vendor/unity/test/targets/clang_file.yml +0 -6
  335. data/vendor/unity/test/targets/clang_strict.yml +1 -9
  336. data/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +2 -0
  337. data/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +2 -2
  338. data/vendor/unity/test/tests/test_generate_test_runner.rb +5 -5
  339. data/vendor/unity/test/tests/testunity.c +1338 -151
  340. metadata +102 -157
  341. data/test_graveyard/integration/paths.yml +0 -17
  342. data/test_graveyard/integration/paths_test.rb +0 -80
  343. data/test_graveyard/integration/rake_rules_aux_dependencies_test.rb +0 -75
  344. data/test_graveyard/integration/rake_rules_cmock_test.rb +0 -74
  345. data/test_graveyard/integration/rake_rules_preprocess_test.rb +0 -178
  346. data/test_graveyard/integration/rake_rules_test.rb +0 -268
  347. data/test_graveyard/integration/rake_tasks_test.rb +0 -103
  348. data/test_graveyard/integration_test_helper.rb +0 -34
  349. data/test_graveyard/rakefile_rules.rb +0 -10
  350. data/test_graveyard/rakefile_rules_aux_dependencies.rb +0 -10
  351. data/test_graveyard/rakefile_rules_cmock.rb +0 -10
  352. data/test_graveyard/rakefile_rules_preprocess.rb +0 -10
  353. data/test_graveyard/rakefile_tasks.rb +0 -10
  354. data/test_graveyard/system/file_system_dependencies.yml +0 -20
  355. data/test_graveyard/system/file_system_kitchen_sink.yml +0 -20
  356. data/test_graveyard/system/file_system_mocks.yml +0 -20
  357. data/test_graveyard/system/file_system_preprocess.yml +0 -20
  358. data/test_graveyard/system/file_system_simple.yml +0 -20
  359. data/test_graveyard/system/file_system_test.rb +0 -78
  360. data/test_graveyard/system/mocks/include/a_file.h +0 -2
  361. data/test_graveyard/system/mocks/include/other_stuff.h +0 -2
  362. data/test_graveyard/system/mocks/include/stuff.h +0 -3
  363. data/test_graveyard/system/mocks/source/a_file.c +0 -9
  364. data/test_graveyard/system/mocks/test/test_a_file.c +0 -41
  365. data/test_graveyard/system/mocks/test/test_no_file.c +0 -14
  366. data/test_graveyard/system/project_mocks.yml +0 -43
  367. data/test_graveyard/system/project_mocks_test.rb +0 -38
  368. data/test_graveyard/system/project_simple.yml +0 -36
  369. data/test_graveyard/system/project_simple_test.rb +0 -39
  370. data/test_graveyard/system/rule_mocks_test.rb +0 -44
  371. data/test_graveyard/system/rule_runners_test.rb +0 -44
  372. data/test_graveyard/system/simple/include/other_stuff.h +0 -2
  373. data/test_graveyard/system/simple/include/stuff.h +0 -3
  374. data/test_graveyard/system/simple/source/other_stuff.c +0 -6
  375. data/test_graveyard/system/simple/source/stuff.c +0 -7
  376. data/test_graveyard/system/simple/test/test_other_stuff.c +0 -30
  377. data/test_graveyard/system/simple/test/test_stuff.c +0 -51
  378. data/test_graveyard/system_test_helper.rb +0 -73
  379. data/test_graveyard/test_helper.rb +0 -93
  380. data/test_graveyard/unit/busted/configurator_builder_test.rb +0 -569
  381. data/test_graveyard/unit/busted/configurator_helper_test.rb +0 -234
  382. data/test_graveyard/unit/busted/configurator_test.rb +0 -232
  383. data/test_graveyard/unit/busted/configurator_validator_test.rb +0 -169
  384. data/test_graveyard/unit/busted/deep_merge_fix_test.rb +0 -55
  385. data/test_graveyard/unit/busted/dependinator_test.rb +0 -129
  386. data/test_graveyard/unit/busted/file_finder_helper_test.rb +0 -45
  387. data/test_graveyard/unit/busted/file_finder_test.rb +0 -114
  388. data/test_graveyard/unit/busted/file_path_utils_test.rb +0 -97
  389. data/test_graveyard/unit/busted/file_system_utils_test.rb +0 -21
  390. data/test_graveyard/unit/busted/generator_test.rb +0 -187
  391. data/test_graveyard/unit/busted/generator_test_results_test.rb +0 -129
  392. data/test_graveyard/unit/busted/generator_test_runner_test.rb +0 -475
  393. data/test_graveyard/unit/busted/preprocessinator_file_handler_test.rb +0 -39
  394. data/test_graveyard/unit/busted/preprocessinator_helper_test.rb +0 -156
  395. data/test_graveyard/unit/busted/preprocessinator_includes_handler_test.rb +0 -93
  396. data/test_graveyard/unit/busted/preprocessinator_test.rb +0 -57
  397. data/test_graveyard/unit/busted/project_file_loader_test.rb +0 -142
  398. data/test_graveyard/unit/busted/setupinator_test.rb +0 -45
  399. data/test_graveyard/unit/busted/streaminator_test.rb +0 -49
  400. data/test_graveyard/unit/busted/task_invoker_test.rb +0 -69
  401. data/test_graveyard/unit/busted/test_includes_extractor_test.rb +0 -111
  402. data/test_graveyard/unit/busted/test_invoker_helper_test.rb +0 -62
  403. data/test_graveyard/unit/busted/test_invoker_test.rb +0 -47
  404. data/test_graveyard/unit/busted/tool_executor_helper_test.rb +0 -100
  405. data/test_graveyard/unit/busted/tool_executor_test.rb +0 -351
  406. data/test_graveyard/unit/busted/verbosinator_test.rb +0 -65
  407. data/test_graveyard/unit/preprocessinator_extractor_test.rb +0 -731
  408. data/test_graveyard/unit_test_helper.rb +0 -16
  409. data/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
  410. data/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
  411. data/vendor/c_exception/vendor/unity/auto/parseOutput.rb +0 -191
  412. data/vendor/c_exception/vendor/unity/docs/UnityAssertionsReference.pdf +0 -0
  413. data/vendor/c_exception/vendor/unity/docs/UnityConfigurationGuide.pdf +0 -0
  414. data/vendor/c_exception/vendor/unity/docs/UnityGettingStartedGuide.pdf +0 -0
  415. data/vendor/c_exception/vendor/unity/docs/UnityHelperScriptsGuide.pdf +0 -0
  416. data/vendor/cmock/docs/CMock Summary.odt +0 -0
  417. data/vendor/cmock/docs/CMock Summary.pdf +0 -0
  418. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
  419. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
  420. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/parseOutput.rb +0 -191
  421. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityAssertionsReference.pdf +0 -0
  422. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityConfigurationGuide.pdf +0 -0
  423. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityGettingStartedGuide.pdf +0 -0
  424. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityHelperScriptsGuide.pdf +0 -0
  425. data/vendor/cmock/vendor/unity/auto/parseOutput.rb +0 -191
  426. data/vendor/cmock/vendor/unity/docs/UnityAssertionsReference.pdf +0 -0
  427. data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.pdf +0 -0
  428. data/vendor/cmock/vendor/unity/docs/UnityGettingStartedGuide.pdf +0 -0
  429. data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.pdf +0 -0
  430. data/vendor/unity/auto/parseOutput.rb +0 -191
  431. data/vendor/unity/docs/UnityAssertionsReference.pdf +0 -0
  432. data/vendor/unity/docs/UnityConfigurationGuide.pdf +0 -0
  433. data/vendor/unity/docs/UnityGettingStartedGuide.pdf +0 -0
  434. data/vendor/unity/docs/UnityHelperScriptsGuide.pdf +0 -0
@@ -0,0 +1,158 @@
1
+
2
+ require '../auto/generate_module.rb'
3
+ require 'fileutils'
4
+
5
+ def touch_src(file)
6
+ FileUtils.touch "sandbox/src/#{file}"
7
+ end
8
+
9
+ def touch_test(file)
10
+ FileUtils.touch "sandbox/test/#{file}"
11
+ end
12
+
13
+ def create_src_with_known_content(file)
14
+ File.open("sandbox/src/#{file}", "w") {|f| f.write("the original #{file}")}
15
+ end
16
+
17
+ def create_test_with_known_content(file)
18
+ File.open("sandbox/test/#{file}", "w") {|f| f.write("the original #{file}")}
19
+ end
20
+
21
+ def expect_src_content_didnt_change(file)
22
+ expect(File.read("sandbox/src/#{file}")).to eq("the original #{file}")
23
+ end
24
+
25
+ def expect_test_content_didnt_change(file)
26
+ expect(File.read("sandbox/test/#{file}")).to eq("the original #{file}")
27
+ end
28
+
29
+ def expect_src_file_to_exist(file)
30
+ expect(File.exist?("sandbox/src/#{file}")).to be true
31
+ end
32
+
33
+ def expect_test_file_to_exist(file)
34
+ expect(File.exist?("sandbox/test/#{file}")).to be true
35
+ end
36
+
37
+ describe "UnityModuleGenerator" do
38
+
39
+ before do
40
+ # clean sandbox and setup our "project" folders
41
+ FileUtils.rm_rf "sandbox"
42
+ FileUtils.mkdir_p "sandbox"
43
+ FileUtils.mkdir_p "sandbox/src"
44
+ FileUtils.mkdir_p "sandbox/test"
45
+
46
+ @options = {
47
+ :path_src => "sandbox/src",
48
+ :path_tst => "sandbox/test",
49
+ }
50
+ end
51
+
52
+ context "with src pattern" do
53
+ before do
54
+ @options[:pattern] = "src"
55
+ end
56
+
57
+ it "fails when all files already exist" do
58
+ # create an existing triad of files
59
+ touch_src "meh.c"
60
+ touch_src "meh.h"
61
+ touch_test "Testmeh.c"
62
+ expect {
63
+ UnityModuleGenerator.new(@options).generate("meh")
64
+ }.to raise_error("ERROR: File meh already exists. Exiting.")
65
+ end
66
+
67
+ it "creates the test file if the source and header files exist" do
68
+ # Create the existing files.
69
+ touch_src "meh.c"
70
+ touch_src "meh.h"
71
+
72
+ UnityModuleGenerator.new(@options).generate("meh")
73
+
74
+ expect_test_file_to_exist "Testmeh.c"
75
+ end
76
+
77
+ it "does not alter existing files" do
78
+ # Create some files with known content.
79
+ create_src_with_known_content "meh.c"
80
+ create_src_with_known_content "meh.h"
81
+
82
+ UnityModuleGenerator.new(@options).generate("meh")
83
+
84
+ expect_src_content_didnt_change "meh.c"
85
+ expect_src_content_didnt_change "meh.c"
86
+ end
87
+
88
+ it "does not alter existing test files" do
89
+ # Create some files with known content.
90
+ create_test_with_known_content "Testmeh.c"
91
+
92
+ UnityModuleGenerator.new(@options).generate("meh")
93
+
94
+ expect_test_content_didnt_change "Testmeh.c"
95
+ end
96
+
97
+ end
98
+
99
+ context "with mch pattern" do
100
+ before do
101
+ @options[:pattern] = "mch"
102
+ end
103
+
104
+ it "fails when all files exist" do
105
+ touch_src "meh_model.c"
106
+ touch_src "meh_conductor.c"
107
+ touch_src "meh_hardware.c"
108
+ touch_src "meh_model.h"
109
+ touch_src "meh_conductor.h"
110
+ touch_src "meh_hardware.h"
111
+ touch_test "Testmeh_model.c"
112
+ touch_test "Testmeh_conductor.c"
113
+ touch_test "Testmeh_hardware.c"
114
+ expect {
115
+ UnityModuleGenerator.new(@options).generate("meh")
116
+ }.to raise_error("ERROR: File meh_model already exists. Exiting.")
117
+ end
118
+
119
+ it "creates files that don't exist" do
120
+ touch_src "meh_model.c"
121
+ touch_src "meh_conductor.c"
122
+ touch_src "meh_hardware.c"
123
+ touch_src "meh_model.h"
124
+ touch_src "meh_conductor.h"
125
+
126
+ UnityModuleGenerator.new(@options).generate("meh")
127
+
128
+ expect_src_file_to_exist "meh_hardware.h"
129
+ expect_test_file_to_exist "Testmeh_model.c"
130
+ expect_test_file_to_exist "Testmeh_conductor.c"
131
+ expect_test_file_to_exist "Testmeh_hardware.c"
132
+ end
133
+
134
+ it "does not alter existing source files" do
135
+ create_src_with_known_content "meh_model.c"
136
+ create_src_with_known_content "meh_model.c"
137
+ create_src_with_known_content "meh_model.c"
138
+ create_src_with_known_content "meh_model.h"
139
+ create_src_with_known_content "meh_model.c"
140
+
141
+ UnityModuleGenerator.new(@options).generate("meh")
142
+
143
+ expect_src_content_didnt_change "meh_model.c"
144
+ expect_src_content_didnt_change "meh_model.c"
145
+ expect_src_content_didnt_change "meh_model.c"
146
+ expect_src_content_didnt_change "meh_model.c"
147
+ end
148
+
149
+ it "does not alter existing test files" do
150
+ create_test_with_known_content "Testmeh_model.c"
151
+
152
+ UnityModuleGenerator.new(@options).generate("meh")
153
+
154
+ expect_test_content_didnt_change "Testmeh_model.c"
155
+ end
156
+
157
+ end
158
+ end
@@ -16,13 +16,10 @@ compiler:
16
16
  - '-Winit-self'
17
17
  - '-Winline'
18
18
  - '-Winvalid-pch'
19
- - '-Wmissing-declarations'
20
19
  - '-Wmissing-include-dirs'
21
- - '-Wmissing-prototypes'
22
20
  - '-Wnonnull'
23
21
  - '-Wpacked'
24
22
  - '-Wpointer-arith'
25
- - '-Wredundant-decls'
26
23
  - '-Wswitch-default'
27
24
  - '-Wstrict-aliasing'
28
25
  - '-Wstrict-overflow=5'
@@ -33,10 +30,7 @@ compiler:
33
30
  - '-Wshadow'
34
31
  - '-Wundef'
35
32
  - '-Wwrite-strings'
36
- - '-Wno-missing-declarations'
37
- - '-Wno-missing-prototypes'
38
33
  - '-Wno-nested-externs'
39
- - '-Wno-redundant-decls'
40
34
  - '-Wno-unused-parameter'
41
35
  - '-Wno-variadic-macros'
42
36
  - '-Wbad-function-cast'
@@ -16,13 +16,10 @@ compiler:
16
16
  - '-Winit-self'
17
17
  - '-Winline'
18
18
  - '-Winvalid-pch'
19
- - '-Wmissing-declarations'
20
19
  - '-Wmissing-include-dirs'
21
- - '-Wmissing-prototypes'
22
20
  - '-Wnonnull'
23
21
  - '-Wpacked'
24
22
  - '-Wpointer-arith'
25
- - '-Wredundant-decls'
26
23
  - '-Wswitch-default'
27
24
  - '-Wstrict-aliasing'
28
25
  - '-Wstrict-overflow=5'
@@ -33,16 +30,13 @@ compiler:
33
30
  - '-Wshadow'
34
31
  - '-Wundef'
35
32
  - '-Wwrite-strings'
36
- - '-Wno-missing-declarations'
37
- - '-Wno-missing-prototypes'
38
33
  - '-Wno-nested-externs'
39
- - '-Wno-redundant-decls'
40
34
  - '-Wno-unused-parameter'
41
35
  - '-Wno-variadic-macros'
42
36
  - '-Wbad-function-cast'
43
37
  - '-fms-extensions'
44
38
  - '-fno-omit-frame-pointer'
45
- - '-ffloat-store'
39
+ #- '-ffloat-store'
46
40
  - '-fno-common'
47
41
  - '-fstrict-aliasing'
48
42
  - '-std=gnu99'
@@ -61,8 +55,6 @@ compiler:
61
55
  - UNITY_INCLUDE_DOUBLE
62
56
  - UNITY_SUPPORT_TEST_CASES
63
57
  - UNITY_SUPPORT_64
64
- - UNITY_OUTPUT_FLUSH
65
- - UNITY_OMIT_OUTPUT_FLUSH_HEADER_DECLARATION
66
58
  object_files:
67
59
  prefix: '-o'
68
60
  extension: '.o'
@@ -4,6 +4,8 @@
4
4
  #include "unity.h"
5
5
  #include "Defs.h"
6
6
 
7
+ TEST_FILE("some_file.c")
8
+
7
9
  /* Notes about prefixes:
8
10
  test - normal default prefix. these are "always run" tests for this procedure
9
11
  spec - normal default prefix. required to run default setup/teardown calls.
@@ -183,9 +183,9 @@ void suitetest_ThisTestPassesWhenCustomSuiteSetupAndTeardownRan(void)
183
183
 
184
184
  void test_ShouldCallMockInitAndVerifyFunctionsForEachTest(void)
185
185
  {
186
- int passes = (int)(Unity.NumberOfTests - Unity.TestFailures - Unity.TestIgnores);
186
+ int passesOrIgnores = (int)(Unity.NumberOfTests - Unity.TestFailures);
187
187
  TEST_ASSERT_EQUAL_MESSAGE(Unity.NumberOfTests, mockMock_Init_Counter, "Mock Init Should Be Called Once Per Test Started");
188
- TEST_ASSERT_EQUAL_MESSAGE(passes, mockMock_Verify_Counter, "Mock Verify Should Be Called Once Per Test Passed");
188
+ TEST_ASSERT_EQUAL_MESSAGE(passesOrIgnores, mockMock_Verify_Counter, "Mock Verify Should Be Called Once Per Test Passed");
189
189
  TEST_ASSERT_EQUAL_MESSAGE(Unity.NumberOfTests - 1, mockMock_Destroy_Counter, "Mock Destroy Should Be Called Once Per Test Completed");
190
190
  TEST_ASSERT_EQUAL_MESSAGE(0, CMockMemFreeFinalCounter, "Mock MemFreeFinal Should Not Be Called Until End");
191
191
  }
@@ -1170,11 +1170,11 @@ def runner_test(test, runner, expected, test_defines, cmdline_args)
1170
1170
  simulator = build_simulator_fields
1171
1171
  cmdline_args ||= ""
1172
1172
  executable = $cfg['linker']['bin_files']['destination'] + test_base + $cfg['linker']['bin_files']['extension'] + " #{cmdline_args}"
1173
- if simulator.nil?
1174
- cmd_str = executable
1175
- else
1176
- cmd_str = "#{simulator[:command]} #{simulator[:pre_support]} #{executable} #{simulator[:post_support]}"
1177
- end
1173
+ cmd_str = if simulator.nil?
1174
+ executable
1175
+ else
1176
+ "#{simulator[:command]} #{simulator[:pre_support]} #{executable} #{simulator[:post_support]}"
1177
+ end
1178
1178
  output = execute(cmd_str, true)
1179
1179
 
1180
1180
  #compare to the expected pass/fail
@@ -5,8 +5,8 @@
5
5
  ========================================== */
6
6
 
7
7
  #include "unity.h"
8
- #include <setjmp.h>
9
8
  #include <string.h>
9
+ #include <stdint.h>
10
10
 
11
11
  // Dividing by these constants produces +/- infinity.
12
12
  // The rationale is given in UnityAssertFloatIsInf's body.
@@ -59,19 +59,24 @@ static int SetToOneMeanWeAlreadyCheckedThisGuy;
59
59
 
60
60
  void setUp(void)
61
61
  {
62
- SetToOneToFailInTearDown = 0;
63
- SetToOneMeanWeAlreadyCheckedThisGuy = 0;
62
+ SetToOneToFailInTearDown = 0;
63
+ SetToOneMeanWeAlreadyCheckedThisGuy = 0;
64
64
  }
65
65
 
66
66
  void tearDown(void)
67
67
  {
68
- if (SetToOneToFailInTearDown == 1)
69
- TEST_FAIL_MESSAGE("<= Failed in tearDown");
70
- if ((SetToOneMeanWeAlreadyCheckedThisGuy == 0) && (Unity.CurrentTestFailed > 0))
71
- {
72
- UnityPrint(": [[[[ Test Should Have Passed But Did Not ]]]]");
73
- UNITY_OUTPUT_CHAR('\n');
74
- }
68
+ endPutcharSpy(); /* Stop suppressing test output */
69
+ if (SetToOneToFailInTearDown == 1)
70
+ {
71
+ /* These will be skipped internally if already failed/ignored */
72
+ TEST_FAIL_MESSAGE("<= Failed in tearDown");
73
+ TEST_IGNORE_MESSAGE("<= Ignored in tearDown");
74
+ }
75
+ if ((SetToOneMeanWeAlreadyCheckedThisGuy == 0) && (Unity.CurrentTestFailed > 0))
76
+ {
77
+ UnityPrint(": [[[[ Test Should Have Passed But Did Not ]]]]");
78
+ UNITY_OUTPUT_CHAR('\n');
79
+ }
75
80
  }
76
81
 
77
82
  void testUnitySizeInitializationReminder(void)
@@ -94,7 +99,9 @@ void testUnitySizeInitializationReminder(void)
94
99
  UNITY_COUNTER_TYPE TestIgnores;
95
100
  UNITY_COUNTER_TYPE CurrentTestFailed;
96
101
  UNITY_COUNTER_TYPE CurrentTestIgnored;
102
+ #ifndef UNITY_EXCLUDE_SETJMP_H
97
103
  jmp_buf AbortFrame;
104
+ #endif
98
105
  } _Expected_Unity;
99
106
  #else
100
107
  struct {
@@ -108,7 +115,9 @@ void testUnitySizeInitializationReminder(void)
108
115
  UNITY_COUNTER_TYPE TestIgnores;
109
116
  UNITY_COUNTER_TYPE CurrentTestFailed;
110
117
  UNITY_COUNTER_TYPE CurrentTestIgnored;
118
+ #ifndef UNITY_EXCLUDE_SETJMP_H
111
119
  jmp_buf AbortFrame;
120
+ #endif
112
121
  } _Expected_Unity;
113
122
  #endif
114
123
 
@@ -1510,6 +1519,61 @@ void testNotEqualStringArrayLengthZero(void)
1510
1519
  VERIFY_FAILS_END
1511
1520
  }
1512
1521
 
1522
+ void testEqualStringEachEqual(void)
1523
+ {
1524
+ const char *testStrings1[] = { "foo", "foo", "foo", "foo" };
1525
+ const char *testStrings2[] = { "boo", "boo", "boo", "zoo" };
1526
+ const char *testStrings3[] = { "", "", "", "" };
1527
+
1528
+ TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings1, 4);
1529
+ TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings1, 1);
1530
+ TEST_ASSERT_EACH_EQUAL_STRING("boo", testStrings2, 3);
1531
+ TEST_ASSERT_EACH_EQUAL_STRING("", testStrings3, 4);
1532
+ }
1533
+
1534
+ void testNotEqualStringEachEqual1(void)
1535
+ {
1536
+ const char *testStrings[] = { "foo", "foo", "foo", "moo" };
1537
+
1538
+ EXPECT_ABORT_BEGIN
1539
+ TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings, 4);
1540
+ VERIFY_FAILS_END
1541
+ }
1542
+
1543
+ void testNotEqualStringEachEqual2(void)
1544
+ {
1545
+ const char *testStrings[] = { "boo", "foo", "foo", "foo" };
1546
+
1547
+ EXPECT_ABORT_BEGIN
1548
+ TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings, 4);
1549
+ VERIFY_FAILS_END
1550
+ }
1551
+
1552
+ void testNotEqualStringEachEqual3(void)
1553
+ {
1554
+ const char *testStrings[] = { "foo", "foo", "foo", NULL };
1555
+
1556
+ EXPECT_ABORT_BEGIN
1557
+ TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings, 4);
1558
+ VERIFY_FAILS_END
1559
+ }
1560
+
1561
+ void testNotEqualStringEachEqual4(void)
1562
+ {
1563
+ const char *testStrings[] = { "foo", "foo", "woo", "foo" };
1564
+
1565
+ EXPECT_ABORT_BEGIN
1566
+ TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings, 4);
1567
+ VERIFY_FAILS_END
1568
+ }
1569
+
1570
+ void testNotEqualStringEachEqual5(void)
1571
+ {
1572
+ EXPECT_ABORT_BEGIN
1573
+ TEST_ASSERT_EACH_EQUAL_STRING("foo", NULL, 1);
1574
+ VERIFY_FAILS_END
1575
+ }
1576
+
1513
1577
  void testEqualMemory(void)
1514
1578
  {
1515
1579
  const char *testString = "whatever";
@@ -1632,6 +1696,65 @@ void testNotEqualIntArraysLengthZero(void)
1632
1696
  VERIFY_FAILS_END
1633
1697
  }
1634
1698
 
1699
+ void testEqualIntEachEqual(void)
1700
+ {
1701
+ int p0[] = {1, 1, 1, 1};
1702
+ int p1[] = {987, 987, 987, 987};
1703
+ int p2[] = {-2, -2, -2, -3};
1704
+ int p3[] = {1, 5, 600, 700};
1705
+
1706
+ TEST_ASSERT_EACH_EQUAL_INT(1, p0, 1);
1707
+ TEST_ASSERT_EACH_EQUAL_INT(1, p0, 4);
1708
+ TEST_ASSERT_EACH_EQUAL_INT(987, p1, 4);
1709
+ TEST_ASSERT_EACH_EQUAL_INT(-2, p2, 3);
1710
+ TEST_ASSERT_EACH_EQUAL_INT(1, p3, 1);
1711
+ }
1712
+
1713
+ void testNotEqualIntEachEqualNullActual(void)
1714
+ {
1715
+ int* p1 = NULL;
1716
+
1717
+ EXPECT_ABORT_BEGIN
1718
+ TEST_ASSERT_EACH_EQUAL_INT(1, p1, 4);
1719
+ VERIFY_FAILS_END
1720
+ }
1721
+
1722
+ void testNotEqualIntEachEqual1(void)
1723
+ {
1724
+ int p0[] = {1, 1, 1, -2};
1725
+
1726
+ EXPECT_ABORT_BEGIN
1727
+ TEST_ASSERT_EACH_EQUAL_INT(1, p0, 4);
1728
+ VERIFY_FAILS_END
1729
+ }
1730
+
1731
+ void testNotEqualIntEachEqual2(void)
1732
+ {
1733
+ int p0[] = {-5, -5, -1, -5};
1734
+
1735
+ EXPECT_ABORT_BEGIN
1736
+ TEST_ASSERT_EACH_EQUAL_INT(-5, p0, 4);
1737
+ VERIFY_FAILS_END
1738
+ }
1739
+
1740
+ void testNotEqualIntEachEqual3(void)
1741
+ {
1742
+ int p0[] = {1, 88, 88, 88};
1743
+
1744
+ EXPECT_ABORT_BEGIN
1745
+ TEST_ASSERT_EACH_EQUAL_INT(88, p0, 4);
1746
+ VERIFY_FAILS_END
1747
+ }
1748
+
1749
+ void testNotEqualEachEqualLengthZero(void)
1750
+ {
1751
+ UNITY_UINT32 p0[1] = {1};
1752
+
1753
+ EXPECT_ABORT_BEGIN
1754
+ TEST_ASSERT_EACH_EQUAL_INT(0, p0, 0);
1755
+ VERIFY_FAILS_END
1756
+ }
1757
+
1635
1758
  void testEqualPtrArrays(void)
1636
1759
  {
1637
1760
  char A = 1;
@@ -1712,6 +1835,77 @@ void testNotEqualPtrArrays3(void)
1712
1835
  VERIFY_FAILS_END
1713
1836
  }
1714
1837
 
1838
+ void testEqualPtrEachEqual(void)
1839
+ {
1840
+ char A = 1;
1841
+ char B = 2;
1842
+ char C = 3;
1843
+ char* p0[] = {&A, &A, &A};
1844
+ char* p1[] = {&A, &B, &C, &A};
1845
+ char* p2[] = {&B, &B};
1846
+ char* p3[] = {&C};
1847
+
1848
+ TEST_ASSERT_EACH_EQUAL_PTR(&A, p0, 1);
1849
+ TEST_ASSERT_EACH_EQUAL_PTR(&A, p0, 3);
1850
+ TEST_ASSERT_EACH_EQUAL_PTR(&A, p1, 1);
1851
+ TEST_ASSERT_EACH_EQUAL_PTR(&B, p2, 2);
1852
+ TEST_ASSERT_EACH_EQUAL_PTR(&C, p3, 1);
1853
+ }
1854
+
1855
+ void testNotEqualPtrEachEqualNullExpected(void)
1856
+ {
1857
+ char A = 1;
1858
+ char B = 1;
1859
+ char* p0[] = {&A, &B};
1860
+
1861
+ EXPECT_ABORT_BEGIN
1862
+ TEST_ASSERT_EACH_EQUAL_PTR(&A, p0, 2);
1863
+ VERIFY_FAILS_END
1864
+ }
1865
+
1866
+ void testNotEqualPtrEachEqualNullActual(void)
1867
+ {
1868
+ char A = 1;
1869
+ char** p0 = NULL;
1870
+
1871
+ EXPECT_ABORT_BEGIN
1872
+ TEST_ASSERT_EACH_EQUAL_PTR(&A, p0, 2);
1873
+ VERIFY_FAILS_END
1874
+ }
1875
+
1876
+ void testNotEqualPtrEachEqual1(void)
1877
+ {
1878
+ char A = 1;
1879
+ char B = 1;
1880
+ char* p0[] = {&A, &A, &A, &B};
1881
+
1882
+ EXPECT_ABORT_BEGIN
1883
+ TEST_ASSERT_EACH_EQUAL_PTR(&A, p0, 4);
1884
+ VERIFY_FAILS_END
1885
+ }
1886
+
1887
+ void testNotEqualPtrEachEqual2(void)
1888
+ {
1889
+ char A = 1;
1890
+ char B = 1;
1891
+ char* p0[] = {&B, &B, &A, &B};
1892
+
1893
+ EXPECT_ABORT_BEGIN
1894
+ TEST_ASSERT_EACH_EQUAL_PTR(&B, p0, 4);
1895
+ VERIFY_FAILS_END
1896
+ }
1897
+
1898
+ void testNotEqualPtrEachEqual3(void)
1899
+ {
1900
+ char A = 1;
1901
+ char B = 1;
1902
+ char* p0[] = {&A, &B, &B, &B};
1903
+
1904
+ EXPECT_ABORT_BEGIN
1905
+ TEST_ASSERT_EACH_EQUAL_PTR(&B, p0, 4);
1906
+ VERIFY_FAILS_END
1907
+ }
1908
+
1715
1909
  void testEqualInt8Arrays(void)
1716
1910
  {
1717
1911
  UNITY_INT8 p0[] = {1, 8, 117, -2};
@@ -1736,6 +1930,29 @@ void testNotEqualInt8Arrays(void)
1736
1930
  VERIFY_FAILS_END
1737
1931
  }
1738
1932
 
1933
+ void testEqualInt8EachEqual(void)
1934
+ {
1935
+ UNITY_INT8 p0[] = {1, 1, 1, 1};
1936
+ UNITY_INT8 p1[] = {117, 117, 117, -2};
1937
+ UNITY_INT8 p2[] = {-1, -1, 117, 2};
1938
+ UNITY_INT8 p3[] = {1, 50, 60, 70};
1939
+
1940
+ TEST_ASSERT_EACH_EQUAL_INT8(1, p0, 1);
1941
+ TEST_ASSERT_EACH_EQUAL_INT8(1, p0, 4);
1942
+ TEST_ASSERT_EACH_EQUAL_INT8(117, p1, 3);
1943
+ TEST_ASSERT_EACH_EQUAL_INT8(-1, p2, 2);
1944
+ TEST_ASSERT_EACH_EQUAL_INT8(1, p3, 1);
1945
+ }
1946
+
1947
+ void testNotEqualInt8EachEqual(void)
1948
+ {
1949
+ UNITY_INT8 p0[] = {1, 8, 36, -2};
1950
+
1951
+ EXPECT_ABORT_BEGIN
1952
+ TEST_ASSERT_EACH_EQUAL_INT8(1, p0, 2);
1953
+ VERIFY_FAILS_END
1954
+ }
1955
+
1739
1956
  void testEqualUIntArrays(void)
1740
1957
  {
1741
1958
  unsigned int p0[] = {1, 8, 987, 65132u};
@@ -1780,6 +1997,47 @@ void testNotEqualUIntArrays3(void)
1780
1997
  VERIFY_FAILS_END
1781
1998
  }
1782
1999
 
2000
+ void testEqualUIntEachEqual(void)
2001
+ {
2002
+ unsigned int p0[] = {1, 1, 1, 1};
2003
+ unsigned int p1[] = {65132u, 65132u, 65132u, 65132u};
2004
+ unsigned int p2[] = {8, 8, 987, 2};
2005
+ unsigned int p3[] = {1, 500, 600, 700};
2006
+
2007
+ TEST_ASSERT_EACH_EQUAL_UINT(1, p0, 1);
2008
+ TEST_ASSERT_EACH_EQUAL_UINT(1, p0, 4);
2009
+ TEST_ASSERT_EACH_EQUAL_UINT(65132u, p1, 4);
2010
+ TEST_ASSERT_EACH_EQUAL_UINT(8, p2, 2);
2011
+ TEST_ASSERT_EACH_EQUAL_UINT(1, p3, 1);
2012
+ }
2013
+
2014
+ void testNotEqualUIntEachEqual1(void)
2015
+ {
2016
+ unsigned int p0[] = {1, 65132u, 65132u, 65132u};
2017
+
2018
+ EXPECT_ABORT_BEGIN
2019
+ TEST_ASSERT_EACH_EQUAL_UINT(65132u, p0, 4);
2020
+ VERIFY_FAILS_END
2021
+ }
2022
+
2023
+ void testNotEqualUIntEachEqual2(void)
2024
+ {
2025
+ unsigned int p0[] = {987, 8, 987, 987};
2026
+
2027
+ EXPECT_ABORT_BEGIN
2028
+ TEST_ASSERT_EACH_EQUAL_UINT(987, p0, 4);
2029
+ VERIFY_FAILS_END
2030
+ }
2031
+
2032
+ void testNotEqualUIntEachEqual3(void)
2033
+ {
2034
+ unsigned int p0[] = {1, 1, 1, 65132u};
2035
+
2036
+ EXPECT_ABORT_BEGIN
2037
+ TEST_ASSERT_EACH_EQUAL_UINT(1, p0, 4);
2038
+ VERIFY_FAILS_END
2039
+ }
2040
+
1783
2041
  void testEqualInt16Arrays(void)
1784
2042
  {
1785
2043
  UNITY_INT16 p0[] = {1, 8, 117, 3};
@@ -1804,6 +2062,29 @@ void testNotEqualInt16Arrays(void)
1804
2062
  VERIFY_FAILS_END
1805
2063
  }
1806
2064
 
2065
+ void testEqualInt16EachEqual(void)
2066
+ {
2067
+ UNITY_INT16 p0[] = {1, 1, 1, 1};
2068
+ UNITY_INT16 p1[] = {32111, 32111, 32111, 3};
2069
+ UNITY_INT16 p2[] = {-1, -1, -1, 2};
2070
+ UNITY_INT16 p3[] = {1, 50, 60, 70};
2071
+
2072
+ TEST_ASSERT_EACH_EQUAL_INT16(1, p0, 1);
2073
+ TEST_ASSERT_EACH_EQUAL_INT16(1, p0, 4);
2074
+ TEST_ASSERT_EACH_EQUAL_INT16(32111, p1, 3);
2075
+ TEST_ASSERT_EACH_EQUAL_INT16(-1, p2, 3);
2076
+ TEST_ASSERT_EACH_EQUAL_INT16(1, p3, 1);
2077
+ }
2078
+
2079
+ void testNotEqualInt16EachEqual(void)
2080
+ {
2081
+ UNITY_INT16 p0[] = {127, 127, 127, 3};
2082
+
2083
+ EXPECT_ABORT_BEGIN
2084
+ TEST_ASSERT_EACH_EQUAL_INT16(127, p0, 4);
2085
+ VERIFY_FAILS_END
2086
+ }
2087
+
1807
2088
  void testEqualInt32Arrays(void)
1808
2089
  {
1809
2090
  UNITY_INT32 p0[] = {1, 8, 117, 3};
@@ -1828,6 +2109,29 @@ void testNotEqualInt32Arrays(void)
1828
2109
  VERIFY_FAILS_END
1829
2110
  }
1830
2111
 
2112
+ void testEqualInt32EachEqual(void)
2113
+ {
2114
+ UNITY_INT32 p0[] = {8, 8, 8, 8};
2115
+ UNITY_INT32 p1[] = {65537, 65537, 65537, 65537};
2116
+ UNITY_INT32 p2[] = {-3, -3, -3, 2};
2117
+ UNITY_INT32 p3[] = {1, 50, 60, 70};
2118
+
2119
+ TEST_ASSERT_EACH_EQUAL_INT32(8, p0, 1);
2120
+ TEST_ASSERT_EACH_EQUAL_INT32(8, p0, 4);
2121
+ TEST_ASSERT_EACH_EQUAL_INT32(65537, p1, 4);
2122
+ TEST_ASSERT_EACH_EQUAL_INT32(-3, p2, 3);
2123
+ TEST_ASSERT_EACH_EQUAL_INT32(1, p3, 1);
2124
+ }
2125
+
2126
+ void testNotEqualInt32EachEqual(void)
2127
+ {
2128
+ UNITY_INT32 p0[] = {127, 8, 127, 127};
2129
+
2130
+ EXPECT_ABORT_BEGIN
2131
+ TEST_ASSERT_EACH_EQUAL_INT32(127, p0, 4);
2132
+ VERIFY_FAILS_END
2133
+ }
2134
+
1831
2135
  void testEqualUINT8Arrays(void)
1832
2136
  {
1833
2137
  UNITY_UINT8 p0[] = {1, 8, 100, 127};
@@ -2095,10 +2399,10 @@ void testNotEqualHEX16Arrays3(void)
2095
2399
 
2096
2400
  void testEqualHEX8Arrays(void)
2097
2401
  {
2098
- unsigned short p0[] = {1, 8, 254u, 123};
2099
- unsigned short p1[] = {1, 8, 254u, 123};
2100
- unsigned short p2[] = {1, 8, 254u, 2};
2101
- unsigned short p3[] = {1, 23, 25, 26};
2402
+ unsigned char p0[] = {1, 8, 254u, 123};
2403
+ unsigned char p1[] = {1, 8, 254u, 123};
2404
+ unsigned char p2[] = {1, 8, 254u, 2};
2405
+ unsigned char p3[] = {1, 23, 25, 26};
2102
2406
 
2103
2407
  TEST_ASSERT_EQUAL_HEX8_ARRAY(p0, p0, 1);
2104
2408
  TEST_ASSERT_EQUAL_HEX8_ARRAY(p0, p0, 4);
@@ -2137,115 +2441,467 @@ void testNotEqualHEX8Arrays3(void)
2137
2441
  VERIFY_FAILS_END
2138
2442
  }
2139
2443
 
2140
- void testEqualMemoryArrays(void)
2444
+ void testEqualUINT8EachEqual(void)
2141
2445
  {
2142
- int p0[] = {1, 8, 987, -2};
2143
- int p1[] = {1, 8, 987, -2};
2144
- int p2[] = {1, 8, 987, 2};
2145
- int p3[] = {1, 500, 600, 700};
2446
+ UNITY_UINT8 p0[] = {127u, 127u, 127u, 127u};
2447
+ UNITY_UINT8 p1[] = {1u, 1u, 1u, 1u};
2448
+ UNITY_UINT8 p2[] = {128u, 128u, 128u, 2u};
2449
+ UNITY_UINT8 p3[] = {1u, 50u, 60u, 70u};
2146
2450
 
2147
- TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p0, sizeof(int), 1);
2148
- TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p0, sizeof(int), 4);
2149
- TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p1, sizeof(int), 4);
2150
- TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p2, sizeof(int), 3);
2151
- TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p3, sizeof(int), 1);
2451
+ TEST_ASSERT_EACH_EQUAL_UINT8(127u, p0, 1);
2452
+ TEST_ASSERT_EACH_EQUAL_UINT8(127u, p0, 4);
2453
+ TEST_ASSERT_EACH_EQUAL_UINT8(1u, p1, 4);
2454
+ TEST_ASSERT_EACH_EQUAL_UINT8(128u, p2, 3);
2455
+ TEST_ASSERT_EACH_EQUAL_UINT8(1u, p3, 1);
2152
2456
  }
2153
2457
 
2154
- void testNotEqualMemoryArraysExpectedNull(void)
2458
+ void testNotEqualUINT8EachEqual1(void)
2155
2459
  {
2156
- int* p0 = NULL;
2157
- int p1[] = {1, 8, 987, 2};
2460
+ unsigned char p0[] = {127u, 127u, 128u, 127u};
2158
2461
 
2159
2462
  EXPECT_ABORT_BEGIN
2160
- TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p1, sizeof(int), 4);
2463
+ TEST_ASSERT_EACH_EQUAL_UINT8(127u, p0, 4);
2161
2464
  VERIFY_FAILS_END
2162
2465
  }
2163
2466
 
2164
- void testNotEqualMemoryArraysActualNull(void)
2467
+ void testNotEqualUINT8EachEqual2(void)
2165
2468
  {
2166
- int p0[] = {1, 8, 987, -2};
2167
- int* p1 = NULL;
2469
+ unsigned char p0[] = {1, 1, 1, 127u};
2168
2470
 
2169
2471
  EXPECT_ABORT_BEGIN
2170
- TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p1, sizeof(int), 4);
2472
+ TEST_ASSERT_EACH_EQUAL_UINT8(1, p0, 4);
2171
2473
  VERIFY_FAILS_END
2172
2474
  }
2173
2475
 
2174
- void testNotEqualMemoryArrays1(void)
2476
+ void testNotEqualUINT8EachEqual3(void)
2175
2477
  {
2176
- int p0[] = {1, 8, 987, -2};
2177
- int p1[] = {1, 8, 987, 2};
2478
+ unsigned char p0[] = {54u, 55u, 55u, 55u};
2178
2479
 
2179
2480
  EXPECT_ABORT_BEGIN
2180
- TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p1, sizeof(int), 4);
2481
+ TEST_ASSERT_EACH_EQUAL_UINT8(55u, p0, 4);
2181
2482
  VERIFY_FAILS_END
2182
2483
  }
2183
2484
 
2184
- void testNotEqualMemoryArrays2(void)
2485
+ void testEqualUINT16EachEqual(void)
2185
2486
  {
2186
- int p0[] = {1, 8, 987, -2};
2187
- int p1[] = {2, 8, 987, -2};
2487
+ unsigned short p0[] = {65132u, 65132u, 65132u, 65132u};
2488
+ unsigned short p1[] = {987, 987, 987, 987};
2489
+ unsigned short p2[] = {1, 1, 1, 2};
2490
+ unsigned short p3[] = {1, 500, 600, 700};
2491
+
2492
+ TEST_ASSERT_EACH_EQUAL_UINT16(65132u, p0, 1);
2493
+ TEST_ASSERT_EACH_EQUAL_UINT16(65132u, p0, 4);
2494
+ TEST_ASSERT_EACH_EQUAL_UINT16(987, p1, 4);
2495
+ TEST_ASSERT_EACH_EQUAL_UINT16(1, p2, 3);
2496
+ TEST_ASSERT_EACH_EQUAL_UINT16(1, p3, 1);
2497
+ }
2498
+
2499
+ void testNotEqualUINT16EachEqual1(void)
2500
+ {
2501
+ unsigned short p0[] = {1, 65132u, 65132u, 65132u};
2188
2502
 
2189
2503
  EXPECT_ABORT_BEGIN
2190
- TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p1, sizeof(int), 4);
2504
+ TEST_ASSERT_EACH_EQUAL_UINT16(65132u, p0, 4);
2191
2505
  VERIFY_FAILS_END
2192
2506
  }
2193
2507
 
2194
- void testNotEqualMemoryArrays3(void)
2508
+ void testNotEqualUINT16EachEqual2(void)
2195
2509
  {
2196
- int p0[] = {1, 8, 987, -2};
2197
- int p1[] = {1, 8, 986, -2};
2510
+ unsigned short p0[] = {65132u, 65132u, 987, 65132u};
2198
2511
 
2199
2512
  EXPECT_ABORT_BEGIN
2200
- TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p1, sizeof(int), 4);
2513
+ TEST_ASSERT_EACH_EQUAL_UINT16(65132u, p0, 4);
2201
2514
  VERIFY_FAILS_END
2202
2515
  }
2203
2516
 
2204
- void testProtection(void)
2517
+ void testNotEqualUINT16EachEqual3(void)
2205
2518
  {
2206
- volatile int mask = 0;
2207
-
2208
- if (TEST_PROTECT())
2209
- {
2210
- mask |= 1;
2211
- TEST_ABORT();
2212
- }
2213
- else
2214
- {
2215
- Unity.CurrentTestFailed = 0;
2216
- mask |= 2;
2217
- }
2519
+ unsigned short p0[] = {65132u, 65132u, 65132u, 65133u};
2218
2520
 
2219
- TEST_ASSERT_EQUAL(3, mask);
2521
+ EXPECT_ABORT_BEGIN
2522
+ TEST_ASSERT_EACH_EQUAL_UINT16(65132u, p0, 4);
2523
+ VERIFY_FAILS_END
2220
2524
  }
2221
2525
 
2222
- void testIgnoredAndThenFailInTearDown(void)
2526
+ void testEqualUINT32EachEqual(void)
2223
2527
  {
2224
- SetToOneToFailInTearDown = 1;
2225
- TEST_IGNORE();
2226
- }
2528
+ UNITY_UINT32 p0[] = {65132u, 65132u, 65132u, 65132u};
2529
+ UNITY_UINT32 p1[] = {987, 987, 987, 987};
2530
+ UNITY_UINT32 p2[] = {8, 8, 8, 2};
2531
+ UNITY_UINT32 p3[] = {1, 500, 600, 700};
2227
2532
 
2228
- // Tricky series of macros to set USING_OUTPUT_SPY
2229
- #define USING_SPY_AS(a) EXPAND_AND_USE_2ND(ASSIGN_VALUE(a), 0)
2230
- #define ASSIGN_VALUE(a) VAL_##a
2231
- #define VAL_putcharSpy 0, 1
2232
- #define EXPAND_AND_USE_2ND(a, b) SECOND_PARAM(a, b, throwaway)
2233
- #define SECOND_PARAM(a, b, ...) b
2234
- #if USING_SPY_AS(UNITY_OUTPUT_CHAR)
2235
- #define USING_OUTPUT_SPY // true only if UNITY_OUTPUT_CHAR = putcharSpy
2236
- #endif
2533
+ TEST_ASSERT_EACH_EQUAL_UINT32(65132u, p0, 1);
2534
+ TEST_ASSERT_EACH_EQUAL_UINT32(65132u, p0, 4);
2535
+ TEST_ASSERT_EACH_EQUAL_UINT32(987, p1, 4);
2536
+ TEST_ASSERT_EACH_EQUAL_UINT32(8, p2, 3);
2537
+ TEST_ASSERT_EACH_EQUAL_UINT32(1, p3, 1);
2538
+ }
2237
2539
 
2238
- #ifdef USING_OUTPUT_SPY
2239
- #include <stdio.h>
2240
- #define SPY_BUFFER_MAX 40
2241
- static char putcharSpyBuffer[SPY_BUFFER_MAX];
2242
- #endif
2243
- static int indexSpyBuffer;
2244
- static int putcharSpyEnabled;
2540
+ void testNotEqualUINT32EachEqual1(void)
2541
+ {
2542
+ UNITY_UINT32 p0[] = {65132u, 65132u, 987, 65132u};
2245
2543
 
2246
- void startPutcharSpy(void) {indexSpyBuffer = 0; putcharSpyEnabled = 1;}
2544
+ EXPECT_ABORT_BEGIN
2545
+ TEST_ASSERT_EACH_EQUAL_UINT32(65132u, p0, 4);
2546
+ VERIFY_FAILS_END
2547
+ }
2247
2548
 
2248
- void endPutcharSpy(void) {putcharSpyEnabled = 0;}
2549
+ void testNotEqualUINT32EachEqual2(void)
2550
+ {
2551
+ UNITY_UINT32 p0[] = {1, 987, 987, 987};
2552
+
2553
+ EXPECT_ABORT_BEGIN
2554
+ TEST_ASSERT_EACH_EQUAL_UINT32(987, p0, 4);
2555
+ VERIFY_FAILS_END
2556
+ }
2557
+
2558
+ void testNotEqualUINT32EachEqual3(void)
2559
+ {
2560
+ UNITY_UINT32 p0[] = {1, 1, 1, 65132u};
2561
+
2562
+ EXPECT_ABORT_BEGIN
2563
+ TEST_ASSERT_EACH_EQUAL_UINT32(1, p0, 4);
2564
+ VERIFY_FAILS_END
2565
+ }
2566
+
2567
+ void testEqualHEXEachEqual(void)
2568
+ {
2569
+ UNITY_UINT32 p0[] = {65132u, 65132u, 65132u, 65132u};
2570
+ UNITY_UINT32 p1[] = {987, 987, 987, 987};
2571
+ UNITY_UINT32 p2[] = {8, 8, 8, 2};
2572
+ UNITY_UINT32 p3[] = {1, 500, 600, 700};
2573
+
2574
+ TEST_ASSERT_EACH_EQUAL_HEX(65132u, p0, 1);
2575
+ TEST_ASSERT_EACH_EQUAL_HEX(65132u, p0, 4);
2576
+ TEST_ASSERT_EACH_EQUAL_HEX(987, p1, 4);
2577
+ TEST_ASSERT_EACH_EQUAL_HEX(8, p2, 3);
2578
+ TEST_ASSERT_EACH_EQUAL_HEX(1, p3, 1);
2579
+ }
2580
+
2581
+ void testNotEqualHEXEachEqual1(void)
2582
+ {
2583
+ UNITY_UINT32 p0[] = {1, 65132u, 65132u, 65132u};
2584
+
2585
+ EXPECT_ABORT_BEGIN
2586
+ TEST_ASSERT_EACH_EQUAL_HEX32(65132u, p0, 4);
2587
+ VERIFY_FAILS_END
2588
+ }
2589
+
2590
+ void testNotEqualHEXEachEqual2(void)
2591
+ {
2592
+ UNITY_UINT32 p0[] = {987, 987, 987, 65132u};
2593
+
2594
+ EXPECT_ABORT_BEGIN
2595
+ TEST_ASSERT_EACH_EQUAL_HEX32(987, p0, 4);
2596
+ VERIFY_FAILS_END
2597
+ }
2598
+
2599
+ void testNotEqualHEXEachEqual3(void)
2600
+ {
2601
+ UNITY_UINT32 p0[] = {8, 8, 987, 8};
2602
+
2603
+ EXPECT_ABORT_BEGIN
2604
+ TEST_ASSERT_EACH_EQUAL_HEX(8, p0, 4);
2605
+ VERIFY_FAILS_END
2606
+ }
2607
+
2608
+ void testEqualHEX32EachEqual(void)
2609
+ {
2610
+ UNITY_UINT32 p0[] = {65132u, 65132u, 65132u, 65132u};
2611
+ UNITY_UINT32 p1[] = {987, 987, 987, 987};
2612
+ UNITY_UINT32 p2[] = {8, 8, 8, 2};
2613
+ UNITY_UINT32 p3[] = {1, 500, 600, 700};
2614
+
2615
+ TEST_ASSERT_EACH_EQUAL_HEX32(65132u, p0, 1);
2616
+ TEST_ASSERT_EACH_EQUAL_HEX32(65132u, p0, 4);
2617
+ TEST_ASSERT_EACH_EQUAL_HEX32(987, p1, 4);
2618
+ TEST_ASSERT_EACH_EQUAL_HEX32(8, p2, 3);
2619
+ TEST_ASSERT_EACH_EQUAL_HEX32(1, p3, 1);
2620
+ }
2621
+
2622
+ void testNotEqualHEX32EachEqual1(void)
2623
+ {
2624
+ UNITY_UINT32 p0[] = {65132u, 8, 65132u, 65132u};
2625
+
2626
+ EXPECT_ABORT_BEGIN
2627
+ TEST_ASSERT_EACH_EQUAL_HEX32(65132u, p0, 4);
2628
+ VERIFY_FAILS_END
2629
+ }
2630
+
2631
+ void testNotEqualHEX32EachEqual2(void)
2632
+ {
2633
+ UNITY_UINT32 p0[] = {1, 987, 987, 987};
2634
+
2635
+ EXPECT_ABORT_BEGIN
2636
+ TEST_ASSERT_EACH_EQUAL_HEX32(987, p0, 4);
2637
+ VERIFY_FAILS_END
2638
+ }
2639
+
2640
+ void testNotEqualHEX32EachEqual3(void)
2641
+ {
2642
+ UNITY_UINT32 p0[] = {8, 8, 8, 65132u};
2643
+
2644
+ EXPECT_ABORT_BEGIN
2645
+ TEST_ASSERT_EACH_EQUAL_HEX32(8, p0, 4);
2646
+ VERIFY_FAILS_END
2647
+ }
2648
+
2649
+ void testEqualHEX16EachEqual(void)
2650
+ {
2651
+ UNITY_UINT16 p0[] = {65132u, 65132u, 65132u, 65132u};
2652
+ UNITY_UINT16 p1[] = {987, 987, 987, 987};
2653
+ UNITY_UINT16 p2[] = {8, 8, 8, 2};
2654
+ UNITY_UINT16 p3[] = {1, 500, 600, 700};
2655
+
2656
+ TEST_ASSERT_EACH_EQUAL_HEX16(65132u, p0, 1);
2657
+ TEST_ASSERT_EACH_EQUAL_HEX16(65132u, p0, 4);
2658
+ TEST_ASSERT_EACH_EQUAL_HEX16(987, p1, 4);
2659
+ TEST_ASSERT_EACH_EQUAL_HEX16(8, p2, 3);
2660
+ TEST_ASSERT_EACH_EQUAL_HEX16(1, p3, 1);
2661
+ }
2662
+
2663
+ void testNotEqualHEX16EachEqual1(void)
2664
+ {
2665
+ unsigned short p0[] = {65132u, 65132u, 987, 65132u};
2666
+
2667
+ EXPECT_ABORT_BEGIN
2668
+ TEST_ASSERT_EACH_EQUAL_HEX16(65132u, p0, 4);
2669
+ VERIFY_FAILS_END
2670
+ }
2671
+
2672
+ void testNotEqualHEX16EachEqual2(void)
2673
+ {
2674
+ unsigned short p0[] = {1, 987, 987, 987};
2675
+
2676
+ EXPECT_ABORT_BEGIN
2677
+ TEST_ASSERT_EACH_EQUAL_HEX16(987, p0, 4);
2678
+ VERIFY_FAILS_END
2679
+ }
2680
+
2681
+ void testNotEqualHEX16EachEqual3(void)
2682
+ {
2683
+ unsigned short p0[] = {8, 8, 8, 65132u};
2684
+
2685
+ EXPECT_ABORT_BEGIN
2686
+ TEST_ASSERT_EACH_EQUAL_HEX16(8, p0, 4);
2687
+ VERIFY_FAILS_END
2688
+ }
2689
+
2690
+ void testEqualHEX8EachEqual(void)
2691
+ {
2692
+ unsigned char p0[] = {254u, 254u, 254u, 254u};
2693
+ unsigned char p1[] = {123, 123, 123, 123};
2694
+ unsigned char p2[] = {8, 8, 8, 2};
2695
+ unsigned char p3[] = {1, 23, 25, 26};
2696
+
2697
+ TEST_ASSERT_EACH_EQUAL_HEX8(254u, p0, 1);
2698
+ TEST_ASSERT_EACH_EQUAL_HEX8(254u, p0, 4);
2699
+ TEST_ASSERT_EACH_EQUAL_HEX8(123, p1, 4);
2700
+ TEST_ASSERT_EACH_EQUAL_HEX8(8, p2, 3);
2701
+ TEST_ASSERT_EACH_EQUAL_HEX8(1, p3, 1);
2702
+ }
2703
+
2704
+ void testNotEqualHEX8EachEqual1(void)
2705
+ {
2706
+ unsigned char p0[] = {253u, 253u, 254u, 253u};
2707
+
2708
+ EXPECT_ABORT_BEGIN
2709
+ TEST_ASSERT_EACH_EQUAL_HEX8(253u, p0, 4);
2710
+ VERIFY_FAILS_END
2711
+ }
2712
+
2713
+ void testNotEqualHEX8EachEqual2(void)
2714
+ {
2715
+ unsigned char p0[] = {254u, 254u, 254u, 253u};
2716
+
2717
+ EXPECT_ABORT_BEGIN
2718
+ TEST_ASSERT_EACH_EQUAL_HEX8(254u, p0, 4);
2719
+ VERIFY_FAILS_END
2720
+ }
2721
+
2722
+ void testNotEqualHEX8EachEqual3(void)
2723
+ {
2724
+ unsigned char p0[] = {1, 8, 8, 8};
2725
+
2726
+ EXPECT_ABORT_BEGIN
2727
+ TEST_ASSERT_EACH_EQUAL_HEX8(8, p0, 4);
2728
+ VERIFY_FAILS_END
2729
+ }
2730
+
2731
+ void testEqualMemoryArrays(void)
2732
+ {
2733
+ int p0[] = {1, 8, 987, -2};
2734
+ int p1[] = {1, 8, 987, -2};
2735
+ int p2[] = {1, 8, 987, 2};
2736
+ int p3[] = {1, 500, 600, 700};
2737
+
2738
+ TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p0, sizeof(int), 1);
2739
+ TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p0, sizeof(int), 4);
2740
+ TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p1, sizeof(int), 4);
2741
+ TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p2, sizeof(int), 3);
2742
+ TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p3, sizeof(int), 1);
2743
+ }
2744
+
2745
+ void testNotEqualMemoryArraysExpectedNull(void)
2746
+ {
2747
+ int* p0 = NULL;
2748
+ int p1[] = {1, 8, 987, 2};
2749
+
2750
+ EXPECT_ABORT_BEGIN
2751
+ TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p1, sizeof(int), 4);
2752
+ VERIFY_FAILS_END
2753
+ }
2754
+
2755
+ void testNotEqualMemoryArraysActualNull(void)
2756
+ {
2757
+ int p0[] = {1, 8, 987, -2};
2758
+ int* p1 = NULL;
2759
+
2760
+ EXPECT_ABORT_BEGIN
2761
+ TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p1, sizeof(int), 4);
2762
+ VERIFY_FAILS_END
2763
+ }
2764
+
2765
+ void testNotEqualMemoryArrays1(void)
2766
+ {
2767
+ int p0[] = {1, 8, 987, -2};
2768
+ int p1[] = {1, 8, 987, 2};
2769
+
2770
+ EXPECT_ABORT_BEGIN
2771
+ TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p1, sizeof(int), 4);
2772
+ VERIFY_FAILS_END
2773
+ }
2774
+
2775
+ void testNotEqualMemoryArrays2(void)
2776
+ {
2777
+ int p0[] = {1, 8, 987, -2};
2778
+ int p1[] = {2, 8, 987, -2};
2779
+
2780
+ EXPECT_ABORT_BEGIN
2781
+ TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p1, sizeof(int), 4);
2782
+ VERIFY_FAILS_END
2783
+ }
2784
+
2785
+ void testNotEqualMemoryArrays3(void)
2786
+ {
2787
+ int p0[] = {1, 8, 987, -2};
2788
+ int p1[] = {1, 8, 986, -2};
2789
+
2790
+ EXPECT_ABORT_BEGIN
2791
+ TEST_ASSERT_EQUAL_MEMORY_ARRAY(p0, p1, sizeof(int), 4);
2792
+ VERIFY_FAILS_END
2793
+ }
2794
+
2795
+ void testEqualMemoryEachEqual(void)
2796
+ {
2797
+ int p0[] = {1, 8, 987, -2};
2798
+ int p1[] = {1, 8, 987, -2, 1, 8, 987, -2};
2799
+ int p2[] = {8, 8, 8, 2};
2800
+ int p3[] = {8, 500, 600, 700};
2801
+ int v = 8;
2802
+
2803
+ TEST_ASSERT_EACH_EQUAL_MEMORY(p0, p0, sizeof(int)*4, 1);
2804
+ TEST_ASSERT_EACH_EQUAL_MEMORY(p0, p1, sizeof(int)*4, 2);
2805
+ TEST_ASSERT_EACH_EQUAL_MEMORY(p0, p1, sizeof(int)*4, 1);
2806
+ TEST_ASSERT_EACH_EQUAL_MEMORY(&v, p2, sizeof(int), 3);
2807
+ TEST_ASSERT_EACH_EQUAL_MEMORY(&v, p3, sizeof(int), 1);
2808
+ }
2809
+
2810
+ void testNotEqualMemoryEachEqualExpectedNull(void)
2811
+ {
2812
+ int* p0 = NULL;
2813
+ int p1[] = {1, 8, 987, 2};
2814
+
2815
+ EXPECT_ABORT_BEGIN
2816
+ TEST_ASSERT_EACH_EQUAL_MEMORY(p0, p1, sizeof(int), 4);
2817
+ VERIFY_FAILS_END
2818
+ }
2819
+
2820
+ void testNotEqualMemoryEachEqualActualNull(void)
2821
+ {
2822
+ int p0[] = {1, 8, 987, -2};
2823
+ int* p1 = NULL;
2824
+
2825
+ EXPECT_ABORT_BEGIN
2826
+ TEST_ASSERT_EACH_EQUAL_MEMORY(p0, p1, sizeof(int), 4);
2827
+ VERIFY_FAILS_END
2828
+ }
2829
+
2830
+ void testNotEqualMemoryEachEqual1(void)
2831
+ {
2832
+ int p0[] = {1, 8, 987, -2};
2833
+ int p1[] = {9, 8, 987, -2, 1, 8, 987, -2, 1, 8, 987, -2};
2834
+
2835
+ EXPECT_ABORT_BEGIN
2836
+ TEST_ASSERT_EACH_EQUAL_MEMORY(p0, p1, sizeof(int)*4, 3);
2837
+ VERIFY_FAILS_END
2838
+ }
2839
+
2840
+ void testNotEqualMemoryEachEqual2(void)
2841
+ {
2842
+ int p0[] = {1, 8, 987, -2};
2843
+ int p1[] = {1, 8, 987, -2, 1, 8, 987, -2, 1, 8, 987, 9};
2844
+
2845
+ EXPECT_ABORT_BEGIN
2846
+ TEST_ASSERT_EACH_EQUAL_MEMORY(p0, p1, sizeof(int)*4, 3);
2847
+ VERIFY_FAILS_END
2848
+ }
2849
+
2850
+ void testNotEqualMemoryEachEqual3(void)
2851
+ {
2852
+ int p0[] = {1, 8, 987, -2};
2853
+ int p1[] = {1, 8, 987, -2, 1, 9, 987, -2, 1, 8, 987, -2};
2854
+
2855
+ EXPECT_ABORT_BEGIN
2856
+ TEST_ASSERT_EACH_EQUAL_MEMORY(p0, p1, sizeof(int)*4, 3);
2857
+ VERIFY_FAILS_END
2858
+ }
2859
+
2860
+ void testProtection(void)
2861
+ {
2862
+ volatile int mask = 0;
2863
+
2864
+ if (TEST_PROTECT())
2865
+ {
2866
+ mask |= 1;
2867
+ TEST_ABORT();
2868
+ }
2869
+ else
2870
+ {
2871
+ Unity.CurrentTestFailed = 0;
2872
+ mask |= 2;
2873
+ }
2874
+
2875
+ TEST_ASSERT_EQUAL(3, mask);
2876
+ }
2877
+
2878
+ void testIgnoredAndThenFailInTearDown(void)
2879
+ {
2880
+ SetToOneToFailInTearDown = 1;
2881
+ TEST_IGNORE();
2882
+ }
2883
+
2884
+ // Tricky series of macros to set USING_OUTPUT_SPY
2885
+ #define USING_SPY_AS(a) EXPAND_AND_USE_2ND(ASSIGN_VALUE(a), 0)
2886
+ #define ASSIGN_VALUE(a) VAL_##a
2887
+ #define VAL_putcharSpy 0, 1
2888
+ #define EXPAND_AND_USE_2ND(a, b) SECOND_PARAM(a, b, throwaway)
2889
+ #define SECOND_PARAM(a, b, ...) b
2890
+ #if USING_SPY_AS(UNITY_OUTPUT_CHAR)
2891
+ #define USING_OUTPUT_SPY // true only if UNITY_OUTPUT_CHAR = putcharSpy
2892
+ #endif
2893
+
2894
+ #ifdef USING_OUTPUT_SPY
2895
+ #include <stdio.h>
2896
+ #define SPY_BUFFER_MAX 40
2897
+ static char putcharSpyBuffer[SPY_BUFFER_MAX];
2898
+ #endif
2899
+ static int indexSpyBuffer;
2900
+ static int putcharSpyEnabled;
2901
+
2902
+ void startPutcharSpy(void) {indexSpyBuffer = 0; putcharSpyEnabled = 1;}
2903
+
2904
+ void endPutcharSpy(void) {putcharSpyEnabled = 0;}
2249
2905
 
2250
2906
  char* getBufferPutcharSpy(void)
2251
2907
  {
@@ -2265,29 +2921,48 @@ void putcharSpy(int c)
2265
2921
  if (indexSpyBuffer < SPY_BUFFER_MAX - 1)
2266
2922
  putcharSpyBuffer[indexSpyBuffer++] = (char)c;
2267
2923
  } else
2268
- c = putchar(c);
2924
+ putchar((char)c);
2269
2925
  #endif
2270
2926
  }
2271
2927
 
2272
2928
  void testFailureCountIncrementsAndIsReturnedAtEnd(void)
2273
2929
  {
2930
+ UNITY_UINT savedFailures = Unity.TestFailures;
2274
2931
  Unity.CurrentTestFailed = 1;
2275
2932
  startPutcharSpy(); // Suppress output
2276
2933
  UnityConcludeTest();
2277
- TEST_ASSERT_EQUAL(1, Unity.TestFailures);
2934
+ endPutcharSpy();
2935
+ TEST_ASSERT_EQUAL(savedFailures + 1, Unity.TestFailures);
2278
2936
 
2937
+ startPutcharSpy(); // Suppress output
2279
2938
  int failures = UnityEnd();
2280
2939
  Unity.TestFailures--;
2281
2940
  endPutcharSpy();
2282
- TEST_ASSERT_EQUAL(1, failures);
2941
+ TEST_ASSERT_EQUAL(savedFailures + 1, failures);
2283
2942
  }
2284
2943
 
2285
2944
  void testCstringsEscapeSequence(void)
2286
2945
  {
2946
+ #ifndef USING_OUTPUT_SPY
2947
+ TEST_IGNORE();
2948
+ #else
2287
2949
  startPutcharSpy();
2288
2950
  UnityPrint("\x16\x10");
2289
2951
  endPutcharSpy();
2290
2952
  TEST_ASSERT_EQUAL_STRING("\\x16\\x10", getBufferPutcharSpy());
2953
+ #endif
2954
+ }
2955
+
2956
+ void testHexPrintsUpToMaxNumberOfNibbles(void)
2957
+ {
2958
+ #ifndef USING_OUTPUT_SPY
2959
+ TEST_IGNORE();
2960
+ #else
2961
+ startPutcharSpy();
2962
+ UnityPrintNumberHex(0xBEE, 21);
2963
+ endPutcharSpy();
2964
+ TEST_ASSERT_EQUAL_INT(sizeof(UNITY_INT)*2, strlen(getBufferPutcharSpy()));
2965
+ #endif
2291
2966
  }
2292
2967
 
2293
2968
  #define TEST_ASSERT_EQUAL_PRINT_NUMBERS(expected, actual) { \
@@ -3029,201 +3704,520 @@ void testFloatIsNotDeterminate1(void)
3029
3704
  #ifdef UNITY_EXCLUDE_FLOAT
3030
3705
  TEST_IGNORE();
3031
3706
  #else
3032
- TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(1.0f / f_zero);
3033
- TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(-1.0f / f_zero);
3034
- TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(0.0f / f_zero);
3707
+ TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(1.0f / f_zero);
3708
+ TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(-1.0f / f_zero);
3709
+ TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(0.0f / f_zero);
3710
+ #endif
3711
+ }
3712
+
3713
+ void testFloatIsNotDeterminate2(void)
3714
+ {
3715
+ #ifdef UNITY_EXCLUDE_FLOAT
3716
+ TEST_IGNORE();
3717
+ #else
3718
+ EXPECT_ABORT_BEGIN
3719
+ TEST_ASSERT_FLOAT_IS_DETERMINATE(-1.0f / f_zero);
3720
+ VERIFY_FAILS_END
3721
+ #endif
3722
+ }
3723
+
3724
+ void testFloatTraitFailsOnInvalidTrait(void)
3725
+ {
3726
+ #ifdef UNITY_EXCLUDE_FLOAT
3727
+ TEST_IGNORE();
3728
+ #else
3729
+ EXPECT_ABORT_BEGIN
3730
+ UnityAssertFloatSpecial(1.0f, NULL, __LINE__, UNITY_FLOAT_INVALID_TRAIT);
3731
+ VERIFY_FAILS_END
3732
+ #endif
3733
+ }
3734
+
3735
+
3736
+ void testEqualFloatArrays(void)
3737
+ {
3738
+ #ifdef UNITY_EXCLUDE_FLOAT
3739
+ TEST_IGNORE();
3740
+ #else
3741
+ float p0[] = {1.0f, -8.0f, 25.4f, -0.123f};
3742
+ float p1[] = {1.0f, -8.0f, 25.4f, -0.123f};
3743
+ float p2[] = {1.0f, -8.0f, 25.4f, -0.2f};
3744
+ float p3[] = {1.0f, -23.0f, 25.0f, -0.26f};
3745
+
3746
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p0, 1);
3747
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p0, 4);
3748
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3749
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p2, 3);
3750
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p3, 1);
3751
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(NULL, NULL, 1);
3752
+ #endif
3753
+ }
3754
+
3755
+ void testNotEqualFloatArraysExpectedNull(void)
3756
+ {
3757
+ #ifdef UNITY_EXCLUDE_FLOAT
3758
+ TEST_IGNORE();
3759
+ #else
3760
+ float* p0 = NULL;
3761
+ float p1[] = {1.0f, 8.0f, 25.4f, 0.252f};
3762
+
3763
+ EXPECT_ABORT_BEGIN
3764
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3765
+ VERIFY_FAILS_END
3766
+ #endif
3767
+ }
3768
+
3769
+ void testNotEqualFloatArraysActualNull(void)
3770
+ {
3771
+ #ifdef UNITY_EXCLUDE_FLOAT
3772
+ TEST_IGNORE();
3773
+ #else
3774
+ float p0[] = {1.0f, 8.0f, 25.4f, 0.253f};
3775
+ float* p1 = NULL;
3776
+
3777
+ EXPECT_ABORT_BEGIN
3778
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3779
+ VERIFY_FAILS_END
3780
+ #endif
3781
+ }
3782
+
3783
+ void testNotEqualFloatArrays1(void)
3784
+ {
3785
+ #ifdef UNITY_EXCLUDE_FLOAT
3786
+ TEST_IGNORE();
3787
+ #else
3788
+ float p0[] = {1.0f, 8.0f, 25.4f, 0.253f};
3789
+ float p1[] = {1.0f, 8.0f, 25.4f, 0.252f};
3790
+
3791
+ EXPECT_ABORT_BEGIN
3792
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3793
+ VERIFY_FAILS_END
3794
+ #endif
3795
+ }
3796
+
3797
+ void testNotEqualFloatArrays2(void)
3798
+ {
3799
+ #ifdef UNITY_EXCLUDE_FLOAT
3800
+ TEST_IGNORE();
3801
+ #else
3802
+ float p0[] = {1.0f, 8.0f, 25.4f, 0.253f};
3803
+ float p1[] = {2.0f, 8.0f, 25.4f, 0.253f};
3804
+
3805
+ EXPECT_ABORT_BEGIN
3806
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3807
+ VERIFY_FAILS_END
3808
+ #endif
3809
+ }
3810
+
3811
+ void testNotEqualFloatArrays3(void)
3812
+ {
3813
+ #ifdef UNITY_EXCLUDE_FLOAT
3814
+ TEST_IGNORE();
3815
+ #else
3816
+ float p0[] = {1.0f, 8.0f, 25.4f, 0.253f};
3817
+ float p1[] = {1.0f, 8.0f, 25.5f, 0.253f};
3818
+
3819
+ EXPECT_ABORT_BEGIN
3820
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3821
+ VERIFY_FAILS_END
3822
+ #endif
3823
+ }
3824
+
3825
+ void testNotEqualFloatArraysNegative1(void)
3826
+ {
3827
+ #ifdef UNITY_EXCLUDE_FLOAT
3828
+ TEST_IGNORE();
3829
+ #else
3830
+ float p0[] = {-1.0f, -8.0f, -25.4f, -0.253f};
3831
+ float p1[] = {-1.0f, -8.0f, -25.4f, -0.252f};
3832
+
3833
+ EXPECT_ABORT_BEGIN
3834
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3835
+ VERIFY_FAILS_END
3836
+ #endif
3837
+ }
3838
+
3839
+ void testNotEqualFloatArraysNegative2(void)
3840
+ {
3841
+ #ifdef UNITY_EXCLUDE_FLOAT
3842
+ TEST_IGNORE();
3843
+ #else
3844
+ float p0[] = {-1.0f, -8.0f, -25.4f, -0.253f};
3845
+ float p1[] = {-2.0f, -8.0f, -25.4f, -0.253f};
3846
+
3847
+ EXPECT_ABORT_BEGIN
3848
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3849
+ VERIFY_FAILS_END
3850
+ #endif
3851
+ }
3852
+
3853
+ void testNotEqualFloatArraysNegative3(void)
3854
+ {
3855
+ #ifdef UNITY_EXCLUDE_FLOAT
3856
+ TEST_IGNORE();
3857
+ #else
3858
+ float p0[] = {-1.0f, -8.0f, -25.4f, -0.253f};
3859
+ float p1[] = {-1.0f, -8.0f, -25.5f, -0.253f};
3860
+
3861
+ EXPECT_ABORT_BEGIN
3862
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3863
+ VERIFY_FAILS_END
3864
+ #endif
3865
+ }
3866
+
3867
+ void testEqualFloatArraysNaN(void)
3868
+ {
3869
+ #ifdef UNITY_EXCLUDE_FLOAT
3870
+ TEST_IGNORE();
3871
+ #else
3872
+ float p0[] = {1.0f, 0.0f / f_zero, 25.4f, 0.253f};
3873
+ float p1[] = {1.0f, 0.0f / f_zero, 25.4f, 0.253f};
3874
+
3875
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3035
3876
  #endif
3036
3877
  }
3037
3878
 
3038
- void testFloatIsNotDeterminate2(void)
3879
+ void testEqualFloatArraysInf(void)
3039
3880
  {
3040
3881
  #ifdef UNITY_EXCLUDE_FLOAT
3041
3882
  TEST_IGNORE();
3042
3883
  #else
3043
- EXPECT_ABORT_BEGIN
3044
- TEST_ASSERT_FLOAT_IS_DETERMINATE(-1.0f / f_zero);
3045
- VERIFY_FAILS_END
3884
+ float p0[] = {1.0f, 1.0f / f_zero, 25.4f, 0.253f};
3885
+ float p1[] = {1.0f, 1.0f / f_zero, 25.4f, 0.253f};
3886
+
3887
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3046
3888
  #endif
3047
3889
  }
3048
3890
 
3049
- void testFloatTraitFailsOnInvalidTrait(void)
3891
+ void testNotEqualFloatArraysLengthZero(void)
3050
3892
  {
3051
3893
  #ifdef UNITY_EXCLUDE_FLOAT
3052
3894
  TEST_IGNORE();
3053
3895
  #else
3896
+ float p0[1] = {0.0f};
3897
+ float p1[1] = {0.0f};
3898
+
3054
3899
  EXPECT_ABORT_BEGIN
3055
- UnityAssertFloatSpecial(1.0f, NULL, __LINE__, UNITY_FLOAT_INVALID_TRAIT);
3900
+ TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 0);
3056
3901
  VERIFY_FAILS_END
3057
3902
  #endif
3058
3903
  }
3059
3904
 
3060
-
3061
- void testEqualFloatArrays(void)
3905
+ void testEqualFloatEachEqual(void)
3062
3906
  {
3063
3907
  #ifdef UNITY_EXCLUDE_FLOAT
3064
3908
  TEST_IGNORE();
3065
3909
  #else
3066
- float p0[] = {1.0f, -8.0f, 25.4f, -0.123f};
3067
- float p1[] = {1.0f, -8.0f, 25.4f, -0.123f};
3068
- float p2[] = {1.0f, -8.0f, 25.4f, -0.2f};
3910
+ float p0[] = {1.0f, 1.0f, 1.0f, 1.0f};
3911
+ float p1[] = {-0.123f, -0.123f, -0.123f, -0.123f};
3912
+ float p2[] = {25.4f, 25.4f, 25.4f, -0.2f};
3069
3913
  float p3[] = {1.0f, -23.0f, 25.0f, -0.26f};
3070
3914
 
3071
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p0, 1);
3072
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p0, 4);
3073
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3074
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p2, 3);
3075
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p3, 1);
3076
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(NULL, NULL, 1);
3915
+ TEST_ASSERT_EACH_EQUAL_FLOAT(1.0f, p0, 1);
3916
+ TEST_ASSERT_EACH_EQUAL_FLOAT(1.0f, p0, 4);
3917
+ TEST_ASSERT_EACH_EQUAL_FLOAT(-0.123f, p1, 4);
3918
+ TEST_ASSERT_EACH_EQUAL_FLOAT(25.4f, p2, 3);
3919
+ TEST_ASSERT_EACH_EQUAL_FLOAT(1.0f, p3, 1);
3077
3920
  #endif
3078
3921
  }
3079
3922
 
3080
- void testNotEqualFloatArraysExpectedNull(void)
3923
+ void testNotEqualFloatEachEqualActualNull(void)
3081
3924
  {
3082
3925
  #ifdef UNITY_EXCLUDE_FLOAT
3083
3926
  TEST_IGNORE();
3084
3927
  #else
3085
3928
  float* p0 = NULL;
3086
- float p1[] = {1.0f, 8.0f, 25.4f, 0.252f};
3087
3929
 
3088
3930
  EXPECT_ABORT_BEGIN
3089
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3931
+ TEST_ASSERT_EACH_EQUAL_FLOAT(5, p0, 4);
3090
3932
  VERIFY_FAILS_END
3091
3933
  #endif
3092
3934
  }
3093
3935
 
3094
- void testNotEqualFloatArraysActualNull(void)
3936
+ void testNotEqualFloatEachEqual1(void)
3095
3937
  {
3096
3938
  #ifdef UNITY_EXCLUDE_FLOAT
3097
3939
  TEST_IGNORE();
3098
3940
  #else
3099
- float p0[] = {1.0f, 8.0f, 25.4f, 0.253f};
3100
- float* p1 = NULL;
3941
+ float p0[] = {0.253f, 8.0f, 0.253f, 0.253f};
3101
3942
 
3102
3943
  EXPECT_ABORT_BEGIN
3103
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3944
+ TEST_ASSERT_EACH_EQUAL_FLOAT(0.253f, p0, 4);
3104
3945
  VERIFY_FAILS_END
3105
3946
  #endif
3106
3947
  }
3107
3948
 
3108
- void testNotEqualFloatArrays1(void)
3949
+ void testNotEqualFloatEachEqual2(void)
3109
3950
  {
3110
3951
  #ifdef UNITY_EXCLUDE_FLOAT
3111
3952
  TEST_IGNORE();
3112
3953
  #else
3113
- float p0[] = {1.0f, 8.0f, 25.4f, 0.253f};
3114
- float p1[] = {1.0f, 8.0f, 25.4f, 0.252f};
3954
+ float p0[] = {8.0f, 8.0f, 8.0f, 0.253f};
3115
3955
 
3116
3956
  EXPECT_ABORT_BEGIN
3117
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3957
+ TEST_ASSERT_EACH_EQUAL_FLOAT(8.0f, p0, 4);
3118
3958
  VERIFY_FAILS_END
3119
3959
  #endif
3120
3960
  }
3121
3961
 
3122
- void testNotEqualFloatArrays2(void)
3962
+ void testNotEqualFloatEachEqual3(void)
3123
3963
  {
3124
3964
  #ifdef UNITY_EXCLUDE_FLOAT
3125
3965
  TEST_IGNORE();
3126
3966
  #else
3127
- float p0[] = {1.0f, 8.0f, 25.4f, 0.253f};
3128
- float p1[] = {2.0f, 8.0f, 25.4f, 0.253f};
3967
+ float p0[] = {1.0f, 1.0f, 1.0f, 0.253f};
3129
3968
 
3130
3969
  EXPECT_ABORT_BEGIN
3131
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3970
+ TEST_ASSERT_EACH_EQUAL_FLOAT(1.0f, p0, 4);
3132
3971
  VERIFY_FAILS_END
3133
3972
  #endif
3134
3973
  }
3135
3974
 
3136
- void testNotEqualFloatArrays3(void)
3975
+ void testNotEqualFloatEachEqualNegative1(void)
3137
3976
  {
3138
3977
  #ifdef UNITY_EXCLUDE_FLOAT
3139
3978
  TEST_IGNORE();
3140
3979
  #else
3141
- float p0[] = {1.0f, 8.0f, 25.4f, 0.253f};
3142
- float p1[] = {1.0f, 8.0f, 25.5f, 0.253f};
3980
+ float p0[] = {-1.0f, -0.253f, -0.253f, -0.253f};
3143
3981
 
3144
3982
  EXPECT_ABORT_BEGIN
3145
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3983
+ TEST_ASSERT_EACH_EQUAL_FLOAT(-0.253f, p0, 4);
3146
3984
  VERIFY_FAILS_END
3147
3985
  #endif
3148
3986
  }
3149
3987
 
3150
- void testNotEqualFloatArraysNegative1(void)
3988
+ void testNotEqualFloatEachEqualNegative2(void)
3151
3989
  {
3152
3990
  #ifdef UNITY_EXCLUDE_FLOAT
3153
3991
  TEST_IGNORE();
3154
3992
  #else
3155
- float p0[] = {-1.0f, -8.0f, -25.4f, -0.253f};
3156
- float p1[] = {-1.0f, -8.0f, -25.4f, -0.252f};
3993
+ float p0[] = {-25.4f, -8.0f, -25.4f, -25.4f};
3157
3994
 
3158
3995
  EXPECT_ABORT_BEGIN
3159
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3996
+ TEST_ASSERT_EACH_EQUAL_FLOAT(-25.4f, p0, 4);
3160
3997
  VERIFY_FAILS_END
3161
3998
  #endif
3162
3999
  }
3163
4000
 
3164
- void testNotEqualFloatArraysNegative2(void)
4001
+ void testNotEqualFloatEachEqualNegative3(void)
3165
4002
  {
3166
4003
  #ifdef UNITY_EXCLUDE_FLOAT
3167
4004
  TEST_IGNORE();
3168
4005
  #else
3169
- float p0[] = {-1.0f, -8.0f, -25.4f, -0.253f};
3170
- float p1[] = {-2.0f, -8.0f, -25.4f, -0.253f};
4006
+ float p0[] = {-8.0f, -8.0f, -8.0f, -0.253f};
3171
4007
 
3172
4008
  EXPECT_ABORT_BEGIN
3173
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
4009
+ TEST_ASSERT_EACH_EQUAL_FLOAT(-8.0f, p0, 4);
3174
4010
  VERIFY_FAILS_END
3175
4011
  #endif
3176
4012
  }
3177
4013
 
3178
- void testNotEqualFloatArraysNegative3(void)
4014
+ void testEqualFloatEachEqualNaN(void)
3179
4015
  {
3180
4016
  #ifdef UNITY_EXCLUDE_FLOAT
3181
4017
  TEST_IGNORE();
3182
4018
  #else
3183
- float p0[] = {-1.0f, -8.0f, -25.4f, -0.253f};
3184
- float p1[] = {-1.0f, -8.0f, -25.5f, -0.253f};
4019
+ float p0[] = {0.0f / f_zero, 0.0f / f_zero, 0.0f / f_zero, 0.0f / f_zero};
3185
4020
 
3186
- EXPECT_ABORT_BEGIN
3187
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
3188
- VERIFY_FAILS_END
4021
+ TEST_ASSERT_EACH_EQUAL_FLOAT(0.0f / f_zero, p0, 4);
3189
4022
  #endif
3190
4023
  }
3191
4024
 
3192
- void testEqualFloatArraysNaN(void)
4025
+ void testEqualFloatEachEqualInf(void)
3193
4026
  {
3194
4027
  #ifdef UNITY_EXCLUDE_FLOAT
3195
4028
  TEST_IGNORE();
3196
4029
  #else
3197
- float p0[] = {1.0f, 0.0f / f_zero, 25.4f, 0.253f};
3198
- float p1[] = {1.0f, 0.0f / f_zero, 25.4f, 0.253f};
4030
+ float p0[] = {1.0f / f_zero, 1.0f / f_zero, 25.4f, 0.253f};
3199
4031
 
3200
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
4032
+ TEST_ASSERT_EACH_EQUAL_FLOAT(1.0f / f_zero, p0, 2);
3201
4033
  #endif
3202
4034
  }
3203
4035
 
3204
- void testEqualFloatArraysInf(void)
4036
+ void testNotEqualFloatEachEqualLengthZero(void)
3205
4037
  {
3206
4038
  #ifdef UNITY_EXCLUDE_FLOAT
3207
4039
  TEST_IGNORE();
3208
4040
  #else
3209
- float p0[] = {1.0f, 1.0f / f_zero, 25.4f, 0.253f};
3210
- float p1[] = {1.0f, 1.0f / f_zero, 25.4f, 0.253f};
4041
+ float p0[1] = {0.0f};
3211
4042
 
3212
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
4043
+ EXPECT_ABORT_BEGIN
4044
+ TEST_ASSERT_EACH_EQUAL_FLOAT(0.0f, p0, 0);
4045
+ VERIFY_FAILS_END
3213
4046
  #endif
3214
4047
  }
3215
4048
 
3216
- void testNotEqualFloatArraysLengthZero(void)
4049
+ #define TEST_ASSERT_EQUAL_PRINT_FLOATING(expected, actual) { \
4050
+ startPutcharSpy(); UnityPrintFloat((actual)); endPutcharSpy(); \
4051
+ TEST_ASSERT_EQUAL_STRING((expected), getBufferPutcharSpy()); \
4052
+ }
4053
+
4054
+ void testFloatPrinting(void)
3217
4055
  {
3218
- #ifdef UNITY_EXCLUDE_FLOAT
4056
+ #if defined(UNITY_EXCLUDE_FLOAT_PRINT) || !defined(USING_OUTPUT_SPY)
3219
4057
  TEST_IGNORE();
3220
4058
  #else
3221
- float p0[1] = {0.0f};
3222
- float p1[1] = {0.0f};
4059
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("0.0", 0.0f);
4060
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("0.000000...", 0.000000499f);
4061
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("0.000001", 0.00000050000005f);
4062
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("0.100469", 0.100469499f);
4063
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("1.0", 0.9999995f); /*Rounding to int place*/
4064
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("1.0", 1.0f);
4065
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("1.25", 1.25f);
4066
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("7.999999", 7.999999f); /*Not rounding*/
4067
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("16.000002", 16.000002f);
4068
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("16.000004", 16.000004f);
4069
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("16.000006", 16.000006f);
4070
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("4294967040.0", 4294967040.0f); /*Last full print integer*/
4071
+
4072
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("0.0", -0.0f);
4073
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-0.000000...",-0.000000499f);
4074
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-0.000001", -0.00000050000005f);
4075
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-0.100469", -0.100469499f);
4076
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-1.0", -0.9999995f); /*Rounding to int place*/
4077
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-1.0", -1.0f);
4078
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-1.25", -1.25f);
4079
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-7.999999", -7.999999f); /*Not rounding*/
4080
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-16.000002", -16.000002f);
4081
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-16.000004", -16.000004f);
4082
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-16.000006", -16.000006f);
4083
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-4294967040.0",-4294967040.0f); /*Last full print integer*/
4084
+
4085
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("4.2949673e+09", 4294967296.0f);
4086
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("5.0e+09", 5000000000.0f);
4087
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("8.0e+09", 8.0e+09f);
4088
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("8.3099991e+09", 8309999104.0f);
4089
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("1.0e+10", 1.0e+10f);
4090
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("1.0e+10", 10000000000.0f);
4091
+ /* Some compilers have trouble with inexact float constants, a float cast works generally */
4092
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("1.00005499e+10", (float)1.000055e+10f);
4093
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("1.10000006e+38", (float)1.10000005e+38f);
4094
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("1.63529943e+10", 1.63529943e+10f);
4095
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("3.40282347e+38", 3.40282346638e38f);
4096
+
4097
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-1.0e+10", -1.0e+10f);
4098
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-3.40282347e+38",-3.40282346638e38f);
4099
+ #endif
4100
+ }
4101
+
4102
+ void testFloatPrintingRoundTiesToEven(void)
4103
+ {
4104
+ #if defined(UNITY_EXCLUDE_FLOAT_PRINT) || !defined(USING_OUTPUT_SPY)
4105
+ TEST_IGNORE();
4106
+ #else
4107
+ #ifdef UNITY_ROUND_TIES_AWAY_FROM_ZERO
4108
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("0.007813", 0.0078125f);
4109
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("0.976563", 0.9765625f);
4110
+ #else /* Default to Round ties to even */
4111
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("0.007182", 0.0071825f);
4112
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("0.976562", 0.9765625f);
4113
+ #endif
4114
+ #endif
4115
+ }
3223
4116
 
3224
- EXPECT_ABORT_BEGIN
3225
- TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 0);
3226
- VERIFY_FAILS_END
4117
+ void testFloatPrintingInfinityAndNaN(void)
4118
+ {
4119
+ #if defined(UNITY_EXCLUDE_FLOAT_PRINT) || !defined(USING_OUTPUT_SPY)
4120
+ TEST_IGNORE();
4121
+ #else
4122
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("Inf", 1.0f / f_zero);
4123
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-Inf", -1.0f / f_zero);
4124
+
4125
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("NaN", 0.0f / f_zero);
4126
+ #endif
4127
+ }
4128
+
4129
+ #if defined(UNITY_TEST_ALL_FLOATS_PRINT_OK) && defined(USING_OUTPUT_SPY)
4130
+ static void AllFloatPrinting_LessThan32Bits(void)
4131
+ {
4132
+ char expected[18];
4133
+ union { float f_value; int32_t int_value; } u;
4134
+ /* Float representations are laid out in integer order, walk up the list */
4135
+ for (u.f_value = 0.00000050000005f; u.f_value <= 4294967040.0f; u.int_value += 1)
4136
+ {
4137
+ startPutcharSpy();
4138
+
4139
+ UnityPrintFloat(u.f_value); /*1.5x as fast as sprintf 5e-7f - 0.01f, 20s vs 30s*/
4140
+ int len = sprintf(expected, "%.6f", u.f_value);
4141
+
4142
+ while (expected[len - 1] == '0' && expected[len - 2] != '.') { len--; }
4143
+ expected[len] = '\0'; /* delete trailing 0's */
4144
+
4145
+ if (strcmp(expected, getBufferPutcharSpy()) != 0)
4146
+ {
4147
+ double six_digits = ((double)u.f_value - (uint32_t)u.f_value)*1000000.0;
4148
+ /* Not a tie (remainder != 0.5) => Can't explain the different strings */
4149
+ if (six_digits - (uint32_t)six_digits != 0.5)
4150
+ {
4151
+ /* Fail with diagnostic printing */
4152
+ TEST_ASSERT_EQUAL_PRINT_FLOATING(expected, u.f_value);
4153
+ }
4154
+ }
4155
+ }
4156
+ }
4157
+
4158
+ /* Compared to perfect, floats are occasionally rounded wrong. It doesn't affect
4159
+ * correctness, though. Two examples (of 13 total found during testing):
4160
+ * Printed: 6.19256349e+20, Exact: 619256348499999981568.0f <= Eliminated by ROUND_TIES_TO_EVEN
4161
+ * Printed: 2.19012272e+35, Exact: 219012271499999993621766990196637696.0f */
4162
+ static void AllFloatPrinting_Larger(const float start, const float end)
4163
+ {
4164
+ unsigned int wrong = 0;
4165
+ char expected[18];
4166
+ union { float f_value; int32_t int_value; } u;
4167
+ for (u.f_value = start; u.f_value <= end; u.int_value += 1)
4168
+ {
4169
+ startPutcharSpy();
4170
+
4171
+ UnityPrintFloat(u.f_value); /*Twice as fast as sprintf 2**32-1e12, 10s vs 21s*/
4172
+ sprintf(expected, "%.8e", u.f_value);
4173
+
4174
+ int len = 11 - 1; /* 11th char is 'e' in exponential format */
4175
+ while (expected[len - 1] == '0' && expected[len - 2] != '.') { len --; }
4176
+ if (expected[14] != '\0') memmove(&expected[12], &expected[13], 3); /* Two char exponent */
4177
+ memmove(&expected[len], &expected[11 - 1], sizeof "e+09"); /* 5 char length */
4178
+
4179
+ if (strcmp(expected, getBufferPutcharSpy()) != 0)
4180
+ {
4181
+ wrong++;
4182
+ /* endPutcharSpy(); UnityPrint("Expected "); UnityPrint(expected);
4183
+ UnityPrint(" Was "); UnityPrint(getBufferPutcharSpy()); UNITY_OUTPUT_CHAR('\n'); */
4184
+
4185
+ if (wrong > 10 || (wrong > 3 && end <= 1e25f))
4186
+ TEST_ASSERT_EQUAL_PRINT_FLOATING(expected, u.f_value);
4187
+ /* Empirical values from the current routine, don't be worse when making changes */
4188
+ }
4189
+ }
4190
+ }
4191
+ #endif
4192
+
4193
+ /* Exhaustive testing of all float values we differentiate when printing. Doubles
4194
+ * are not explored here -- too many. These tests confirm that the routine works
4195
+ * for all floats > 5e-7, positives only. Off by default due to test time.
4196
+ * Compares Unity's routine to your sprintf() C lib, tested to pass on 3 platforms.
4197
+ * Part1 takes a long time, around 3 minutes compiled with -O2
4198
+ * Runs through all floats from 0.000001 - 2**32, ~300 million values */
4199
+ void testAllFloatPrintingPart1_LessThan32Bits(void)
4200
+ {
4201
+ #if defined(UNITY_TEST_ALL_FLOATS_PRINT_OK) && defined(USING_OUTPUT_SPY)
4202
+ AllFloatPrinting_LessThan32Bits();
4203
+ #else
4204
+ TEST_IGNORE(); /* Ignore one of three */
4205
+ #endif
4206
+ }
4207
+
4208
+ /* Test takes a long time, around 3.5 minutes compiled with -O2, try ~500 million values */
4209
+ void testAllFloatPrintingPart2_Larger(void)
4210
+ {
4211
+ #if defined(UNITY_TEST_ALL_FLOATS_PRINT_OK) && defined(USING_OUTPUT_SPY)
4212
+ AllFloatPrinting_Larger(4294967296.0f, 1e25f);
4213
+ #endif
4214
+ }
4215
+
4216
+ /* Test takes a long time, around 3.5 minutes compiled with -O2, try ~500 million values */
4217
+ void testAllFloatPrintingPart3_LargerStill(void)
4218
+ {
4219
+ #if defined(UNITY_TEST_ALL_FLOATS_PRINT_OK) && defined(USING_OUTPUT_SPY)
4220
+ AllFloatPrinting_Larger(1e25f, 3.40282347e+38f);
3227
4221
  #endif
3228
4222
  }
3229
4223
 
@@ -3750,6 +4744,199 @@ void testNotEqualDoubleArraysLengthZero(void)
3750
4744
  #endif
3751
4745
  }
3752
4746
 
4747
+ void testEqualDoubleEachEqual(void)
4748
+ {
4749
+ #ifdef UNITY_EXCLUDE_DOUBLE
4750
+ TEST_IGNORE();
4751
+ #else
4752
+ double p0[] = {1.0, 1.0, 1.0, 1.0};
4753
+ double p1[] = {-0.123, -0.123, -0.123, -0.123};
4754
+ double p2[] = {25.4, 25.4, 25.4, -0.2};
4755
+ double p3[] = {1.0, -23.0, 25.0, -0.26};
4756
+
4757
+ TEST_ASSERT_EACH_EQUAL_DOUBLE(1.0, p0, 1);
4758
+ TEST_ASSERT_EACH_EQUAL_DOUBLE(1.0, p0, 4);
4759
+ TEST_ASSERT_EACH_EQUAL_DOUBLE(-0.123, p1, 4);
4760
+ TEST_ASSERT_EACH_EQUAL_DOUBLE(25.4, p2, 3);
4761
+ TEST_ASSERT_EACH_EQUAL_DOUBLE(1.0, p3, 1);
4762
+ #endif
4763
+ }
4764
+
4765
+ void testNotEqualDoubleEachEqualActualNull(void)
4766
+ {
4767
+ #ifdef UNITY_EXCLUDE_DOUBLE
4768
+ TEST_IGNORE();
4769
+ #else
4770
+ double* p0 = NULL;
4771
+
4772
+ EXPECT_ABORT_BEGIN
4773
+ TEST_ASSERT_EACH_EQUAL_DOUBLE(5, p0, 4);
4774
+ VERIFY_FAILS_END
4775
+ #endif
4776
+ }
4777
+
4778
+ void testNotEqualDoubleEachEqual1(void)
4779
+ {
4780
+ #ifdef UNITY_EXCLUDE_DOUBLE
4781
+ TEST_IGNORE();
4782
+ #else
4783
+ double p0[] = {0.253, 8.0, 0.253, 0.253};
4784
+
4785
+ EXPECT_ABORT_BEGIN
4786
+ TEST_ASSERT_EACH_EQUAL_DOUBLE(0.253, p0, 4);
4787
+ VERIFY_FAILS_END
4788
+ #endif
4789
+ }
4790
+
4791
+ void testNotEqualDoubleEachEqual2(void)
4792
+ {
4793
+ #ifdef UNITY_EXCLUDE_DOUBLE
4794
+ TEST_IGNORE();
4795
+ #else
4796
+ double p0[] = {8.0, 8.0, 8.0, 0.253};
4797
+
4798
+ EXPECT_ABORT_BEGIN
4799
+ TEST_ASSERT_EACH_EQUAL_DOUBLE(8.0, p0, 4);
4800
+ VERIFY_FAILS_END
4801
+ #endif
4802
+ }
4803
+
4804
+ void testNotEqualDoubleEachEqual3(void)
4805
+ {
4806
+ #ifdef UNITY_EXCLUDE_DOUBLE
4807
+ TEST_IGNORE();
4808
+ #else
4809
+ double p0[] = {1.0, 1.0, 1.0, 0.253};
4810
+
4811
+ EXPECT_ABORT_BEGIN
4812
+ TEST_ASSERT_EACH_EQUAL_DOUBLE(1.0, p0, 4);
4813
+ VERIFY_FAILS_END
4814
+ #endif
4815
+ }
4816
+
4817
+ void testNotEqualDoubleEachEqualNegative1(void)
4818
+ {
4819
+ #ifdef UNITY_EXCLUDE_DOUBLE
4820
+ TEST_IGNORE();
4821
+ #else
4822
+ double p0[] = {-1.0, -0.253, -0.253, -0.253};
4823
+
4824
+ EXPECT_ABORT_BEGIN
4825
+ TEST_ASSERT_EACH_EQUAL_DOUBLE(-0.253, p0, 4);
4826
+ VERIFY_FAILS_END
4827
+ #endif
4828
+ }
4829
+
4830
+ void testNotEqualDoubleEachEqualNegative2(void)
4831
+ {
4832
+ #ifdef UNITY_EXCLUDE_DOUBLE
4833
+ TEST_IGNORE();
4834
+ #else
4835
+ double p0[] = {-25.4, -8.0, -25.4, -25.4};
4836
+
4837
+ EXPECT_ABORT_BEGIN
4838
+ TEST_ASSERT_EACH_EQUAL_DOUBLE(-25.4, p0, 4);
4839
+ VERIFY_FAILS_END
4840
+ #endif
4841
+ }
4842
+
4843
+ void testNotEqualDoubleEachEqualNegative3(void)
4844
+ {
4845
+ #ifdef UNITY_EXCLUDE_DOUBLE
4846
+ TEST_IGNORE();
4847
+ #else
4848
+ double p0[] = {-8.0, -8.0, -8.0, -0.253};
4849
+
4850
+ EXPECT_ABORT_BEGIN
4851
+ TEST_ASSERT_EACH_EQUAL_DOUBLE(-8.0, p0, 4);
4852
+ VERIFY_FAILS_END
4853
+ #endif
4854
+ }
4855
+
4856
+ void testEqualDoubleEachEqualNaN(void)
4857
+ {
4858
+ #ifdef UNITY_EXCLUDE_DOUBLE
4859
+ TEST_IGNORE();
4860
+ #else
4861
+ double p0[] = {0.0 / d_zero, 0.0 / d_zero, 0.0 / d_zero, 0.0 / d_zero};
4862
+
4863
+ TEST_ASSERT_EACH_EQUAL_DOUBLE(0.0 / d_zero, p0, 4);
4864
+ #endif
4865
+ }
4866
+
4867
+ void testEqualDoubleEachEqualInf(void)
4868
+ {
4869
+ #ifdef UNITY_EXCLUDE_DOUBLE
4870
+ TEST_IGNORE();
4871
+ #else
4872
+ double p0[] = {1.0 / d_zero, 1.0 / d_zero, 25.4, 0.253};
4873
+
4874
+ TEST_ASSERT_EACH_EQUAL_DOUBLE(1.0 / d_zero, p0, 2);
4875
+ #endif
4876
+ }
4877
+
4878
+ void testNotEqualDoubleEachEqualLengthZero(void)
4879
+ {
4880
+ #ifdef UNITY_EXCLUDE_DOUBLE
4881
+ TEST_IGNORE();
4882
+ #else
4883
+ double p0[1] = {0.0};
4884
+
4885
+ EXPECT_ABORT_BEGIN
4886
+ TEST_ASSERT_EACH_EQUAL_DOUBLE(0.0, p0, 0);
4887
+ VERIFY_FAILS_END
4888
+ #endif
4889
+ }
4890
+
4891
+ void testDoublePrinting(void)
4892
+ {
4893
+ #if defined(UNITY_EXCLUDE_FLOAT_PRINT) || defined(UNITY_EXCLUDE_DOUBLE) || !defined(USING_OUTPUT_SPY)
4894
+ TEST_IGNORE();
4895
+ #else
4896
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("0.100469", 0.10046949999999999);
4897
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("4294967295.999999", 4294967295.999999);
4898
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("4.2949673e+09", 4294967295.9999995);
4899
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("4.2949673e+09", 4294967296.0);
4900
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("1.0e+10", 9999999995.0);
4901
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("9.00719925e+15", 9007199254740990.0);
4902
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("7.0e+100", 7.0e+100);
4903
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("3.0e+200", 3.0e+200);
4904
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("9.23456789e+300", 9.23456789e+300);
4905
+
4906
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-0.100469", -0.10046949999999999);
4907
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-4294967295.999999", -4294967295.999999);
4908
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-4.2949673e+09", -4294967295.9999995);
4909
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-7.0e+100", -7.0e+100);
4910
+ #endif
4911
+ }
4912
+
4913
+ void testDoublePrintingRoundTiesToEven(void)
4914
+ {
4915
+ #if defined(UNITY_EXCLUDE_FLOAT_PRINT) || defined(UNITY_EXCLUDE_DOUBLE) || !defined(USING_OUTPUT_SPY)
4916
+ TEST_IGNORE();
4917
+ #else
4918
+ #ifdef UNITY_ROUND_TIES_AWAY_FROM_ZERO
4919
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("1.00000001e+10", 10000000050.0);
4920
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("9.00719925e+15", 9007199245000000.0);
4921
+ #else /* Default to Round ties to even */
4922
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("1.0e+10", 10000000050.0);
4923
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("9.00719924e+15", 9007199245000000.0);
4924
+ #endif
4925
+ #endif
4926
+ }
4927
+
4928
+ void testDoublePrintingInfinityAndNaN(void)
4929
+ {
4930
+ #if defined(UNITY_EXCLUDE_FLOAT_PRINT) || defined(UNITY_EXCLUDE_DOUBLE) || !defined(USING_OUTPUT_SPY)
4931
+ TEST_IGNORE();
4932
+ #else
4933
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("Inf", 1.0 / d_zero);
4934
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("-Inf", -1.0 / d_zero);
4935
+
4936
+ TEST_ASSERT_EQUAL_PRINT_FLOATING("NaN", 0.0 / d_zero);
4937
+ #endif
4938
+ }
4939
+
3753
4940
  // ===================== THESE TEST WILL RUN IF YOUR CONFIG INCLUDES DETAIL SUPPORT ==================
3754
4941
 
3755
4942
  void testThatDetailsCanBeHandleOneDetail(void)