cauldron 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. data/.gitignore +51 -0
  2. data/Gemfile +6 -3
  3. data/Gemfile.lock +16 -3
  4. data/Rakefile +94 -92
  5. data/VERSION +1 -1
  6. data/bin/cauldron +2 -2
  7. data/cauldron.gemspec +15 -451
  8. data/features/cauldron_new_approach.feature +46 -0
  9. data/features/step_definitions/cauldron_steps.rb +11 -0
  10. data/features/step_definitions/terminal_steps.rb +0 -2
  11. data/features/support/env.rb +11 -1
  12. data/features/support/hooks.rb +5 -0
  13. data/lib/cauldron.rb +13 -7
  14. data/lib/cauldron/array_reverse_operator.rb +39 -0
  15. data/lib/cauldron/concat_operator.rb +34 -0
  16. data/lib/cauldron/if_relationship.rb +37 -0
  17. data/lib/cauldron/numeric_operator.rb +45 -0
  18. data/lib/cauldron/pot.rb +54 -162
  19. data/lib/cauldron/relationship.rb +5 -0
  20. data/lib/cauldron/terminal.rb +4 -60
  21. data/lib/cauldron/version.rb +3 -0
  22. data/lib/core/string.rb +21 -0
  23. data/sandbox.rb +27 -6
  24. data/spec/cauldron/array_reverse_operator_spec.rb +59 -0
  25. data/spec/cauldron/concat_operator_spec.rb +89 -0
  26. data/spec/cauldron/if_relationship_spec.rb +25 -0
  27. data/spec/cauldron/numeric_operator_spec.rb +70 -0
  28. data/spec/cauldron/pot_spec.rb +81 -151
  29. data/spec/cauldron/terminal_spec.rb +1 -39
  30. data/spec/examples/adding_if_statement.yml +13 -0
  31. data/spec/examples/simple_head_theory.txt +13 -0
  32. data/spec/spec_helper.rb +1 -14
  33. data/tasks/theory_tasks.rake +207 -207
  34. metadata +92 -532
  35. data/cauldron/.autotest +0 -23
  36. data/cauldron/History.txt +0 -6
  37. data/cauldron/Manifest.txt +0 -8
  38. data/cauldron/README.txt +0 -57
  39. data/cauldron/Rakefile +0 -27
  40. data/cauldron/bin/cauldron +0 -3
  41. data/cauldron/lib/cauldron.rb +0 -3
  42. data/cauldron/test/test_cauldron.rb +0 -8
  43. data/features/cauldron_example_cases.feature +0 -13
  44. data/features/cauldron_generates_runtime_method.feature +0 -16
  45. data/features/cauldron_generates_single_paramter_methods.feature +0 -25
  46. data/features/cauldron_interactive_start_terminal.feature +0 -17
  47. data/features/cauldron_quit_terminal.feature +0 -9
  48. data/features/cauldron_start_terminal.feature +0 -12
  49. data/features/support/method_1.example +0 -3
  50. data/features/support/method_2.example +0 -6
  51. data/lib/Chain.rb +0 -771
  52. data/lib/ChainMapping.rb +0 -172
  53. data/lib/CodeHandler.rb +0 -513
  54. data/lib/Mapping.rb +0 -27
  55. data/lib/MappingValues.rb +0 -24
  56. data/lib/PartialChain.rb +0 -253
  57. data/lib/Theory.rb +0 -295
  58. data/lib/UnifiedChain.rb +0 -351
  59. data/lib/cauldron/conversion.rb +0 -15
  60. data/lib/cauldron/demos.rb +0 -280
  61. data/lib/cauldron/env.rb +0 -1
  62. data/lib/cauldron/sexp2cauldron.rb +0 -139
  63. data/lib/cauldron/theory_factory.rb +0 -10
  64. data/lib/cauldron/util/home.rb +0 -21
  65. data/lib/cauldron/util/saver.rb +0 -45
  66. data/lib/core/ActsAsCode.rb +0 -25
  67. data/lib/core/BlockToken.rb +0 -33
  68. data/lib/core/CCall.rb +0 -7
  69. data/lib/core/CTestCase.rb +0 -27
  70. data/lib/core/ClassMethodCallContainer.rb +0 -58
  71. data/lib/core/Container.rb +0 -95
  72. data/lib/core/InstanceCallContainer.rb +0 -298
  73. data/lib/core/MethodUsage.rb +0 -65
  74. data/lib/core/PrintVariables.rb +0 -25
  75. data/lib/core/TheoryGenerator.rb +0 -753
  76. data/lib/core/Token.rb +0 -7
  77. data/lib/core/assignment/Assignment.rb +0 -18
  78. data/lib/core/assignment/Equal.rb +0 -39
  79. data/lib/core/assignment/Equivalent.rb +0 -20
  80. data/lib/core/assignment/NotEqual.rb +0 -14
  81. data/lib/core/call_container/CallContainer.rb +0 -72
  82. data/lib/core/class_method_call/New.rb +0 -15
  83. data/lib/core/class_method_call/RuntimeClassMethodCall.rb +0 -31
  84. data/lib/core/declaration/Declaration.rb +0 -16
  85. data/lib/core/declaration/LiteralDeclaration.rb +0 -47
  86. data/lib/core/declaration/VariableDeclaration.rb +0 -59
  87. data/lib/core/instance_call/ArrayEach.rb +0 -23
  88. data/lib/core/instance_call/ArrayLength.rb +0 -15
  89. data/lib/core/instance_call/Chop.rb +0 -19
  90. data/lib/core/instance_call/Copy.rb +0 -22
  91. data/lib/core/instance_call/DeclaredVariable.rb +0 -18
  92. data/lib/core/instance_call/InstanceCall.rb +0 -77
  93. data/lib/core/instance_call/Params.rb +0 -15
  94. data/lib/core/instance_call/Push.rb +0 -20
  95. data/lib/core/instance_call/StringLength.rb +0 -32
  96. data/lib/core/instance_call/Times.rb +0 -20
  97. data/lib/core/instance_call/instance_calls.rb +0 -176
  98. data/lib/core/instance_call/length_equal.rb +0 -15
  99. data/lib/core/kernal/EvalCall.rb +0 -15
  100. data/lib/core/kernal/LocalVariablesCall.rb +0 -15
  101. data/lib/core/literal/Literal.rb +0 -111
  102. data/lib/core/literal/Raw.rb +0 -23
  103. data/lib/core/literal/RuntimeMethodLiteral.rb +0 -21
  104. data/lib/core/literal/StatementLiteral.rb +0 -28
  105. data/lib/core/method_call/AvailableVariablesCall.rb +0 -25
  106. data/lib/core/method_call/ClassCall.rb +0 -33
  107. data/lib/core/method_call/DefCall.rb +0 -72
  108. data/lib/core/method_call/EvaluateClassCall.rb +0 -29
  109. data/lib/core/method_call/MethodNameCall.rb +0 -27
  110. data/lib/core/method_call/ToDeclarationCall.rb +0 -15
  111. data/lib/core/requirement/Requirement.rb +0 -292
  112. data/lib/core/runtime_class/ArrayClass.rb +0 -19
  113. data/lib/core/runtime_class/ClassCallClass.rb +0 -23
  114. data/lib/core/runtime_class/ClassEvaluationClass.rb +0 -19
  115. data/lib/core/runtime_class/ClassName.rb +0 -18
  116. data/lib/core/runtime_class/DefCallClass.rb +0 -21
  117. data/lib/core/runtime_class/EqualClass.rb +0 -19
  118. data/lib/core/runtime_class/FixnumClass.rb +0 -15
  119. data/lib/core/runtime_class/InstanceCallClass.rb +0 -19
  120. data/lib/core/runtime_class/InstanceCallContainerClass.rb +0 -16
  121. data/lib/core/runtime_class/InstanceClassCallClass.rb +0 -19
  122. data/lib/core/runtime_class/LiteralClass.rb +0 -19
  123. data/lib/core/runtime_class/MethodParameterClass.rb +0 -27
  124. data/lib/core/runtime_class/MethodUsageClass.rb +0 -27
  125. data/lib/core/runtime_class/RequirementClass.rb +0 -19
  126. data/lib/core/runtime_class/ReturnClass.rb +0 -21
  127. data/lib/core/runtime_class/RuntimeClass.rb +0 -30
  128. data/lib/core/runtime_class/RuntimeClassClass.rb +0 -19
  129. data/lib/core/runtime_class/RuntimeMethodClass.rb +0 -34
  130. data/lib/core/runtime_class/StatementClass.rb +0 -53
  131. data/lib/core/runtime_class/StringClass.rb +0 -23
  132. data/lib/core/runtime_class/StringLengthClass.rb +0 -19
  133. data/lib/core/runtime_class/StringVariableClass.rb +0 -19
  134. data/lib/core/runtime_class/ThisClass.rb +0 -15
  135. data/lib/core/runtime_class/UnknownClass.rb +0 -23
  136. data/lib/core/runtime_class/class_names.rb +0 -95
  137. data/lib/core/runtime_class/runtime_class.rb +0 -123
  138. data/lib/core/runtime_method/ActsAsRuntimeMethod.rb +0 -293
  139. data/lib/core/runtime_method/ParametersContainer.rb +0 -29
  140. data/lib/core/runtime_method/RealisedRuntimeMethod.rb +0 -94
  141. data/lib/core/runtime_method/RuntimeMethod.rb +0 -814
  142. data/lib/core/runtime_method/WriteParameters.rb +0 -35
  143. data/lib/core/statement/ActsAsStatement.rb +0 -20
  144. data/lib/core/statement/ArrayAccess.rb +0 -122
  145. data/lib/core/statement/BlockStatement.rb +0 -348
  146. data/lib/core/statement/DeclarationStatement.rb +0 -19
  147. data/lib/core/statement/HackStatement.rb +0 -25
  148. data/lib/core/statement/HashAccess.rb +0 -18
  149. data/lib/core/statement/OpenStatement.rb +0 -178
  150. data/lib/core/statement/RealisedStatement.rb +0 -5
  151. data/lib/core/statement/SingleLineBlockStatement.rb +0 -39
  152. data/lib/core/statement/Statement.rb +0 -1091
  153. data/lib/core/statement/StatementGroup.rb +0 -157
  154. data/lib/core/statement/StatementStructure2.rb +0 -224
  155. data/lib/core/statement/TheoryStatement.rb +0 -68
  156. data/lib/core/statement/TopologicalStatements.rb +0 -34
  157. data/lib/core/syntax/Addition.rb +0 -26
  158. data/lib/core/syntax/BlockContainer.rb +0 -102
  159. data/lib/core/syntax/Boolean.rb +0 -15
  160. data/lib/core/syntax/Code.rb +0 -11
  161. data/lib/core/syntax/Do.rb +0 -20
  162. data/lib/core/syntax/False.rb +0 -12
  163. data/lib/core/syntax/If.rb +0 -36
  164. data/lib/core/syntax/Nil.rb +0 -15
  165. data/lib/core/syntax/Return.rb +0 -33
  166. data/lib/core/syntax/Subtract.rb +0 -19
  167. data/lib/core/syntax/This.rb +0 -40
  168. data/lib/core/syntax/True.rb +0 -20
  169. data/lib/core/syntax/syntax.rb +0 -24
  170. data/lib/core/tracking/ActsAsTrackable.rb +0 -65
  171. data/lib/core/tracking/History.rb +0 -167
  172. data/lib/core/tracking/RuntimeTrackingMethod.rb +0 -32
  173. data/lib/core/tracking/Step.rb +0 -52
  174. data/lib/core/variable/ArrayVariable.rb +0 -76
  175. data/lib/core/variable/BaseVariable.rb +0 -152
  176. data/lib/core/variable/BlockVariable.rb +0 -92
  177. data/lib/core/variable/FixnumVariable.rb +0 -35
  178. data/lib/core/variable/HistoryVariable.rb +0 -8
  179. data/lib/core/variable/MethodParameter.rb +0 -179
  180. data/lib/core/variable/MethodUsageVariable.rb +0 -60
  181. data/lib/core/variable/NilVariable.rb +0 -29
  182. data/lib/core/variable/RuntimeMethodParameter.rb +0 -67
  183. data/lib/core/variable/StatementVariable.rb +0 -72
  184. data/lib/core/variable/StepVariable.rb +0 -7
  185. data/lib/core/variable/StringVariable.rb +0 -46
  186. data/lib/core/variable/TypeVariable.rb +0 -72
  187. data/lib/core/variable/Unknown.rb +0 -102
  188. data/lib/core/variable/UnknownVariable.rb +0 -29
  189. data/lib/core/variable/Variable.rb +0 -70
  190. data/lib/core/variable/VariableContainer.rb +0 -28
  191. data/lib/core/variable/VariableIncluded.rb +0 -27
  192. data/lib/core/variable/VariableReference.rb +0 -85
  193. data/lib/error/FailedToFindStatementContainerError.rb +0 -7
  194. data/lib/error/FailedToFindStatementError.rb +0 -7
  195. data/lib/error/FailedToFindVariableError.rb +0 -7
  196. data/lib/error/FailedToLiteraliseError.rb +0 -7
  197. data/lib/error/FailedVariableMatch.rb +0 -7
  198. data/lib/error/ImproperStatementUsageError.rb +0 -7
  199. data/lib/error/IncompatiableRequirementsError.rb +0 -7
  200. data/lib/error/InvalidStatementError.rb +0 -7
  201. data/lib/error/MethodSizeError.rb +0 -7
  202. data/lib/error/RuntimeSyntaxError.rb +0 -7
  203. data/lib/error/UnexpectedStatementTypeError.rb +0 -7
  204. data/lib/error/UnknownStatementType.rb +0 -7
  205. data/lib/error/UnliteralisableError.rb +0 -7
  206. data/lib/implemented_chain.rb +0 -35
  207. data/lib/intrinsic/IntrinsicLastRuntimeMethod.rb +0 -20
  208. data/lib/intrinsic/IntrinsicLiteral.rb +0 -26
  209. data/lib/intrinsic/IntrinsicObject.rb +0 -22
  210. data/lib/intrinsic/IntrinsicRuntimeMethod.rb +0 -27
  211. data/lib/intrinsic/IntrinsicTestCases.rb +0 -17
  212. data/lib/logger/StandardLogger.rb +0 -62
  213. data/lib/required.rb +0 -222
  214. data/lib/ruby_code/Array.rb +0 -95
  215. data/lib/ruby_code/Fixnum.rb +0 -39
  216. data/lib/ruby_code/Hash.rb +0 -25
  217. data/lib/ruby_code/NilClass.rb +0 -19
  218. data/lib/ruby_code/Object.rb +0 -24
  219. data/lib/ruby_code/String.rb +0 -63
  220. data/lib/ruby_code/Symbol.rb +0 -7
  221. data/lib/standard_library/Tasks.rb +0 -12
  222. data/lib/theories.rb +0 -166
  223. data/lib/theory/ActionImplementation.rb +0 -17
  224. data/lib/theory/TheoryAction.rb +0 -100
  225. data/lib/theory/TheoryChainValidator.rb +0 -103
  226. data/lib/theory/TheoryComponent.rb +0 -59
  227. data/lib/theory/TheoryConnector.rb +0 -756
  228. data/lib/theory/TheoryDependent.rb +0 -135
  229. data/lib/theory/TheoryImplementation.rb +0 -75
  230. data/lib/theory/TheoryResult.rb +0 -131
  231. data/lib/theory/TheoryVariable.rb +0 -63
  232. data/lib/theory/theory_collection.rb +0 -62
  233. data/lib/util/ClassEvaluation.rb +0 -44
  234. data/lib/util/CodeEvaluation.rb +0 -39
  235. data/lib/util/DeclarationStatementEvaluation.rb +0 -32
  236. data/lib/util/MethodEvaluation.rb +0 -49
  237. data/lib/util/MethodTester.rb +0 -71
  238. data/lib/util/MethodValidation.rb +0 -149
  239. data/lib/util/MethodWriter.rb +0 -66
  240. data/lib/util/Parser.rb +0 -305
  241. data/lib/util/StatementCheck.rb +0 -44
  242. data/lib/util/StringToTheory.rb +0 -142
  243. data/lib/util/System.rb +0 -8
  244. data/spec/cauldron/chain_spec.rb +0 -24
  245. data/spec/cauldron/demos_spec.rb +0 -30
  246. data/spec/cauldron/runtime_method_spec.rb +0 -92
  247. data/spec/cauldron/saver_spec.rb +0 -45
  248. data/spec/cauldron/sexp_2_cauldron_spec.rb +0 -118
  249. data/spec/cauldron/theory_action_spec.rb +0 -25
  250. data/spec/cauldron/theory_connector_spec.rb +0 -52
  251. data/spec/cauldron/theory_spec.rb +0 -59
  252. data/spec/cauldron/unified_chain_spec.rb +0 -140
  253. data/test/fixtures/chains/1/declaration.txt +0 -26
  254. data/test/fixtures/chains/1/dump +0 -0
  255. data/test/fixtures/chains/2/declaration.txt +0 -26
  256. data/test/fixtures/chains/2/dump +0 -0
  257. data/test/fixtures/chains/3/declaration.txt +0 -26
  258. data/test/fixtures/chains/3/dump +0 -0
  259. data/test/fixtures/implementation_results/0/declaration.txt +0 -3
  260. data/test/fixtures/implementation_results/0/dump +0 -0
  261. data/test/fixtures/theories/0/declaration.txt +0 -9
  262. data/test/fixtures/theories/0/desc +0 -10
  263. data/test/fixtures/theories/0/dump +0 -0
  264. data/test/fixtures/theories/1/declaration.txt +0 -15
  265. data/test/fixtures/theories/1/desc +0 -11
  266. data/test/fixtures/theories/1/dump +0 -0
  267. data/test/fixtures/theories/10/declaration.txt +0 -23
  268. data/test/fixtures/theories/10/desc +0 -17
  269. data/test/fixtures/theories/10/dump +0 -0
  270. data/test/fixtures/theories/11/declaration.txt +0 -20
  271. data/test/fixtures/theories/11/desc +0 -14
  272. data/test/fixtures/theories/11/dump +0 -0
  273. data/test/fixtures/theories/12/declaration.txt +0 -18
  274. data/test/fixtures/theories/12/desc +0 -12
  275. data/test/fixtures/theories/12/dump +0 -0
  276. data/test/fixtures/theories/13/declaration.txt +0 -24
  277. data/test/fixtures/theories/13/desc +0 -20
  278. data/test/fixtures/theories/13/dump +0 -0
  279. data/test/fixtures/theories/14/declaration.txt +0 -26
  280. data/test/fixtures/theories/14/desc +0 -20
  281. data/test/fixtures/theories/14/dump +0 -0
  282. data/test/fixtures/theories/15/declaration.txt +0 -20
  283. data/test/fixtures/theories/15/desc +0 -14
  284. data/test/fixtures/theories/15/dump +0 -0
  285. data/test/fixtures/theories/16/declaration.txt +0 -30
  286. data/test/fixtures/theories/16/desc +0 -14
  287. data/test/fixtures/theories/16/dump +0 -0
  288. data/test/fixtures/theories/17/declaration.txt +0 -25
  289. data/test/fixtures/theories/17/desc +0 -11
  290. data/test/fixtures/theories/17/dump +0 -0
  291. data/test/fixtures/theories/18/declaration.txt +0 -23
  292. data/test/fixtures/theories/18/desc +0 -11
  293. data/test/fixtures/theories/18/dump +0 -0
  294. data/test/fixtures/theories/19/declaration.txt +0 -23
  295. data/test/fixtures/theories/19/desc +0 -11
  296. data/test/fixtures/theories/19/dump +0 -0
  297. data/test/fixtures/theories/2/declaration.txt +0 -12
  298. data/test/fixtures/theories/2/desc +0 -10
  299. data/test/fixtures/theories/2/dump +0 -0
  300. data/test/fixtures/theories/20/declaration.txt +0 -23
  301. data/test/fixtures/theories/20/desc +0 -17
  302. data/test/fixtures/theories/20/dump +0 -0
  303. data/test/fixtures/theories/3/declaration.txt +0 -19
  304. data/test/fixtures/theories/3/desc +0 -11
  305. data/test/fixtures/theories/3/dump +0 -0
  306. data/test/fixtures/theories/4/declaration.txt +0 -11
  307. data/test/fixtures/theories/4/desc +0 -11
  308. data/test/fixtures/theories/4/dump +0 -0
  309. data/test/fixtures/theories/5/declaration.txt +0 -6
  310. data/test/fixtures/theories/5/desc +0 -9
  311. data/test/fixtures/theories/5/dump +0 -0
  312. data/test/fixtures/theories/6/declaration.txt +0 -13
  313. data/test/fixtures/theories/6/desc +0 -11
  314. data/test/fixtures/theories/6/dump +0 -0
  315. data/test/fixtures/theories/7/declaration.txt +0 -19
  316. data/test/fixtures/theories/7/desc +0 -11
  317. data/test/fixtures/theories/7/dump +0 -0
  318. data/test/fixtures/theories/8/declaration.txt +0 -21
  319. data/test/fixtures/theories/8/desc +0 -11
  320. data/test/fixtures/theories/8/dump +0 -0
  321. data/test/fixtures/theories/9/declaration.txt +0 -24
  322. data/test/fixtures/theories/9/desc +0 -20
  323. data/test/fixtures/theories/9/dump +0 -0
  324. data/test/fixtures/theory_implementations/0/declaration.txt +0 -11
  325. data/test/fixtures/theory_implementations/0/desc.txt +0 -9
  326. data/test/fixtures/theory_implementations/0/dump +0 -0
  327. data/test/fixtures/theory_implementations/0/theory_id +0 -1
  328. data/test/fixtures/theory_implementations/1/declaration.txt +0 -11
  329. data/test/fixtures/theory_implementations/1/desc.txt +0 -9
  330. data/test/fixtures/theory_implementations/1/dump +0 -1
  331. data/test/fixtures/theory_implementations/1/theory_id +0 -1
  332. data/test/fixtures/theory_implementations/2/declaration.txt +0 -11
  333. data/test/fixtures/theory_implementations/2/desc.txt +0 -9
  334. data/test/fixtures/theory_implementations/2/dump +0 -0
  335. data/test/fixtures/theory_implementations/2/theory_id +0 -1
  336. data/test/output/simple_method.txt +0 -5
  337. data/test/output/test_method/first_possible_method.txt +0 -6
  338. data/test/output/test_simple_cases/simple_case_01.txt +0 -8
  339. data/test/output/test_simple_cases/simple_case_02.txt +0 -7
  340. data/test/output/test_simple_cases/simple_case_03.txt +0 -8
  341. data/test/output/test_simple_cases/simple_case_04.txt +0 -8
  342. data/test/output/test_simple_cases/simple_case_05.txt +0 -8
  343. data/test/output/test_simple_cases/simple_case_06.txt +0 -9
  344. data/test/output/test_simple_cases/simple_case_07.txt +0 -9
  345. data/test/output/test_simple_cases/simple_case_08.txt +0 -9
  346. data/test/tc_describe.rb +0 -46
  347. data/test/tc_method.rb +0 -130
  348. data/test/tc_requirement.rb +0 -30
  349. data/test/tc_suite_complete.rb +0 -26
  350. data/test/tc_variable.rb +0 -52
  351. data/test/ts_complete.rb +0 -74
  352. data/test/ts_stable.rb +0 -81
  353. data/test/unit/core/declaration/tc_literal_declaration.rb +0 -34
  354. data/test/unit/core/method_call/tc_class_call.rb +0 -20
  355. data/test/unit/core/runtime_method/tc_realised_runtime_method.rb +0 -132
  356. data/test/unit/core/runtime_method/tc_runtime_method.rb +0 -546
  357. data/test/unit/core/statement/tc_array_access.rb +0 -63
  358. data/test/unit/core/statement/tc_block_statement.rb +0 -53
  359. data/test/unit/core/statement/tc_hack_statement.rb +0 -26
  360. data/test/unit/core/statement/tc_open_statement.rb +0 -79
  361. data/test/unit/core/statement/tc_statement.rb +0 -483
  362. data/test/unit/core/statement/tc_statement_group.rb +0 -35
  363. data/test/unit/core/statement/tc_statement_replace_variable.rb +0 -61
  364. data/test/unit/core/statement/tc_theory_statement.rb +0 -53
  365. data/test/unit/core/syntax/tc_block_container.rb +0 -32
  366. data/test/unit/core/syntax/tc_if_container.rb +0 -39
  367. data/test/unit/core/tc_class_method_call.rb +0 -34
  368. data/test/unit/core/tc_container.rb +0 -41
  369. data/test/unit/core/tc_ctest_case.rb +0 -25
  370. data/test/unit/core/tc_instance_call_container.rb +0 -93
  371. data/test/unit/core/tc_literal.rb +0 -30
  372. data/test/unit/core/tc_theory_generator.rb +0 -336
  373. data/test/unit/core/tc_theory_generator_heavy.rb +0 -42
  374. data/test/unit/core/tracking/tc_history.rb +0 -104
  375. data/test/unit/core/tracking/tc_step.rb +0 -65
  376. data/test/unit/core/variable/tc_array_variable.rb +0 -61
  377. data/test/unit/core/variable/tc_block_variable.rb +0 -17
  378. data/test/unit/core/variable/tc_fixnum_variable.rb +0 -54
  379. data/test/unit/core/variable/tc_method_parameter_variable.rb +0 -22
  380. data/test/unit/core/variable/tc_runtime_method_variable.rb +0 -32
  381. data/test/unit/core/variable/tc_string_variable.rb +0 -37
  382. data/test/unit/core/variable/tc_unknown.rb +0 -24
  383. data/test/unit/core/variable/tc_variable_reference.rb +0 -28
  384. data/test/unit/ruby_code/tc_array.rb +0 -64
  385. data/test/unit/ruby_code/tc_fixnum.rb +0 -18
  386. data/test/unit/ruby_code/tc_hash.rb +0 -41
  387. data/test/unit/ruby_code/tc_string.rb +0 -38
  388. data/test/unit/tc_chain.rb +0 -434
  389. data/test/unit/tc_chain_mapping.rb +0 -62
  390. data/test/unit/tc_chain_with_case_1.rb +0 -169
  391. data/test/unit/tc_instance_call.rb +0 -40
  392. data/test/unit/tc_method_usage.rb +0 -35
  393. data/test/unit/tc_pot.rb +0 -124
  394. data/test/unit/tc_runtime_tracking_method.rb +0 -40
  395. data/test/unit/tc_theory.rb +0 -531
  396. data/test/unit/tc_variable_declaration.rb +0 -32
  397. data/test/unit/theory/tc_theory_action.rb +0 -108
  398. data/test/unit/theory/tc_theory_action_implementation.rb +0 -23
  399. data/test/unit/theory/tc_theory_chain_validator.rb +0 -340
  400. data/test/unit/theory/tc_theory_connector.rb +0 -361
  401. data/test/unit/theory/tc_theory_dependent.rb +0 -153
  402. data/test/unit/theory/tc_theory_implementation.rb +0 -137
  403. data/test/unit/theory/tc_theory_result.rb +0 -112
  404. data/test/unit/theory/tc_theory_variable.rb +0 -45
  405. data/test/unit/util/tc_method_validation.rb +0 -101
  406. data/test/unit/util/tc_parser.rb +0 -110
  407. data/test/unit/util/tc_string_to_theory.rb +0 -300
  408. data/test/unit/variable/tc_method_usage_variable.rb +0 -25
  409. data/tmp/runtime_method_evaluation.rb +0 -16
@@ -1,8 +0,0 @@
1
- class System
2
-
3
- def self.reset
4
- Variable.reset_global_id
5
- RuntimeMethod.reset_global_id
6
- end
7
-
8
- end
@@ -1,24 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Cauldron
4
-
5
- describe 'Chain' do
6
-
7
- describe '#complete?' do
8
- it 'chain is complete with just "return param1"' do
9
- temp = Object.new
10
- temp.extend(Cauldron::Demos)
11
- demo = temp.demo_one
12
- demo[:chain].complete?.should == true
13
- end
14
- it 'chain is complete with "if param1 == \'carrot\'"' do
15
- temp = Object.new
16
- temp.extend(Cauldron::Demos)
17
- demo = temp.demo_two
18
- demo[:chain].complete?.should == true
19
- end
20
- end
21
-
22
- end
23
-
24
- end
@@ -1,30 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Cauldron
4
-
5
- describe 'Demos' do
6
-
7
- describe '#demo_one' do
8
- it 'can generate a demo that can generate a simple runtime method' do
9
- temp = Object.new
10
- temp.extend(Cauldron::Demos)
11
- demo = temp.demo_one
12
-
13
- # => TODO Don't like this coupling
14
- Cauldron::Pot.new.demo_works?(demo).should == true
15
- end
16
- end
17
-
18
- describe '#demo_two' do
19
- it 'generates a demo that can return two different values' do
20
- temp = Object.new
21
- temp.extend(Cauldron::Demos)
22
- demo = temp.demo_two
23
-
24
- Cauldron::Pot.new.demo_works?(demo).should == true
25
- end
26
- end
27
-
28
- end
29
-
30
- end
@@ -1,92 +0,0 @@
1
- require 'spec_helper'
2
-
3
- def fetch_runtime
4
-
5
- basic_runtime = %q!
6
- def method_1(var_2)
7
- return var_2
8
- end
9
- !
10
- res = eval(basic_runtime)
11
- sexp = RubyParser.new.process(basic_runtime)
12
-
13
- end
14
-
15
-
16
- module Cauldron
17
-
18
- describe 'RuntimeMethod' do
19
-
20
- describe '#basic_write' do
21
- # => TODO I need a factory or better way to write the runtime methods
22
- it 'should return a string of the built method without comment information' do
23
- method_param = MethodParameter.new
24
- temporary_runtime_method = RuntimeMethod.new(MethodUsage.new(method_param))
25
- temporary_runtime_method << Statement.new(Return.new,method_param)
26
- temporary_runtime_method.reset_ids!.basic_write.should == "def method_0(var_0)\n return var_0\nend\n"
27
- end
28
- end
29
-
30
- describe '#reset_ids!' do
31
- context 'runtime method is empty' do
32
- it 'should return a new runtime method with the method id and variables starting from 0(this is for comparision)' do
33
- parser = RubyParser.new
34
- ruby = "
35
- def method_8
36
- end
37
- "
38
- sexp = parser.process(ruby)
39
- sexp2cauldron = Sexp2Cauldron.new
40
- unprocessed_runtime_method = sexp2cauldron.process(sexp)
41
- reset_runtime_method = unprocessed_runtime_method.reset_ids!
42
- reset_runtime_method.method_id.should == '0'
43
- end
44
- end
45
- context 'using runtime method with if statement' do
46
- it 'should reset all the ids to 0 and count up' do
47
- parser = RubyParser.new
48
- ruby = %q{
49
- def method_3(var_8)
50
- if(var_8 == 'apple')
51
- return 'fruit'
52
- end
53
- return 'vegetable'
54
- end
55
- }
56
- sexp = parser.process(ruby)
57
- sexp2cauldron = Sexp2Cauldron.new
58
- unprocessed_runtime_method = sexp2cauldron.process(sexp)
59
- reset_runtime_method = unprocessed_runtime_method.reset_ids!
60
- reset_runtime_method.method_id.should == '0'
61
- reset_runtime_method.variables.length.should == 1
62
-
63
- ruby_reset =
64
- %q{def method_0(var_0)
65
- if(var_0 == 'apple')
66
- return 'fruit'
67
- end
68
- return 'vegetable'
69
- end}
70
- reset_runtime_method.basic_write.should == ruby_reset+"\n"
71
- end
72
- end
73
- end
74
-
75
- describe '#realise2' do
76
- it 'should be able to realise a very simple runtime method' do
77
- parser = RubyParser.new
78
- ruby = "
79
- def method_3
80
- var_13 = 8
81
- end
82
- "
83
- sexp = parser.process(ruby)
84
- sexp2cauldron = Sexp2Cauldron.new
85
- runtime_method = sexp2cauldron.process(sexp)
86
- runtime_method.realise2(ParametersContainer.new).class.should == RealisedRuntimeMethod
87
- end
88
- end
89
-
90
- end
91
-
92
- end
@@ -1,45 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Cauldron
4
-
5
- module Util
6
-
7
- describe Saver do
8
-
9
- describe '.save' do
10
- it 'can save a string object without raising an exception' do
11
- lambda {Cauldron::Util::Saver.save('geth')}.should_not raise_error
12
- end
13
- it 'will return the path to saved string object after saving it' do
14
- Cauldron::Util::Saver.save('Normandy').should match(/cauldron\/debug/)
15
- end
16
- end
17
-
18
- describe '.debug_directory' do
19
- it 'should return the path to the debug directory' do
20
- Cauldron::Util::Saver.debug_directory.should include("/cauldron/debug")
21
- end
22
- end
23
-
24
- describe '.next_directory' do
25
- it "should return the path to a directory that doesn't exist" do
26
- Cauldron::Util::Saver.next_directory.should match(/cauldron\/debug\/\d+/)
27
- end
28
- it 'should not return the path to an existing directory' do
29
- File.exists?(Cauldron::Util::Saver.next_directory).should_not == true
30
- end
31
- end
32
-
33
- describe '.load' do
34
- it 'can load a saved obj' do
35
- path = Cauldron::Util::Saver.save('Adele & Kirk')
36
- path_id = path.match(/(\d+)/)[0].to_i
37
- Cauldron::Util::Saver.load(path_id).should == 'Adele & Kirk'
38
- end
39
- end
40
-
41
- end
42
-
43
- end
44
-
45
- end
@@ -1,118 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Cauldron
4
-
5
- describe "Sexp2Cauldron" do
6
- describe "#process" do
7
- it "Generates a cauldron literal from a sexp literal" do
8
- parser = RubyParser.new
9
- ruby = "8"
10
- sexp = parser.process(ruby)
11
- sexp2cauldron = Sexp2Cauldron.new
12
- sexp2cauldron.process(sexp).write.should == Literal.new(8).write
13
- end
14
-
15
- it "Generates a basic cauldron statement" do
16
- parser = RubyParser.new
17
- ruby = "var4 = 9"
18
- sexp = parser.process(ruby)
19
- sexp2cauldron = Sexp2Cauldron.new
20
- sexp2cauldron.process(sexp).write.should == Statement.new(Unknown.new(4),Equal.new,Literal.new(9)).write
21
- end
22
-
23
- it 'generates a basic if container' do
24
- parser = RubyParser.new
25
- ruby = %q!
26
- if(var5 == 6)
27
- end
28
- !
29
- sexp = parser.process(ruby)
30
- sexp2cauldron = Sexp2Cauldron.new
31
- sexp = parser.process(ruby)
32
- sexp2cauldron.process(sexp).write.should == "if(var_5 == 6)\nend"
33
- end
34
-
35
- it 'generates an empty runtime method' do
36
- parser = RubyParser.new
37
- ruby = %q!
38
- def method_4
39
- end
40
- !
41
- sexp = parser.process(ruby)
42
- sexp2cauldron = Sexp2Cauldron.new
43
- sexp2cauldron.process(sexp).basic_write.should == strip_whitespace(ruby)+"\n"
44
- end
45
-
46
- it 'generates a method with a simple statement' do
47
- parser = RubyParser.new
48
- ruby = "
49
- def method_3
50
- \tvar_8 = 9
51
- end
52
- "
53
- sexp = parser.process(ruby)
54
- sexp2cauldron = Sexp2Cauldron.new
55
- a = sexp2cauldron.process(sexp)
56
- a.basic_write.should == strip_whitespace(ruby)+"\n"
57
- end
58
-
59
- it 'generates a method with a simple if statement' do
60
- parser = RubyParser.new
61
- ruby = "
62
- def method_6
63
- \tif(var_8 == 9)
64
- \t\treturn var_8
65
- \tend
66
- end
67
- "
68
- sexp2cauldron = Sexp2Cauldron.new
69
- sexp = parser.process(ruby)
70
- sexp2cauldron.process(sexp).basic_write.should == strip_whitespace(ruby)+"\n"
71
- end
72
-
73
- it 'generates a method with an if statement and two exit points' do
74
- parser = RubyParser.new
75
- ruby = "
76
- def method_3(var_0)
77
- \tif(var_0 == 'apple')
78
- \t\treturn 'fruit'
79
- \tend
80
- \treturn 'vegetable'
81
- end
82
- "
83
- sexp2cauldron = Sexp2Cauldron.new
84
- sexp = parser.process(ruby)
85
- sexp2cauldron.process(sexp).basic_write.should == strip_whitespace(ruby)+"\n"
86
- end
87
-
88
- it 'generates the solution to demo 1' do
89
- parser = RubyParser.new
90
- ruby = "
91
- def method_0(var_0)
92
- \treturn var_0
93
- end
94
- "
95
- sexp2cauldron = Sexp2Cauldron.new
96
- sexp = parser.process(ruby)
97
- sexp2cauldron.process(sexp).basic_write.should == strip_whitespace(ruby)+"\n"
98
- end
99
-
100
- it 'can parse the solution to demo 2' do
101
- parser = RubyParser.new
102
- ruby = "
103
- def method_0(var_0)
104
- \tif(var_0 == 'fish')
105
- \t\treturn 'animal'
106
- \tend
107
- \treturn 'vegtable'
108
- end
109
- "
110
- sexp2cauldron = Sexp2Cauldron.new
111
- sexp = parser.process(ruby)
112
- sexp2cauldron.process(sexp).basic_write.should == strip_whitespace(ruby)+"\n"
113
- end
114
-
115
- end
116
- end
117
-
118
- end
@@ -1,25 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Cauldron
4
-
5
- describe 'TheoryAction' do
6
-
7
- describe '#statements_with_variable' do
8
-
9
- it 'should return two statements for the action "Statement.new(Return.new, var0.params[var2]),var0.statement_id"' do
10
- link_one_action = TheoryAction.new(
11
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var1.params[var3])')),
12
- StringToTheory.run('var1.statement_id')
13
- )
14
- link_one_action.statements_with_variable(1).length.should == 3
15
- res = link_one_action.statements_with_variable(1).collect {|x| x.write }
16
- res.should include('var1.statement_id')
17
- res.should include('var1.params')
18
-
19
- end
20
-
21
- end
22
-
23
- end
24
-
25
- end
@@ -1,52 +0,0 @@
1
- require 'spec_helper'
2
-
3
- StandardLogger.instance.level = Logger::FATAL
4
-
5
- module Cauldron
6
-
7
- describe TheoryConnector do
8
-
9
- describe '#generate_chains' do
10
- context 'when it has demo 1 theories' do
11
- it 'will generate just one chain' do
12
- theories = demo_one[:chain].collect {|x| x}
13
- runtime_method = demo_one[:initial_method]
14
- test_cases = demo_one[:test_cases]
15
-
16
- connector = TheoryConnector.new(demo_one[:values])
17
- connector.generate_chains(runtime_method,test_cases,theories).length.should == 1
18
- end
19
- end
20
- context "when it has demo two's theories" do
21
- it 'will generate just one chain' do
22
- theories = demo_two[:chain].collect {|x| x}
23
- runtime_method = demo_two[:initial_method]
24
- test_cases = demo_two[:test_cases]
25
-
26
- connector = TheoryConnector.new(demo_two[:values])
27
- connector.generate_chains(runtime_method,test_cases,theories).length.should == 1
28
- end
29
- end
30
- context "when it has both demo one and two's theories" do
31
- it 'will generate just one chain' do
32
- @theories = demo_one[:chain].collect {|x| x} + demo_two[:chain].collect {|x| x}
33
- runtime_method = demo_one[:initial_method]
34
- test_cases = demo_one[:test_cases]
35
-
36
- connector = TheoryConnector.new(demo_one[:values])
37
- connector.generate_chains(runtime_method,test_cases,@theories).length.should == 1
38
- end
39
- it 'will generate two chains when given demo two test cases' do
40
- @theories = demo_one[:chain].collect {|x| x} + demo_two[:chain].collect {|x| x}
41
- runtime_method = demo_two[:initial_method]
42
- test_cases = demo_two[:test_cases]
43
-
44
- connector = TheoryConnector.new(demo_one[:values])
45
- connector.generate_chains(runtime_method,test_cases,@theories).length.should == 1
46
- end
47
- end
48
- end
49
-
50
- end
51
-
52
- end
@@ -1,59 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Cauldron
4
-
5
- describe 'Theory' do
6
-
7
- describe '#map_to' do
8
- it 'can map a simple theory to new values' do
9
- link_one_action = TheoryAction.new(
10
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2.params[var3])')),
11
- StringToTheory.run('var1.statement_id')
12
- )
13
- link_one_result = TheoryResult.new(StringToTheory.run("if(var1.all_pass?(var2))\nreturn true\nend"))
14
- theory = Theory.new([],link_one_action,[link_one_result])
15
-
16
- # Create the mapping for the theory
17
- mapping = Mapping.new({
18
- 1=>IntrinsicRuntimeMethod.new,
19
- 2=>IntrinsicTestCases.new,
20
- 3=>IntrinsicLiteral.new(0)
21
- })
22
- # => TODO Why doesn't the tab character appear - or appear as a space
23
- result = "
24
- if:
25
-
26
- action:
27
- runtime_method.add_statement_at(Statement.new(Return.new, test_cases.params[0]),runtime_method.statement_id)
28
- result:
29
- if(runtime_method.all_pass?(test_cases))
30
- return true
31
- end
32
- "
33
- theory.map_to(mapping).write.strip.should == result.strip
34
-
35
- end
36
- it 'can map a theory with an if statement' do
37
-
38
- link_one_action = TheoryAction.new(
39
- TheoryStatement.new(StringToTheory.run(
40
- 'OpenStatement.new(If.new,Container.new(var1.params[var3],Equivalent.new,var2[var4][:params][var5]))')
41
- ),
42
- StringToTheory.run('var1.statement_id')
43
- )
44
- theory = Theory.new([],link_one_action,[])
45
- mapping = Mapping.new({
46
- 1=>IntrinsicRuntimeMethod.new,
47
- 2=>IntrinsicTestCases.new,
48
- 3=>IntrinsicLiteral.new(0),
49
- 4=>IntrinsicLiteral.new(0),
50
- 5=>IntrinsicLiteral.new(0)
51
- })
52
- puts theory.map_to(mapping).describe
53
-
54
- end
55
- end
56
-
57
- end
58
-
59
- end