ceedling 0.25.0 → 0.27.0

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