ceedling 0.13.0.rc1 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (426) hide show
  1. data/Gemfile.lock +32 -0
  2. data/README.md +8 -8
  3. data/assets/example_file.c +5 -0
  4. data/assets/example_file.h +6 -0
  5. data/assets/project_as_gem.yml +71 -0
  6. data/assets/{project.yml → project_with_guts.yml} +2 -0
  7. data/assets/rakefile_as_gem.rb +1 -0
  8. data/assets/{rakefile.rb → rakefile_with_guts.rb} +0 -0
  9. data/assets/test_example_file.c +13 -0
  10. data/bin/ceedling +55 -31
  11. data/ceedling-0.13.0.rc4.gem +0 -0
  12. data/ceedling.gemspec +13 -12
  13. data/ceedling.sublime-project +8 -0
  14. data/ceedling.sublime-workspace +365 -0
  15. data/examples/temp_sensor/project.yml +3 -4
  16. data/lib/ceedling.rb +13 -4
  17. data/lib/ceedling/version.rb +3 -3
  18. data/lib/project_file_loader.rb +1 -1
  19. data/lib/rakefile.rb +14 -1
  20. data/lib/target_loader.rb +38 -0
  21. data/plugins/bullseye/{template.erb → assets/template.erb} +0 -0
  22. data/plugins/bullseye/{defaults.yml → config/defaults.yml} +0 -0
  23. data/plugins/bullseye/{bullseye.rb → lib/bullseye.rb} +9 -10
  24. data/spec/spec_system_helper.rb +192 -0
  25. data/spec/system/deployment_spec.rb +116 -0
  26. data/tags +977 -0
  27. data/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
  28. data/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
  29. data/vendor/c_exception/docs/license.txt +30 -0
  30. data/vendor/c_exception/docs/readme.txt +242 -0
  31. data/vendor/c_exception/makefile +24 -0
  32. data/vendor/c_exception/rakefile.rb +41 -0
  33. data/vendor/c_exception/test/CExceptionConfig.h +44 -0
  34. data/vendor/c_exception/test/TestException.c +328 -0
  35. data/vendor/c_exception/test/TestException_Runner.c +57 -0
  36. data/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +94 -0
  37. data/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +39 -0
  38. data/vendor/c_exception/vendor/unity/auto/generate_config.yml +36 -0
  39. data/vendor/c_exception/vendor/unity/auto/generate_module.rb +202 -0
  40. data/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +313 -0
  41. data/vendor/c_exception/vendor/unity/auto/test_file_filter.rb +23 -0
  42. data/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +139 -0
  43. data/vendor/c_exception/vendor/unity/docs/Unity Summary.odt +0 -0
  44. data/vendor/c_exception/vendor/unity/docs/Unity Summary.pdf +0 -0
  45. data/vendor/c_exception/vendor/unity/docs/Unity Summary.txt +217 -0
  46. data/vendor/c_exception/vendor/unity/docs/license.txt +31 -0
  47. data/vendor/c_exception/vendor/unity/examples/helper/UnityHelper.c +10 -0
  48. data/vendor/c_exception/vendor/unity/examples/helper/UnityHelper.h +12 -0
  49. data/vendor/c_exception/vendor/unity/examples/makefile +40 -0
  50. data/vendor/c_exception/vendor/unity/examples/rakefile.rb +32 -0
  51. data/vendor/c_exception/vendor/unity/examples/rakefile_helper.rb +256 -0
  52. data/vendor/c_exception/vendor/unity/examples/readme.txt +18 -0
  53. data/vendor/c_exception/vendor/unity/examples/src/ProductionCode.c +24 -0
  54. data/vendor/c_exception/vendor/unity/examples/src/ProductionCode.h +3 -0
  55. data/vendor/c_exception/vendor/unity/examples/src/ProductionCode2.c +9 -0
  56. data/vendor/c_exception/vendor/unity/examples/src/ProductionCode2.h +2 -0
  57. data/vendor/c_exception/vendor/unity/examples/test/TestProductionCode.c +62 -0
  58. data/vendor/c_exception/vendor/unity/examples/test/TestProductionCode2.c +31 -0
  59. data/vendor/c_exception/vendor/unity/examples/test/no_ruby/TestProductionCode2_Runner.c +46 -0
  60. data/vendor/c_exception/vendor/unity/examples/test/no_ruby/TestProductionCode_Runner.c +50 -0
  61. data/vendor/c_exception/vendor/unity/extras/fixture/build/MakefileWorker.mk +331 -0
  62. data/vendor/c_exception/vendor/unity/extras/fixture/build/filterGcov.sh +61 -0
  63. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +37 -0
  64. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +178 -0
  65. data/vendor/c_exception/vendor/unity/extras/fixture/readme.txt +9 -0
  66. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +381 -0
  67. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +81 -0
  68. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +44 -0
  69. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +16 -0
  70. data/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +21 -0
  71. data/vendor/c_exception/vendor/unity/extras/fixture/test/testunity_fixture.c +39 -0
  72. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +321 -0
  73. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +40 -0
  74. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +56 -0
  75. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
  76. data/vendor/c_exception/vendor/unity/makefile +35 -0
  77. data/vendor/c_exception/vendor/unity/rakefile.rb +59 -0
  78. data/vendor/c_exception/vendor/unity/rakefile_helper.rb +240 -0
  79. data/vendor/c_exception/vendor/unity/release/build.info +2 -0
  80. data/vendor/c_exception/vendor/unity/release/version.info +2 -0
  81. data/vendor/c_exception/vendor/unity/src/unity.c +979 -0
  82. data/vendor/c_exception/vendor/unity/src/unity.h +232 -0
  83. data/vendor/c_exception/vendor/unity/src/unity_internals.h +424 -0
  84. data/vendor/c_exception/vendor/unity/targets/gcc.yml +43 -0
  85. data/vendor/c_exception/vendor/unity/targets/gcc_64.yml +44 -0
  86. data/vendor/c_exception/vendor/unity/targets/hitech_picc18.yml +101 -0
  87. data/vendor/c_exception/vendor/unity/targets/iar_arm_v4.yml +89 -0
  88. data/vendor/c_exception/vendor/unity/targets/iar_arm_v5.yml +79 -0
  89. data/vendor/c_exception/vendor/unity/targets/iar_arm_v5_3.yml +79 -0
  90. data/vendor/c_exception/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -0
  91. data/vendor/c_exception/vendor/unity/targets/iar_cortexm3_v5.yml +83 -0
  92. data/vendor/c_exception/vendor/unity/targets/iar_msp430.yml +94 -0
  93. data/vendor/c_exception/vendor/unity/targets/iar_sh2a_v6.yml +85 -0
  94. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_cmd.c +54 -0
  95. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_def.c +50 -0
  96. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_cmd.c +76 -0
  97. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_def.c +72 -0
  98. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new1.c +85 -0
  99. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new2.c +85 -0
  100. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_param.c +73 -0
  101. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run1.c +85 -0
  102. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run2.c +85 -0
  103. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_yaml.c +86 -0
  104. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new1.c +60 -0
  105. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new2.c +63 -0
  106. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_param.c +51 -0
  107. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run1.c +60 -0
  108. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run2.c +63 -0
  109. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_yaml.c +64 -0
  110. data/vendor/c_exception/vendor/unity/test/test_generate_test_runner.rb +94 -0
  111. data/vendor/c_exception/vendor/unity/test/testdata/mocksample.c +51 -0
  112. data/vendor/c_exception/vendor/unity/test/testdata/sample.yml +9 -0
  113. data/vendor/c_exception/vendor/unity/test/testdata/testsample.c +51 -0
  114. data/vendor/c_exception/vendor/unity/test/testparameterized.c +101 -0
  115. data/vendor/c_exception/vendor/unity/test/testunity.c +2024 -0
  116. data/vendor/cmock/docs/CMock Summary.odt +0 -0
  117. data/vendor/cmock/docs/CMock Summary.pdf +0 -0
  118. data/vendor/cmock/docs/CMock_Summary.md +356 -0
  119. data/vendor/cmock/docs/license.txt +31 -0
  120. data/vendor/cmock/examples/gcc.yml +43 -0
  121. data/vendor/cmock/examples/iar_v4.yml +91 -0
  122. data/vendor/cmock/examples/iar_v5.yml +80 -0
  123. data/vendor/cmock/examples/rakefile.rb +32 -0
  124. data/vendor/cmock/examples/rakefile_helper.rb +270 -0
  125. data/vendor/cmock/examples/src/AT91SAM7X256.h +2556 -0
  126. data/vendor/cmock/examples/src/AdcConductor.c +42 -0
  127. data/vendor/cmock/examples/src/AdcConductor.h +11 -0
  128. data/vendor/cmock/examples/src/AdcHardware.c +27 -0
  129. data/vendor/cmock/examples/src/AdcHardware.h +9 -0
  130. data/vendor/cmock/examples/src/AdcHardwareConfigurator.c +18 -0
  131. data/vendor/cmock/examples/src/AdcHardwareConfigurator.h +10 -0
  132. data/vendor/cmock/examples/src/AdcModel.c +33 -0
  133. data/vendor/cmock/examples/src/AdcModel.h +13 -0
  134. data/vendor/cmock/examples/src/AdcTemperatureSensor.c +51 -0
  135. data/vendor/cmock/examples/src/AdcTemperatureSensor.h +10 -0
  136. data/vendor/cmock/examples/src/Executor.c +25 -0
  137. data/vendor/cmock/examples/src/Executor.h +9 -0
  138. data/vendor/cmock/examples/src/IntrinsicsWrapper.c +18 -0
  139. data/vendor/cmock/examples/src/IntrinsicsWrapper.h +7 -0
  140. data/vendor/cmock/examples/src/Main.c +46 -0
  141. data/vendor/cmock/examples/src/Main.h +7 -0
  142. data/vendor/cmock/examples/src/Model.c +10 -0
  143. data/vendor/cmock/examples/src/Model.h +8 -0
  144. data/vendor/cmock/examples/src/ModelConfig.h +7 -0
  145. data/vendor/cmock/examples/src/TaskScheduler.c +72 -0
  146. data/vendor/cmock/examples/src/TaskScheduler.h +11 -0
  147. data/vendor/cmock/examples/src/TemperatureCalculator.c +27 -0
  148. data/vendor/cmock/examples/src/TemperatureCalculator.h +6 -0
  149. data/vendor/cmock/examples/src/TemperatureFilter.c +39 -0
  150. data/vendor/cmock/examples/src/TemperatureFilter.h +10 -0
  151. data/vendor/cmock/examples/src/TimerConductor.c +15 -0
  152. data/vendor/cmock/examples/src/TimerConductor.h +9 -0
  153. data/vendor/cmock/examples/src/TimerConfigurator.c +51 -0
  154. data/vendor/cmock/examples/src/TimerConfigurator.h +15 -0
  155. data/vendor/cmock/examples/src/TimerHardware.c +15 -0
  156. data/vendor/cmock/examples/src/TimerHardware.h +8 -0
  157. data/vendor/cmock/examples/src/TimerInterruptConfigurator.c +55 -0
  158. data/vendor/cmock/examples/src/TimerInterruptConfigurator.h +13 -0
  159. data/vendor/cmock/examples/src/TimerInterruptHandler.c +25 -0
  160. data/vendor/cmock/examples/src/TimerInterruptHandler.h +10 -0
  161. data/vendor/cmock/examples/src/TimerModel.c +9 -0
  162. data/vendor/cmock/examples/src/TimerModel.h +8 -0
  163. data/vendor/cmock/examples/src/Types.h +103 -0
  164. data/vendor/cmock/examples/src/UsartBaudRateRegisterCalculator.c +18 -0
  165. data/vendor/cmock/examples/src/UsartBaudRateRegisterCalculator.h +6 -0
  166. data/vendor/cmock/examples/src/UsartConductor.c +21 -0
  167. data/vendor/cmock/examples/src/UsartConductor.h +7 -0
  168. data/vendor/cmock/examples/src/UsartConfigurator.c +39 -0
  169. data/vendor/cmock/examples/src/UsartConfigurator.h +13 -0
  170. data/vendor/cmock/examples/src/UsartHardware.c +22 -0
  171. data/vendor/cmock/examples/src/UsartHardware.h +9 -0
  172. data/vendor/cmock/examples/src/UsartModel.c +34 -0
  173. data/vendor/cmock/examples/src/UsartModel.h +10 -0
  174. data/vendor/cmock/examples/src/UsartPutChar.c +16 -0
  175. data/vendor/cmock/examples/src/UsartPutChar.h +8 -0
  176. data/vendor/cmock/examples/src/UsartTransmitBufferStatus.c +7 -0
  177. data/vendor/cmock/examples/src/UsartTransmitBufferStatus.h +8 -0
  178. data/vendor/cmock/examples/test/TestAdcConductor.c +121 -0
  179. data/vendor/cmock/examples/test/TestAdcHardware.c +44 -0
  180. data/vendor/cmock/examples/test/TestAdcHardwareConfigurator.c +43 -0
  181. data/vendor/cmock/examples/test/TestAdcModel.c +33 -0
  182. data/vendor/cmock/examples/test/TestAdcTemperatureSensor.c +47 -0
  183. data/vendor/cmock/examples/test/TestExecutor.c +36 -0
  184. data/vendor/cmock/examples/test/TestMain.c +24 -0
  185. data/vendor/cmock/examples/test/TestModel.c +20 -0
  186. data/vendor/cmock/examples/test/TestTaskScheduler.c +104 -0
  187. data/vendor/cmock/examples/test/TestTemperatureCalculator.c +33 -0
  188. data/vendor/cmock/examples/test/TestTemperatureFilter.c +69 -0
  189. data/vendor/cmock/examples/test/TestTimerConductor.c +32 -0
  190. data/vendor/cmock/examples/test/TestTimerConfigurator.c +112 -0
  191. data/vendor/cmock/examples/test/TestTimerHardware.c +26 -0
  192. data/vendor/cmock/examples/test/TestTimerInterruptConfigurator.c +78 -0
  193. data/vendor/cmock/examples/test/TestTimerInterruptHandler.c +66 -0
  194. data/vendor/cmock/examples/test/TestTimerModel.c +18 -0
  195. data/vendor/cmock/examples/test/TestUsartBaudRateRegisterCalculator.c +21 -0
  196. data/vendor/cmock/examples/test/TestUsartConductor.c +40 -0
  197. data/vendor/cmock/examples/test/TestUsartConfigurator.c +77 -0
  198. data/vendor/cmock/examples/test/TestUsartHardware.c +37 -0
  199. data/vendor/cmock/examples/test/TestUsartModel.c +40 -0
  200. data/vendor/cmock/examples/test/TestUsartPutChar.c +43 -0
  201. data/vendor/cmock/examples/test/TestUsartTransmitBufferStatus.c +22 -0
  202. data/vendor/cmock/iar/iar_v4/Resource/SAM7_FLASH.mac +71 -0
  203. data/vendor/cmock/iar/iar_v4/Resource/SAM7_RAM.mac +94 -0
  204. data/vendor/cmock/iar/iar_v4/Resource/SAM7_SIM.mac +67 -0
  205. data/vendor/cmock/iar/iar_v4/Resource/at91SAM7X256_FLASH.xcl +185 -0
  206. data/vendor/cmock/iar/iar_v4/Resource/at91SAM7X256_RAM.xcl +185 -0
  207. data/vendor/cmock/iar/iar_v4/Resource/ioat91sam7x256.ddf +2259 -0
  208. data/vendor/cmock/iar/iar_v4/cmock_demo.dep +3691 -0
  209. data/vendor/cmock/iar/iar_v4/cmock_demo.ewd +1696 -0
  210. data/vendor/cmock/iar/iar_v4/cmock_demo.ewp +2581 -0
  211. data/vendor/cmock/iar/iar_v4/cmock_demo.eww +10 -0
  212. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X-EK.h +61 -0
  213. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256.inc +2314 -0
  214. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256.rdf +4704 -0
  215. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256.tcl +3407 -0
  216. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256_inc.h +2268 -0
  217. data/vendor/cmock/iar/iar_v4/incIAR/ioat91sam7x256.h +4380 -0
  218. data/vendor/cmock/iar/iar_v4/incIAR/lib_AT91SAM7X256.h +4211 -0
  219. data/vendor/cmock/iar/iar_v4/settings/cmock_demo.cspy.bat +32 -0
  220. data/vendor/cmock/iar/iar_v4/settings/cmock_demo.dbgdt +86 -0
  221. data/vendor/cmock/iar/iar_v4/settings/cmock_demo.dni +42 -0
  222. data/vendor/cmock/iar/iar_v4/settings/cmock_demo.wsdt +76 -0
  223. data/vendor/cmock/iar/iar_v4/srcIAR/Cstartup.s79 +266 -0
  224. data/vendor/cmock/iar/iar_v4/srcIAR/Cstartup_SAM7.c +98 -0
  225. data/vendor/cmock/iar/iar_v5/Resource/SAM7_FLASH.mac +71 -0
  226. data/vendor/cmock/iar/iar_v5/Resource/SAM7_RAM.mac +94 -0
  227. data/vendor/cmock/iar/iar_v5/Resource/SAM7_SIM.mac +67 -0
  228. data/vendor/cmock/iar/iar_v5/Resource/at91SAM7X256_FLASH.icf +43 -0
  229. data/vendor/cmock/iar/iar_v5/Resource/at91SAM7X256_RAM.icf +42 -0
  230. data/vendor/cmock/iar/iar_v5/cmock_demo.dep +4204 -0
  231. data/vendor/cmock/iar/iar_v5/cmock_demo.ewd +1906 -0
  232. data/vendor/cmock/iar/iar_v5/cmock_demo.ewp +2426 -0
  233. data/vendor/cmock/iar/iar_v5/cmock_demo.eww +26 -0
  234. data/vendor/cmock/iar/iar_v5/incIAR/AT91SAM7X-EK.h +61 -0
  235. data/vendor/cmock/iar/iar_v5/incIAR/AT91SAM7X256_inc.h +2268 -0
  236. data/vendor/cmock/iar/iar_v5/incIAR/lib_AT91SAM7X256.h +4211 -0
  237. data/vendor/cmock/iar/iar_v5/incIAR/project.h +30 -0
  238. data/vendor/cmock/iar/iar_v5/settings/BasicInterrupt_SAM7X.cspy.bat +33 -0
  239. data/vendor/cmock/iar/iar_v5/settings/BasicInterrupt_SAM7X.dbgdt +5 -0
  240. data/vendor/cmock/iar/iar_v5/settings/BasicInterrupt_SAM7X.dni +18 -0
  241. data/vendor/cmock/iar/iar_v5/settings/BasicInterrupt_SAM7X.wsdt +74 -0
  242. data/vendor/cmock/iar/iar_v5/settings/BasicInterrupt_SAM7X_FLASH_Debug.jlink +12 -0
  243. data/vendor/cmock/iar/iar_v5/settings/cmock_demo.cspy.bat +33 -0
  244. data/vendor/cmock/iar/iar_v5/settings/cmock_demo.dbgdt +85 -0
  245. data/vendor/cmock/iar/iar_v5/settings/cmock_demo.dni +44 -0
  246. data/vendor/cmock/iar/iar_v5/settings/cmock_demo.wsdt +73 -0
  247. data/vendor/cmock/iar/iar_v5/settings/cmock_demo_Binary.jlink +12 -0
  248. data/vendor/cmock/iar/iar_v5/settings/cmock_demo_FLASH_Debug.jlink +12 -0
  249. data/vendor/cmock/iar/iar_v5/settings/cmock_demo_RAM_Debug.jlink +12 -0
  250. data/vendor/cmock/iar/iar_v5/srcIAR/Cstartup.s +299 -0
  251. data/vendor/cmock/iar/iar_v5/srcIAR/Cstartup_SAM7.c +98 -0
  252. data/vendor/cmock/rakefile.rb +111 -0
  253. data/vendor/cmock/rakefile_helper.rb +381 -0
  254. data/vendor/cmock/targets/gcc.yml +53 -0
  255. data/vendor/cmock/targets/iar_arm_v4.yml +108 -0
  256. data/vendor/cmock/targets/iar_arm_v5.yml +93 -0
  257. data/vendor/cmock/test/c/TestCMockC.c +280 -0
  258. data/vendor/cmock/test/c/TestCMockC.yml +12 -0
  259. data/vendor/cmock/test/c/TestCMockCDynamic.c +186 -0
  260. data/vendor/cmock/test/c/TestCMockCDynamic.yml +12 -0
  261. data/vendor/cmock/test/c/TestCMockCDynamic_Runner.c +35 -0
  262. data/vendor/cmock/test/c/TestCMockC_Runner.c +37 -0
  263. data/vendor/cmock/test/spec/cmock_file_writer_spec.rb +25 -0
  264. data/vendor/cmock/test/spec/spec_helper.rb +12 -0
  265. data/vendor/cmock/test/system/systest_generator.rb +178 -0
  266. data/vendor/cmock/test/system/test_compilation/callingconv.h +11 -0
  267. data/vendor/cmock/test/system/test_compilation/config.yml +9 -0
  268. data/vendor/cmock/test/system/test_compilation/const.h +15 -0
  269. data/vendor/cmock/test/system/test_compilation/osek.h +275 -0
  270. data/vendor/cmock/test/system/test_compilation/parsing.h +47 -0
  271. data/vendor/cmock/test/system/test_interactions/all_plugins_but_other_limits.yml +341 -0
  272. data/vendor/cmock/test/system/test_interactions/all_plugins_coexist.yml +382 -0
  273. data/vendor/cmock/test/system/test_interactions/array_and_pointer_handling.yml +382 -0
  274. data/vendor/cmock/test/system/test_interactions/basic_expect_and_return.yml +123 -0
  275. data/vendor/cmock/test/system/test_interactions/const_primitives_handling.yml +87 -0
  276. data/vendor/cmock/test/system/test_interactions/enforce_strict_ordering.yml +247 -0
  277. data/vendor/cmock/test/system/test_interactions/expect_and_return_custom_types.yml +108 -0
  278. data/vendor/cmock/test/system/test_interactions/expect_and_return_treat_as.yml +173 -0
  279. data/vendor/cmock/test/system/test_interactions/expect_and_throw.yml +170 -0
  280. data/vendor/cmock/test/system/test_interactions/fancy_pointer_handling.yml +208 -0
  281. data/vendor/cmock/test/system/test_interactions/function_pointer_handling.yml +82 -0
  282. data/vendor/cmock/test/system/test_interactions/ignore_and_return.yml +153 -0
  283. data/vendor/cmock/test/system/test_interactions/newer_standards_stuff1.yml +52 -0
  284. data/vendor/cmock/test/system/test_interactions/nonstandard_parsed_stuff_1.yml +91 -0
  285. data/vendor/cmock/test/system/test_interactions/nonstandard_parsed_stuff_2.yml +59 -0
  286. data/vendor/cmock/test/system/test_interactions/parsing_challenges.yml +222 -0
  287. data/vendor/cmock/test/system/test_interactions/struct_union_enum_expect_and_return.yml +277 -0
  288. data/vendor/cmock/test/system/test_interactions/stubs_with_callbacks.yml +221 -0
  289. data/vendor/cmock/test/system/test_interactions/unity_64bit_support.yml +77 -0
  290. data/vendor/cmock/test/system/test_interactions/unity_ignores.yml +139 -0
  291. data/vendor/cmock/test/test_helper.rb +44 -0
  292. data/vendor/cmock/test/unit/cmock_config_test.rb +121 -0
  293. data/vendor/cmock/test/unit/cmock_config_test.yml +5 -0
  294. data/vendor/cmock/test/unit/cmock_file_writer_test.rb +30 -0
  295. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +413 -0
  296. data/vendor/cmock/test/unit/cmock_generator_plugin_array_test.rb +114 -0
  297. data/vendor/cmock/test/unit/cmock_generator_plugin_callback_test.rb +190 -0
  298. data/vendor/cmock/test/unit/cmock_generator_plugin_cexception_test.rb +94 -0
  299. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_test.rb +206 -0
  300. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_test.rb +168 -0
  301. data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +291 -0
  302. data/vendor/cmock/test/unit/cmock_header_parser_test.rb +1247 -0
  303. data/vendor/cmock/test/unit/cmock_plugin_manager_test.rb +85 -0
  304. data/vendor/cmock/test/unit/cmock_unityhelper_parser_test.rb +223 -0
  305. data/vendor/cmock/vendor/behaviors/Manifest.txt +9 -0
  306. data/vendor/cmock/vendor/behaviors/Rakefile +19 -0
  307. data/vendor/cmock/vendor/behaviors/lib/behaviors.rb +76 -0
  308. data/vendor/cmock/vendor/behaviors/lib/behaviors/reporttask.rb +158 -0
  309. data/vendor/cmock/vendor/behaviors/test/behaviors_tasks_test.rb +73 -0
  310. data/vendor/cmock/vendor/behaviors/test/behaviors_test.rb +50 -0
  311. data/vendor/cmock/vendor/behaviors/test/tasks_test/Rakefile +19 -0
  312. data/vendor/cmock/vendor/behaviors/test/tasks_test/lib/user.rb +2 -0
  313. data/vendor/cmock/vendor/behaviors/test/tasks_test/test/user_test.rb +17 -0
  314. data/vendor/cmock/vendor/hardmock/CHANGES +78 -0
  315. data/vendor/cmock/vendor/hardmock/LICENSE +7 -0
  316. data/vendor/cmock/vendor/hardmock/README +70 -0
  317. data/vendor/cmock/vendor/hardmock/Rakefile +8 -0
  318. data/vendor/cmock/vendor/hardmock/config/environment.rb +12 -0
  319. data/vendor/cmock/vendor/hardmock/lib/assert_error.rb +23 -0
  320. data/vendor/cmock/vendor/hardmock/lib/extend_test_unit.rb +14 -0
  321. data/vendor/cmock/vendor/hardmock/lib/hardmock.rb +86 -0
  322. data/vendor/cmock/vendor/hardmock/lib/hardmock/errors.rb +22 -0
  323. data/vendor/cmock/vendor/hardmock/lib/hardmock/expectation.rb +229 -0
  324. data/vendor/cmock/vendor/hardmock/lib/hardmock/expectation_builder.rb +9 -0
  325. data/vendor/cmock/vendor/hardmock/lib/hardmock/expector.rb +26 -0
  326. data/vendor/cmock/vendor/hardmock/lib/hardmock/method_cleanout.rb +33 -0
  327. data/vendor/cmock/vendor/hardmock/lib/hardmock/mock.rb +180 -0
  328. data/vendor/cmock/vendor/hardmock/lib/hardmock/mock_control.rb +53 -0
  329. data/vendor/cmock/vendor/hardmock/lib/hardmock/stubbing.rb +210 -0
  330. data/vendor/cmock/vendor/hardmock/lib/hardmock/trapper.rb +31 -0
  331. data/vendor/cmock/vendor/hardmock/lib/hardmock/utils.rb +9 -0
  332. data/vendor/cmock/vendor/hardmock/lib/test_unit_before_after.rb +169 -0
  333. data/vendor/cmock/vendor/hardmock/rake_tasks/rdoc.rake +19 -0
  334. data/vendor/cmock/vendor/hardmock/rake_tasks/rdoc_options.rb +4 -0
  335. data/vendor/cmock/vendor/hardmock/rake_tasks/test.rake +22 -0
  336. data/vendor/cmock/vendor/hardmock/test/functional/assert_error_test.rb +52 -0
  337. data/vendor/cmock/vendor/hardmock/test/functional/auto_verify_test.rb +178 -0
  338. data/vendor/cmock/vendor/hardmock/test/functional/direct_mock_usage_test.rb +396 -0
  339. data/vendor/cmock/vendor/hardmock/test/functional/hardmock_test.rb +434 -0
  340. data/vendor/cmock/vendor/hardmock/test/functional/stubbing_test.rb +479 -0
  341. data/vendor/cmock/vendor/hardmock/test/test_helper.rb +43 -0
  342. data/vendor/cmock/vendor/hardmock/test/unit/expectation_builder_test.rb +19 -0
  343. data/vendor/cmock/vendor/hardmock/test/unit/expectation_test.rb +372 -0
  344. data/vendor/cmock/vendor/hardmock/test/unit/expector_test.rb +57 -0
  345. data/vendor/cmock/vendor/hardmock/test/unit/method_cleanout_test.rb +36 -0
  346. data/vendor/cmock/vendor/hardmock/test/unit/mock_control_test.rb +175 -0
  347. data/vendor/cmock/vendor/hardmock/test/unit/mock_test.rb +279 -0
  348. data/vendor/cmock/vendor/hardmock/test/unit/test_unit_before_after_test.rb +452 -0
  349. data/vendor/cmock/vendor/hardmock/test/unit/trapper_test.rb +62 -0
  350. data/vendor/cmock/vendor/hardmock/test/unit/verify_error_test.rb +40 -0
  351. data/vendor/unity/auto/generate_config.yml +36 -0
  352. data/vendor/unity/auto/unity_test_summary.rb +2 -2
  353. data/vendor/unity/docs/Unity Summary.odt +0 -0
  354. data/vendor/unity/docs/Unity Summary.pdf +0 -0
  355. data/vendor/unity/docs/Unity Summary.txt +216 -0
  356. data/vendor/unity/docs/license.txt +31 -0
  357. data/vendor/unity/examples/helper/UnityHelper.c +10 -0
  358. data/vendor/unity/examples/helper/UnityHelper.h +12 -0
  359. data/vendor/unity/examples/makefile +40 -0
  360. data/vendor/unity/examples/rakefile.rb +32 -0
  361. data/vendor/unity/examples/rakefile_helper.rb +256 -0
  362. data/vendor/unity/examples/readme.txt +18 -0
  363. data/vendor/unity/examples/src/ProductionCode.c +24 -0
  364. data/vendor/unity/examples/src/ProductionCode.h +3 -0
  365. data/vendor/unity/examples/src/ProductionCode2.c +9 -0
  366. data/vendor/unity/examples/src/ProductionCode2.h +2 -0
  367. data/vendor/unity/examples/test/TestProductionCode.c +62 -0
  368. data/vendor/unity/examples/test/TestProductionCode2.c +31 -0
  369. data/vendor/unity/examples/test/no_ruby/TestProductionCode2_Runner.c +46 -0
  370. data/vendor/unity/examples/test/no_ruby/TestProductionCode_Runner.c +50 -0
  371. data/vendor/unity/extras/fixture/build/MakefileWorker.mk +331 -0
  372. data/vendor/unity/extras/fixture/build/filterGcov.sh +61 -0
  373. data/vendor/unity/extras/fixture/rakefile.rb +37 -0
  374. data/vendor/unity/extras/fixture/rakefile_helper.rb +178 -0
  375. data/vendor/unity/extras/fixture/readme.txt +9 -0
  376. data/vendor/unity/extras/fixture/src/unity_fixture.c +381 -0
  377. data/vendor/unity/extras/fixture/src/unity_fixture.h +81 -0
  378. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +44 -0
  379. data/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +16 -0
  380. data/vendor/unity/extras/fixture/test/main/AllTests.c +21 -0
  381. data/vendor/unity/extras/fixture/test/testunity_fixture.c +39 -0
  382. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +321 -0
  383. data/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +40 -0
  384. data/vendor/unity/extras/fixture/test/unity_output_Spy.c +56 -0
  385. data/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
  386. data/vendor/unity/makefile +35 -0
  387. data/vendor/unity/rakefile.rb +59 -0
  388. data/vendor/unity/rakefile_helper.rb +240 -0
  389. data/vendor/unity/release/version.info +1 -1
  390. data/vendor/unity/src/unity.c +1 -1
  391. data/vendor/unity/src/unity_internals.h +5 -5
  392. data/vendor/unity/targets/gcc_32.yml +44 -0
  393. data/vendor/unity/targets/hitech_picc18.yml +101 -0
  394. data/vendor/unity/targets/iar_arm_v4.yml +89 -0
  395. data/vendor/unity/targets/iar_arm_v5.yml +79 -0
  396. data/vendor/unity/targets/iar_arm_v5_3.yml +79 -0
  397. data/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -0
  398. data/vendor/unity/targets/iar_cortexm3_v5.yml +83 -0
  399. data/vendor/unity/targets/iar_msp430.yml +94 -0
  400. data/vendor/unity/targets/iar_sh2a_v6.yml +85 -0
  401. data/vendor/unity/test/expectdata/testsample_cmd.c +54 -0
  402. data/vendor/unity/test/expectdata/testsample_def.c +50 -0
  403. data/vendor/unity/test/expectdata/testsample_mock_cmd.c +76 -0
  404. data/vendor/unity/test/expectdata/testsample_mock_def.c +72 -0
  405. data/vendor/unity/test/expectdata/testsample_mock_new1.c +85 -0
  406. data/vendor/unity/test/expectdata/testsample_mock_new2.c +85 -0
  407. data/vendor/unity/test/expectdata/testsample_mock_param.c +73 -0
  408. data/vendor/unity/test/expectdata/testsample_mock_run1.c +85 -0
  409. data/vendor/unity/test/expectdata/testsample_mock_run2.c +85 -0
  410. data/vendor/unity/test/expectdata/testsample_mock_yaml.c +86 -0
  411. data/vendor/unity/test/expectdata/testsample_new1.c +60 -0
  412. data/vendor/unity/test/expectdata/testsample_new2.c +63 -0
  413. data/vendor/unity/test/expectdata/testsample_param.c +51 -0
  414. data/vendor/unity/test/expectdata/testsample_run1.c +60 -0
  415. data/vendor/unity/test/expectdata/testsample_run2.c +63 -0
  416. data/vendor/unity/test/expectdata/testsample_yaml.c +64 -0
  417. data/vendor/unity/test/test_generate_test_runner.rb +94 -0
  418. data/vendor/unity/test/testdata/mocksample.c +51 -0
  419. data/vendor/unity/test/testdata/sample.yml +9 -0
  420. data/vendor/unity/test/testdata/testsample.c +51 -0
  421. data/vendor/unity/test/testparameterized.c +101 -0
  422. data/vendor/unity/test/testunity.c +2559 -0
  423. metadata +464 -53
  424. data/.gitignore +0 -6
  425. data/.gitmodules +0 -9
  426. data/.rspec +0 -1
@@ -0,0 +1,30 @@
1
+ Copyright (c) 2007 Mark VanderVoord
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ The end-user documentation included with the redistribution, if
16
+ any, must include the following acknowledgment: "This product
17
+ includes software developed for the CEXCeption Project, by Mark
18
+ VanderVoord and other contributors", in the same place and form
19
+ as other third-party acknowledgments. Alternately, this
20
+ acknowledgment may appear in the software itself, in the same
21
+ form and location as other such third-party acknowledgments.
22
+
23
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
25
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
27
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
28
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
30
+ OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,242 @@
1
+ ====================================================================
2
+ CException
3
+ ====================================================================
4
+
5
+ CException is a basic exception framework for C, suitable for use in
6
+ embedded applications. It provides an exception framework similar in
7
+ use to C++, but with much less overhead.
8
+
9
+ CException uses C standard library functions setjmp and longjmp to
10
+ operate. As long as the target system has these two functions defined,
11
+ this library should be useable with very little configuration. It
12
+ even supports environments where multiple program flows are in use,
13
+ such as real-time operating systems.
14
+
15
+ There are about a gabillion exception frameworks using a similar
16
+ setjmp/longjmp method out there... and there will probably be more
17
+ in the future. Unfortunately, when we started our last embedded
18
+ project, all those that existed either (a) did not support multiple
19
+ tasks (therefore multiple stacks) or (b) were way more complex than
20
+ we really wanted. CException was born.
21
+
22
+ Why use CException?
23
+
24
+ 0. It's ANSI C, and it beats passing error codes around.
25
+
26
+ 1. You want something simple... CException throws a single id. You can
27
+ define those ID's to be whatever you like. You might even choose which
28
+ type that number is for your project. But that's as far as it goes.
29
+ We weren't interested in passing objects or structs or strings...
30
+ just simple error codes.
31
+
32
+ 2. Performance... CException can be configured for single tasking or
33
+ multitasking. In single tasking, there is very little overhead past
34
+ the setjmp/longjmp calls (which are already fast). In multitasking,
35
+ your only additional overhead is the time it takes you to determine
36
+ a unique task id 0 - num_tasks.
37
+
38
+ For the latest version, go to http://cexception.sourceforge.net
39
+
40
+ --------------------------------------------------------------------
41
+ CONTENTS OF THIS DOCUMENT
42
+ --------------------------------------------------------------------
43
+
44
+ Usage
45
+ Limitations
46
+ API
47
+ Configuration
48
+ Testing
49
+ License
50
+
51
+ --------------------------------------------------------------------
52
+ Usage
53
+ --------------------------------------------------------------------
54
+
55
+ Code that is to be protected are wrapped in Try { } Catch { } blocks.
56
+ The code directly following the Try call is "protected", meaning that
57
+ if any Throws occur, program control is directly transferred to the
58
+ start of the Catch block.
59
+
60
+ A numerical exception ID is included with Throw, and is made accessible
61
+ from the Catch block.
62
+
63
+ Throws can occur from within function calls (nested as deeply as you
64
+ like) or directly from within the function itself.
65
+
66
+ --------------------------------------------------------------------
67
+ Limitations
68
+ --------------------------------------------------------------------
69
+
70
+ This library was made to be as fast as possible, and provide basic
71
+ exception handling. It is not a full-blown exception library. Because
72
+ of this, there are a few limitations that should be observed in order
73
+ to successfully utilize this library:
74
+
75
+ 1. Do not directly "return" from within a Try block, nor "goto"
76
+ into or out of a Try block.
77
+
78
+ Why?
79
+
80
+ The "Try" macro allocates some local memory and alters a global
81
+ pointer. These are cleaned up at the top of the "Catch" macro.
82
+ Gotos and returns would bypass some of these steps, resulting in
83
+ memory leaks or unpredictable behavior.
84
+
85
+ 2. If (a) you change local (stack) variables within your Try block,
86
+ AND (b) wish to make use of the updated values after an exception
87
+ is thrown, those variables should be made volatile. Note that this
88
+ is ONLY for locals and ONLY when you need access to them after a
89
+ throw.
90
+
91
+ Why?
92
+
93
+ Compilers optimize. There is no way to guarantee that the actual
94
+ memory location was updated and not just a register unless the
95
+ variable is marked volatile.
96
+
97
+ 3. Memory which is malloc'd or new'd is not automatically released
98
+ when an error is thrown. This will sometimes be desirable, and
99
+ othertimes may not. It will be the responsibility of the Catch
100
+ block to perform this kind of cleanup.
101
+
102
+ Why?
103
+
104
+ There's just no easy way to track malloc'd memory, etc., without
105
+ replacing or wrapping malloc calls or something like that. This
106
+ is a light framework, so these options were not desirable.
107
+
108
+ --------------------------------------------------------------------
109
+ API
110
+ --------------------------------------------------------------------
111
+
112
+ Try
113
+ ---
114
+
115
+ Try is a macro which starts a protected block. It MUST be followed by
116
+ a pair of braces or a single protected line (similar to an 'if'),
117
+ enclosing the data that is to be protected. It MUST be followed by a
118
+ Catch block (don't worry, you'll get compiler errors to let you know if
119
+ you mess any of that up).
120
+
121
+ Catch(e)
122
+ --------
123
+
124
+ Catch is a macro which ends the Try block and starts the error handling
125
+ block. The catch block is called if and only if an exception was thrown
126
+ while within the Try block. This error was thrown by a Throw call
127
+ somewhere within Try (or within a function called within Try, or a function
128
+ called by a function called within Try, etc).
129
+
130
+ The single parameter 'e' is filled with the error code which was thrown.
131
+ This can be used for reporting, conditional cleanup, etc. (or you can just
132
+ ignore it if you really want... people ignore return codes all the time,
133
+ right?). 'e' should be of type EXCEPTION_T;
134
+
135
+ Throw(e)
136
+ --------
137
+
138
+ The method of throwing an error. Throws should only occur from within a
139
+ protected (Try...Catch) block, though it may easily be nested many function
140
+ calls deep without an impact on performance or functionality. Throw takes
141
+ a single argument, which is an exception id which will be passed to Catch
142
+ as the reason for the error.
143
+
144
+ If you wish to Rethrow an error, this can be done by calling Throw(e) with
145
+ the error code you just caught. It IS valid to throw from a catch block.
146
+
147
+ --------------------------------------------------------------------
148
+ CONFIGURATION
149
+ --------------------------------------------------------------------
150
+
151
+ CException is a mostly portable library. It has one universal
152
+ dependency, and some macros which are required if working in a
153
+ multi-tasking environment.
154
+
155
+ 1. The standard C library setjmp must be available. Since this is part
156
+ of the standard library, chances are good that you'll be fine.
157
+
158
+ 2. If working in a multitasking environment, methods for obtaining an
159
+ index into an array of frames and to get the overall number of
160
+ id's are required. If the OS supports a method to retrieve Task
161
+ ID's, and those Tasks are number 0, 1, 2... you are in an ideal
162
+ situation. Otherwise, a more creative mapping function may be
163
+ required. Note that this function is likely to be called twice
164
+ for each protected block and once during a throw. This is the
165
+ only overhead in the system.
166
+
167
+ Exception.h
168
+ -----------------
169
+ By convention, most projects include Exception.h which defines any
170
+ further requirements, then calls CException.h to do the gruntwork. All
171
+ of these are optional. You could directly include CException.h if
172
+ you wanted and just use the defaults provided.
173
+
174
+ EXCEPTION_T - Set this to the type you want your exception id's
175
+ to be. Defaults to 'unsigned int'.
176
+
177
+ EXCEPTION_NONE - Set this to a number which will never be an
178
+ exception id in your system. Defaults to 0x5a5a5a5a.
179
+
180
+ EXCEPTION_GET_ID - If in a multi-tasking environment, this should be
181
+ set to be a call to the function described in #2 above.
182
+ Defaults to just return 0 all the time (good for
183
+ single tasking environments)
184
+
185
+ EXCEPTION_NUM_ID - If in a multi-tasking environment, this should be set
186
+ to the number of ID's required (usually the number of
187
+ tasks in the system). Defaults to 1 (for single
188
+ tasking environments).
189
+
190
+ CEXCEPTION_NO_CATCH_HANDLER(id) - This macro can be optionally specified.
191
+ It allows you to specify code to be called when a Throw
192
+ is made outside of Try...Catch protection. Consider
193
+ this the emergency fallback plan for when something has
194
+ gone terribly wrong.
195
+
196
+ You may also want to include any header files which will commonly be
197
+ needed by the rest of your application where it uses exception handling
198
+ here. For example, OS header files or exception codes would be useful.
199
+
200
+ --------------------------------------------------------------------
201
+ TESTING
202
+ --------------------------------------------------------------------
203
+
204
+ If you want to validate that CException works with your tools or that
205
+ it works with your custom configuration, you may want to run the test
206
+ suite.
207
+
208
+ The test suite included makes use of the Unity Test Framework. It will
209
+ require a native C compiler. The example makefile uses MinGW's gcc.
210
+ Modify the makefile to include the proper paths to tools, then run 'make'
211
+ to compile and run the test application.
212
+
213
+ C_COMPILER - The C compiler to use to perform the tests
214
+ C_LIBS - The path to the C libraries (including setjmp)
215
+ UNITY_DIR - The path to the Unity framework (required to run tests)
216
+ (get it at http://unity.sourceforge.net)
217
+
218
+ --------------------------------------------------------------------
219
+ LICENSE
220
+ --------------------------------------------------------------------
221
+
222
+ This software is licensed under the MIT License
223
+
224
+ Copyright (c) 2007-2012 Mark VanderVoord
225
+
226
+ Permission is hereby granted, free of charge, to any person obtaining a copy
227
+ of this software and associated documentation files (the "Software"), to deal
228
+ in the Software without restriction, including without limitation the rights
229
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
230
+ copies of the Software, and to permit persons to whom the Software is
231
+ furnished to do so, subject to the following conditions:
232
+
233
+ The above copyright notice and this permission notice shall be included in
234
+ all copies or substantial portions of the Software.
235
+
236
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
237
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
238
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
239
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
240
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
241
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
242
+ THE SOFTWARE.
@@ -0,0 +1,24 @@
1
+ #Tool and Lib Locations
2
+ C_COMPILER=gcc
3
+ C_LIBS=C:/MinGW/lib
4
+ UNITY_DIR=vendor/unity/src
5
+
6
+ #Test File To Be Created
7
+ OUT_FILE=test_cexceptions
8
+ ifeq ($(OS),Windows_NT)
9
+ OUT_EXTENSION=.exe
10
+ else
11
+ OUT_EXTENSION=.out
12
+ endif
13
+
14
+ #Options
15
+ SRC_FILES=lib/CException.c test/TestException.c test/TestException_Runner.c $(UNITY_DIR)/unity.c
16
+ INC_DIRS=-Ilib -Itest -I$(UNITY_DIR)
17
+ LIB_DIRS=-L$(C_LIBS)
18
+ SYMBOLS=-DTEST -DCEXCEPTION_USE_CONFIG_FILE
19
+
20
+ #Default Task: Compile And Run Tests
21
+ default:
22
+ $(C_COMPILER) $(INC_DIRS) $(LIB_DIRS) $(SYMBOLS) $(SRC_FILES) -o $(OUT_FILE)$(OUT_EXTENSION)
23
+ $(OUT_FILE)$(OUT_EXTENSION)
24
+
@@ -0,0 +1,41 @@
1
+ HERE = File.expand_path(File.dirname(__FILE__)) + '/'
2
+
3
+ require 'rake'
4
+ require 'rake/clean'
5
+ require 'rake/testtask'
6
+ require HERE+'vendor/unity/auto/colour_reporter.rb'
7
+
8
+ #Tool and Lib Locations
9
+ C_COMPILER = 'gcc'
10
+ C_LIBS = ''
11
+ UNITY_DIR = 'vendor/unity/src'
12
+
13
+ #Test File To Be Created
14
+ OUT_FILE = 'test_cexceptions'
15
+ OUT_EXTENSION = '.out'
16
+
17
+ #Options
18
+ SRC_FILES = "lib/CException.c test/TestException.c test/TestException_Runner.c #{UNITY_DIR}/unity.c"
19
+ INC_DIRS = "-Ilib -Itest -I#{UNITY_DIR}"
20
+ LIB_DIRS = C_LIBS.empty? ? '' : "-L#{C_LIBS}"
21
+ SYMBOLS = '-DTEST -DCEXCEPTION_USE_CONFIG_FILE'
22
+
23
+ CLEAN.include("#{HERE}*.out")
24
+
25
+ task :default => [:clobber, :test]
26
+ task :cruise => [:no_color, :default]
27
+
28
+ desc "performs a quick set of unit tests to confirm you're ready to go"
29
+ task :test do
30
+ report "#{C_COMPILER} #{INC_DIRS} #{LIB_DIRS} #{SYMBOLS} #{SRC_FILES} -o #{OUT_FILE}#{OUT_EXTENSION}"
31
+ output = `#{C_COMPILER} #{INC_DIRS} #{LIB_DIRS} #{SYMBOLS} #{SRC_FILES} -o #{OUT_FILE}#{OUT_EXTENSION}`
32
+ report output
33
+
34
+ report "#{HERE}#{OUT_FILE}#{OUT_EXTENSION}"
35
+ output = `#{HERE}#{OUT_FILE}#{OUT_EXTENSION}`
36
+ report output
37
+ end
38
+
39
+ task :no_color do
40
+ $colour_output = false
41
+ end
@@ -0,0 +1,44 @@
1
+ #ifndef _EXCEPTION_H
2
+ #define _EXCEPTION_H
3
+
4
+ #include "unity.h"
5
+
6
+ extern volatile int TestingTheFallback;
7
+
8
+ //Optionally define the exception type (something like an int which can be directly assigned)
9
+ #define CEXCEPTION_T int
10
+
11
+ // Optionally define the reserved value representing NO EXCEPTION
12
+ #define CEXCEPTION_NONE (1234)
13
+
14
+ // Optionally define a special handler for unhandled exceptions
15
+ #define CEXCEPTION_NO_CATCH_HANDLER(id) \
16
+ { \
17
+ if (!TestingTheFallback) \
18
+ { \
19
+ TEST_FAIL_MESSAGE("Unexpected Exception!"); \
20
+ } \
21
+ else \
22
+ { \
23
+ TestingTheFallback--; \
24
+ } \
25
+ }
26
+
27
+ // Multi-Tasking environments will need a couple of macros defined to make this library
28
+ // properly handle multiple exception stacks. You will need to include and required
29
+ // definitions, then define the following macros:
30
+ // EXCEPTION_GET_ID - returns the id of the current task indexed 0 to (numtasks - 1)
31
+ // EXCEPTION_NUM_ID - returns the number of tasks that might be returned
32
+ //
33
+ // For example, Quadros might include the following implementation:
34
+ #ifndef TEST
35
+ #include "OSAPI.h"
36
+ #define CEXCEPTION_GET_ID (KS_GetTaskID())
37
+ #define CEXCEPTION_NUM_ID (NTASKS + 1)
38
+ #endif
39
+
40
+ //This could be a good place to define/include some error ID's:
41
+ #define ERROR_ID_EVERYTHING_IS_BROKEN (0x88)
42
+ #define ERROR_ID_ONLY_THIS_IS_BROKEN (0x77)
43
+
44
+ #endif // _EXCEPTION_H
@@ -0,0 +1,328 @@
1
+ #include "unity.h"
2
+ #include "CException.h"
3
+
4
+ volatile int TestingTheFallback;
5
+
6
+ void setUp(void)
7
+ {
8
+ CExceptionFrames[0].pFrame = NULL;
9
+ TestingTheFallback = 0;
10
+ }
11
+
12
+ void tearDown(void)
13
+ {
14
+ }
15
+
16
+ void test_BasicTryDoesNothingIfNoThrow(void)
17
+ {
18
+ int i;
19
+ CEXCEPTION_T e = 0x5a;
20
+
21
+ Try
22
+ {
23
+ i += 1;
24
+ }
25
+ Catch(e)
26
+ {
27
+ TEST_FAIL_MESSAGE("Should Not Enter Catch If Not Thrown")
28
+ }
29
+
30
+ //verify that e was untouched
31
+ TEST_ASSERT_EQUAL(0x5a, e);
32
+ }
33
+
34
+ void test_BasicThrowAndCatch(void)
35
+ {
36
+ CEXCEPTION_T e;
37
+
38
+ Try
39
+ {
40
+ Throw(0xBE);
41
+ TEST_FAIL_MESSAGE("Should Have Thrown An Error")
42
+ }
43
+ Catch(e)
44
+ {
45
+ //verify that e has the right data
46
+ TEST_ASSERT_EQUAL(0xBE, e);
47
+ }
48
+
49
+ //verify that e STILL has the right data
50
+ TEST_ASSERT_EQUAL(0xBE, e);
51
+ }
52
+
53
+ void test_BasicThrowAndCatch_WithMiniSyntax(void)
54
+ {
55
+ CEXCEPTION_T e;
56
+
57
+ //Mini Throw and Catch
58
+ Try
59
+ Throw(0xEF);
60
+ Catch(e)
61
+ TEST_ASSERT_EQUAL(0xEF, e);
62
+ TEST_ASSERT_EQUAL(0xEF, e);
63
+
64
+ //Mini Passthrough
65
+ Try
66
+ e = 0;
67
+ Catch(e)
68
+ TEST_FAIL_MESSAGE("I shouldn't be caught because there was no throw");
69
+
70
+ TEST_ASSERT_EQUAL(0, e);
71
+ }
72
+
73
+ void test_VerifyVolatilesSurviveThrowAndCatch(void)
74
+ {
75
+ volatile unsigned int VolVal = 0;
76
+ CEXCEPTION_T e;
77
+
78
+ Try
79
+ {
80
+ VolVal = 2;
81
+ Throw(0xBF);
82
+ TEST_FAIL_MESSAGE("Should Have Thrown An Error")
83
+ }
84
+ Catch(e)
85
+ {
86
+ VolVal += 2;
87
+ TEST_ASSERT_EQUAL(0xBF, e);
88
+ }
89
+
90
+ TEST_ASSERT_EQUAL(4, VolVal);
91
+ TEST_ASSERT_EQUAL(0xBF, e);
92
+ }
93
+
94
+ void HappyExceptionThrower(unsigned int ID)
95
+ {
96
+ if (ID != 0)
97
+ {
98
+ Throw(ID);
99
+ }
100
+ }
101
+
102
+ void test_ThrowFromASubFunctionAndCatchInRootFunc(void)
103
+ {
104
+ volatile unsigned int ID = 0;
105
+ CEXCEPTION_T e;
106
+
107
+ Try
108
+ {
109
+
110
+ HappyExceptionThrower(0xBA);
111
+ TEST_FAIL_MESSAGE("Should Have Thrown An Exception");
112
+ }
113
+ Catch(e)
114
+ {
115
+ ID = e;
116
+ }
117
+
118
+ //verify that I can pass that value to something else
119
+ TEST_ASSERT_EQUAL(0xBA, e);
120
+ }
121
+
122
+ void HappyExceptionRethrower(unsigned int ID)
123
+ {
124
+ CEXCEPTION_T e;
125
+
126
+ Try
127
+ {
128
+ Throw(ID);
129
+ }
130
+ Catch(e)
131
+ {
132
+ switch (e)
133
+ {
134
+ case 0xBD:
135
+ Throw(0xBF);
136
+ break;
137
+ default:
138
+ break;
139
+ }
140
+ }
141
+ }
142
+
143
+ void test_ThrowAndCatchFromASubFunctionAndRethrowToCatchInRootFunc(void)
144
+ {
145
+ volatile unsigned int ID = 0;
146
+ CEXCEPTION_T e;
147
+
148
+ Try
149
+ {
150
+ HappyExceptionRethrower(0xBD);
151
+ TEST_FAIL_MESSAGE("Should Have Rethrown Exception");
152
+ }
153
+ Catch(e)
154
+ {
155
+ ID = 1;
156
+ }
157
+
158
+ TEST_ASSERT_EQUAL(0xBF, e);
159
+ TEST_ASSERT_EQUAL(1, ID);
160
+ }
161
+
162
+ void test_ThrowAndCatchFromASubFunctionAndNoRethrowToCatchInRootFunc(void)
163
+ {
164
+ CEXCEPTION_T e = 3;
165
+
166
+ Try
167
+ {
168
+ HappyExceptionRethrower(0xBF);
169
+ }
170
+ Catch(e)
171
+ {
172
+ TEST_FAIL_MESSAGE("Should Not Have Re-thrown Error (it should have already been caught)");
173
+ }
174
+
175
+ //verify that THIS e is still untouched, even though subfunction was touched
176
+ TEST_ASSERT_EQUAL(3, e);
177
+ }
178
+
179
+ void test_ThrowAnErrorThenEnterATryBlockFromWithinCatch_VerifyThisDoesntCorruptExceptionId(void)
180
+ {
181
+ CEXCEPTION_T e;
182
+
183
+ Try
184
+ {
185
+ HappyExceptionThrower(0xBF);
186
+ TEST_FAIL_MESSAGE("Should Have Thrown Exception");
187
+ }
188
+ Catch(e)
189
+ {
190
+ TEST_ASSERT_EQUAL(0xBF, e);
191
+ HappyExceptionRethrower(0x12);
192
+ TEST_ASSERT_EQUAL(0xBF, e);
193
+ }
194
+ TEST_ASSERT_EQUAL(0xBF, e);
195
+ }
196
+
197
+ void test_ThrowAnErrorThenEnterATryBlockFromWithinCatch_VerifyThatEachExceptionIdIndependent(void)
198
+ {
199
+ CEXCEPTION_T e1, e2;
200
+
201
+ Try
202
+ {
203
+ HappyExceptionThrower(0xBF);
204
+ TEST_FAIL_MESSAGE("Should Have Thrown Exception");
205
+ }
206
+ Catch(e1)
207
+ {
208
+ TEST_ASSERT_EQUAL(0xBF, e1);
209
+ Try
210
+ {
211
+ HappyExceptionThrower(0x12);
212
+ }
213
+ Catch(e2)
214
+ {
215
+ TEST_ASSERT_EQUAL(0x12, e2);
216
+ }
217
+ TEST_ASSERT_EQUAL(0x12, e2);
218
+ TEST_ASSERT_EQUAL(0xBF, e1);
219
+ }
220
+ TEST_ASSERT_EQUAL(0x12, e2);
221
+ TEST_ASSERT_EQUAL(0xBF, e1);
222
+ }
223
+
224
+ void test_CanHaveMultipleTryBlocksInASingleFunction(void)
225
+ {
226
+ CEXCEPTION_T e;
227
+
228
+ Try
229
+ {
230
+ HappyExceptionThrower(0x01);
231
+ TEST_FAIL_MESSAGE("Should Have Thrown Exception");
232
+ }
233
+ Catch(e)
234
+ {
235
+ TEST_ASSERT_EQUAL(0x01, e);
236
+ }
237
+
238
+ Try
239
+ {
240
+ HappyExceptionThrower(0xF0);
241
+ TEST_FAIL_MESSAGE("Should Have Thrown Exception");
242
+ }
243
+ Catch(e)
244
+ {
245
+ TEST_ASSERT_EQUAL(0xF0, e);
246
+ }
247
+ }
248
+
249
+ void test_CanHaveNestedTryBlocksInASingleFunction_ThrowInside(void)
250
+ {
251
+ int i = 0;
252
+ CEXCEPTION_T e;
253
+
254
+ Try
255
+ {
256
+ Try
257
+ {
258
+ HappyExceptionThrower(0x01);
259
+ i = 1;
260
+ TEST_FAIL_MESSAGE("Should Have Rethrown Exception");
261
+ }
262
+ Catch(e)
263
+ {
264
+ TEST_ASSERT_EQUAL(0x01, e);
265
+ }
266
+ }
267
+ Catch(e)
268
+ {
269
+ TEST_FAIL_MESSAGE("Should Have Been Caught By Inside Catch");
270
+ }
271
+ }
272
+
273
+ void test_CanHaveNestedTryBlocksInASingleFunction_ThrowOutside(void)
274
+ {
275
+ int i = 0;
276
+ CEXCEPTION_T e;
277
+
278
+ Try
279
+ {
280
+ Try
281
+ {
282
+ i = 2;
283
+ }
284
+ Catch(e)
285
+ {
286
+ TEST_FAIL_MESSAGE("Should NotBe Caught Here");
287
+ }
288
+ HappyExceptionThrower(0x01);
289
+ TEST_FAIL_MESSAGE("Should Have Rethrown Exception");
290
+ }
291
+ Catch(e)
292
+ {
293
+ TEST_ASSERT_EQUAL(0x01, e);
294
+ }
295
+ }
296
+
297
+ void test_AThrowWithoutATryCatchWillUseDefaultHandlerIfSpecified(void)
298
+ {
299
+ //Let the fallback handler know we're expecting it to get called this time, so don't fail
300
+ TestingTheFallback = 1;
301
+
302
+ Throw(0xBE);
303
+
304
+ //We know the fallback was run because it decrements the counter above
305
+ TEST_ASSERT_FALSE(TestingTheFallback);
306
+ }
307
+
308
+ void test_AThrowWithoutOutsideATryCatchWillUseDefaultHandlerEvenAfterTryCatch(void)
309
+ {
310
+ CEXCEPTION_T e;
311
+
312
+ Try
313
+ {
314
+ //It's not really important that we do anything here.
315
+ }
316
+ Catch(e)
317
+ {
318
+ //The entire purpose here is just to make sure things get set back to using the default handler when done
319
+ }
320
+
321
+ //Let the fallback handler know we're expecting it to get called this time, so don't fail
322
+ TestingTheFallback = 1;
323
+
324
+ Throw(0xBE);
325
+
326
+ //We know the fallback was run because it decrements the counter above
327
+ TEST_ASSERT_FALSE(TestingTheFallback);
328
+ }