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,95 +0,0 @@
1
- class Array
2
-
3
- def cauldron_method_calls
4
- # TODO Need to follow sexp more for ArrayAccess - I shouldn't need a class to contain the array and value
5
- #result = self.length.times.collect {|x| '['+x.to_s+']'}
6
- #result = self.length.times.collect {|x| ArrayAccess.new(self.copy,x)}
7
- result = ['.length','.any?','[]']
8
- return result
9
- end
10
-
11
- def to_var(id=nil,unique_id=nil)
12
- raise StandardError.new('No to_var method has been created for '+self.class.to_s) unless self.class.to_s == 'Array'
13
- # TODO I'm not sure whether it's best to save the literal value or variable value
14
- result = []
15
- self.each {|x| result.push(x.copy)}
16
- replicate = ArrayVariable.new(*result) {{:variable_id => id,:uniq_id=>unique_id}}
17
- return replicate
18
- end
19
-
20
- # Returns the array as a declaration string
21
- # e.g. ['lions','tigers','bears'] becomes "['lion','tigers','bears']"
22
- #
23
- def to_declaration
24
- raise StandardError.new('No to_declaration method has been created for '+self.class.to_s) unless self.class.to_s == 'Array'
25
- return LiteralDeclaration.new(self.clone)
26
- end
27
-
28
- def write
29
- raise StandardError.new('No "write" method has been created for '+self.class.to_s) unless self.class.to_s == 'Array'
30
- line = '['
31
- self.each do |x|
32
- line += x.write
33
- unless x.object_id == self.last.object_id then line += ', ' end
34
- end
35
- line += ']'
36
- return line
37
- end
38
-
39
- def copy
40
- raise StandardError.new('No "copy" method has been created for '+self.class.to_s) unless self.class.to_s == 'Array'
41
- result = []
42
- self.each {|x| result.push(x.copy) }
43
- return result
44
- end
45
-
46
- def to_literal
47
- return Literal.new(self.copy.collect {|x| x.to_literal})
48
- end
49
-
50
- # This is a variation on the 'any?' except if the array contains an array
51
- # it continue the search into that array.
52
- #
53
- # @param &block The block that evaluates if something exists in the array
54
- #
55
- # TODO This method could probably be cleaned up a bit
56
- #
57
- def contains?(&block)
58
- self.each do |x|
59
- if x.respond_to?(:contains?)
60
- if x.contains?(&block)
61
- return true
62
- end
63
- end
64
- return true if block.call(x)
65
- end
66
- return false
67
- end
68
-
69
- # Returns all the elements that match the selection criteria just
70
- # like the select method. However if it contains an array it
71
- # will seach the array as well.
72
- #
73
- # @param results An array of current results that match the requirement
74
- # of the block.
75
- # @param block .
76
- #
77
- def select_all(results=[],&block)
78
- self.each do |x|
79
- if block.call(x)
80
- results.push(x)
81
- end
82
- if x.respond_to?(:select_all)
83
- x.select_all(results,&block)
84
- end
85
- end
86
- return results
87
- end
88
-
89
- def to_intrinsic
90
- # TODO SHould be all? not any?
91
- return IntrinsicTestCases.new if self.any? {|x| x.kind_of?(CTestCase)}
92
- raise StandardError.new('Can not be converted to intrinsic instance '+self.class.to_s)
93
- end
94
-
95
- end
@@ -1,39 +0,0 @@
1
- class Fixnum
2
-
3
- def to_var(id=nil,uniq_id=nil)
4
- return FixnumVariable.new(self,id) {{:variable_id => id,:uniq_id=>uniq_id}}
5
- end
6
-
7
- def copy
8
- return self
9
- end
10
-
11
- def to_declaration
12
- return LiteralDeclaration.new(self)
13
- end
14
-
15
- def write
16
- return self.to_s
17
- end
18
-
19
- def describe
20
- write
21
- end
22
-
23
- def to_literal
24
- return Literal.new(self)
25
- end
26
-
27
- def to_literal_string
28
- return write
29
- end
30
-
31
- def cauldron_method_calls
32
- return ['.kind_of?']
33
- end
34
-
35
- def to_intrinsic
36
- return IntrinsicLiteral.new(self)
37
- end
38
-
39
- end
@@ -1,25 +0,0 @@
1
- class Hash
2
-
3
- def write
4
- #raise StandardError.new('No "write" method has been created for '+self.class.to_s) unless self.class.to_s == 'Hash'
5
- line = '{'
6
- count = 0
7
- self.each do |x,y|
8
- line += x.write+'=>'+y.write
9
- count += 1
10
- next if count == self.length
11
- line += ','
12
- end
13
- line += '}'
14
- return line
15
- end
16
-
17
- def copy
18
- raise StandardError.new('No "copy" method has been created for '+self.class.to_s) unless self.class.to_s == 'Hash'
19
- return self.inject({}) do |x,(key,value)|
20
- x[key] = value
21
- x
22
- end
23
- end
24
-
25
- end
@@ -1,19 +0,0 @@
1
- class NilClass
2
-
3
- def to_var(id=nil)
4
- return NilVariable.new(id) {{:variable_id => id,:uniq_id=>nil}}
5
- end
6
-
7
- def to_declaration
8
- return LiteralDeclaration.new(nil)
9
- end
10
-
11
- def write
12
- return 'nil'
13
- end
14
-
15
- def copy
16
- return self
17
- end
18
-
19
- end
@@ -1,24 +0,0 @@
1
- class Object
2
-
3
- # This is a more useful 'public_methods' since it excludes
4
- # the standard methods inheritated from the Object super
5
- # class.
6
- #
7
- #def uniq_public_methods
8
- # obj = Object.new
9
- # return self.public_methods - obj.public_methods
10
- #end
11
-
12
- # Use p406
13
- # Example.private_instance_methods(false)
14
- # Example.public_instance_methods(false)
15
-
16
- def instance_call_structures
17
- return []
18
- end
19
-
20
- def cauldron_method_calls
21
- return []
22
- end
23
-
24
- end
@@ -1,63 +0,0 @@
1
- class String
2
-
3
- def copy
4
- return self.clone
5
- end
6
-
7
- def declaration_statement
8
- return Statement.new(self.to_s)
9
- end
10
-
11
- def write
12
- x = self.escape_single_quotes
13
- return '\''+x+'\''
14
- end
15
-
16
- def instance_call_structures
17
- return [
18
- InstanceCallContainerStructure.new(StringVariable,Chop.new),
19
- InstanceCallContainerStructure.new(StringVariable,StringLength.new)
20
- ]
21
- end
22
-
23
- #
24
- # @param id You can specify the id of the newly created variable
25
- #
26
- def to_var(var_id=nil,unique_id=nil)
27
- return StringVariable.new(self,var_id){{:variable_id => var_id,:uniq_id=>unique_id}}
28
- end
29
-
30
- def to_declaration
31
- return LiteralDeclaration.new(self.clone)
32
- end
33
-
34
- def to_literal_string
35
- return write
36
- end
37
-
38
- def to_literal
39
- return Literal.new(self.clone)
40
- end
41
-
42
- # Returns a statement declaring a variable with the value of
43
- # this string e.g.
44
- #
45
- # 'Sparky'.to_declaration_statement -> var_x = 'Sparky'
46
- #
47
- def to_declared_variable_statement
48
- return Statement.new(StringVariable.new(self),Equal.new,self.to_declaration)
49
- end
50
-
51
- # http://snippets.dzone.com/posts/show/880
52
- # TODO There is a BASH command `quote` and `quote_readline` that
53
- # might be more useful here.
54
- def escape_single_quotes
55
- return self.gsub(/[']/, '\\\\\'')
56
- end
57
-
58
- def cauldron_method_calls
59
- return ['.length']
60
- end
61
-
62
- end
63
-
@@ -1,7 +0,0 @@
1
- class Symbol
2
-
3
- def write
4
- return ':'+self.to_s
5
- end
6
-
7
- end
@@ -1,12 +0,0 @@
1
- class Tasks
2
- include TSort
3
-
4
- def initialize
5
- @dependencies = []
6
- end
7
-
8
- def add_dependency(task,*relies_on)
9
-
10
- end
11
-
12
- end
@@ -1,166 +0,0 @@
1
-
2
- # TODO Not so keen on loading each theory in super - rather do it in the methods
3
- # it is needed.
4
-
5
- # TODO Allot of this functionalty should be moved to the rake tasks
6
-
7
- module ContainsTheories
8
-
9
- def setup
10
- @theory_1 = Theory.load_theory(1)
11
- @theory_2 = Theory.load_theory(2)
12
- @theory_3 = theory_3
13
- end
14
-
15
- def theory_3
16
-
17
- dependent_one = TheoryDependent.new(
18
- StringToTheory.run(
19
- "if(var1.realise2(var2[var3][:params]).params[0].value.length == var2[var3][:output])\nreturn true\nend"
20
- )
21
- )
22
- action_one = TheoryAction.new(
23
- TheoryStatement.new(
24
- StringToTheory.run(
25
- 'Statement.new(Return.new,InstanceCallContainer.new(var1.params[0],StringLength.new))'
26
- )
27
- ),
28
- StringToTheory.run("var1.statement_id")
29
- )
30
- result_one = TheoryResult.new(
31
- StringToTheory.run("if(var1.all_pass?(var2))\nreturn true\nend"),true
32
- )
33
- Theory.new([dependent_one],action_one,[result_one])
34
-
35
-
36
- end
37
-
38
- def load_theory_implementation(implementation_id)
39
- directory_path = $LOC+File.join('test','fixtures','theory_implementations',implementation_id.to_s)
40
- raise StandardError.new("Theory fixture #{implementation_id} does not exist") unless(File.exists?(directory_path))
41
- dump_file = File.open(File.join(directory_path,'dump'),'r')
42
- return Marshal.load(dump_file.read)
43
- end
44
-
45
- def create_theory_implementation
46
-
47
- theory = Theory.load_theory(6)
48
- potential_values = [
49
- Parser.run('test_cases[0][:params][0]'),
50
- Parser.run('test_cases[0][:params]'),
51
- Parser.run('test_cases[0][:output]'),
52
- Parser.run('test_cases[0]'),
53
- Parser.run('test_cases'),
54
- Parser.run('runtime_method')
55
- ]
56
- results = theory.rewrite_permutations(potential_values)
57
- # NOTE: Rember use grep -A and -B to match particular cases
58
- implemented_theory = results[332]
59
- return implemented_theory
60
-
61
- end
62
-
63
- def save_theory_implementation(implementation_id,theory_id,implementation=nil)
64
- StandardLogger.instance.warning("Caution: Creating new theory implementation #{implementation_id}")
65
- directory_path = $LOC+File.join('test','fixtures','theory_implementations',implementation_id.to_s)
66
- if(File.exists?(directory_path))
67
- StandardLogger.instance.warning("Theory Implementation ficture already exists #{theory_id} -cancelling")
68
- return
69
- else
70
- FileUtils.mkdir_p(directory_path)
71
- end
72
-
73
- if implementation.nil? then implementation = create_theory_implementation end
74
-
75
- desc_file = File.open(File.join(directory_path,'desc.txt'),'w')
76
- desc_file << implementation.describe
77
- desc_file.close
78
-
79
- dump_file = File.open(File.join(directory_path,'dump'),'w')
80
- data = Marshal.dump(implementation)
81
- dump_file << data
82
- dump_file.close
83
-
84
- dump_file = File.open(File.join(directory_path,'theory_id'),'w')
85
- dump_file << theory_id.to_s
86
- dump_file.close
87
-
88
- end
89
-
90
- def load_implementation_result(result_id)
91
- directory_path = $LOC+File.join('test','fixtures','implementation_results',result_id.to_s)
92
- raise StandardError.new("ImplementationResult fixture #{result_id} does not exist") unless(File.exists?(directory_path))
93
- dump_file = File.open(File.join(directory_path,'dump'),'r')
94
- return Marshal.load(dump_file)
95
- end
96
-
97
- # This method is used on to create a theory fixture for use in the test
98
- def create_theory
99
-
100
- theory_id = "16"
101
-
102
- StandardLogger.instance.warning("NOTE: Creating new theory fixture #{theory_id.to_s}")
103
- # Does a directory for this theory fixture already exist.
104
- directory_path = $LOC+File.join('test','fixtures','theories',theory_id.to_s)
105
- if(File.exists?(directory_path))
106
- StandardLogger.instance.warning("Theory ficture already exists #{theory_id.to_s} -cancelling")
107
- return
108
- else
109
-
110
- # Create the directory
111
- FileUtils.mkdir_p(directory_path)
112
-
113
- end
114
-
115
- # This is just updated here - nothing fancy
116
- declaration = %q!
117
- dependent_one = TheoryDependent.new(
118
- StringToTheory.run(
119
- "if(var1.kind_of?(RuntimeMethod))\nreturn true\nend"
120
- )
121
- )
122
- dependent_two = TheoryDependent.new(
123
- StringToTheory.run(
124
- "if(var3[var4].kind_of?(CTestCase))\nreturn true\nend"
125
- )
126
- )
127
- action = TheoryAction.new(
128
- TheoryStatement.new(
129
- StringToTheory.run(
130
- 'BlockStatement.new(Statement.new(InstanceCallContainer.new(Container.new(InstanceCallContainer.new(var1.params[var2],StringLength.new),Subtract.new,1),Times.new)))'
131
- )
132
- ),
133
- StringToTheory.run('var1.statement_id')
134
- )
135
- result_one = TheoryResult.new(
136
- StringToTheory.run(
137
- "if(var1.history2(var3[var4]).select {|x| x['statement_id'] == var3.last.statement_id} == var3[var4][:params][var2].length-1)\nreturn true\nend"
138
- )
139
- )
140
- Theory.new(
141
- [dependent_one,dependent_two],
142
- action,
143
- [result_one]
144
- )
145
- !
146
-
147
- # Save the declaration (incase the theory needs modified
148
- declaration_file = File.open(File.join(directory_path,'declaration.txt'),'w+')
149
- declaration_file << declaration
150
- declaration_file.close
151
-
152
- theory = eval declaration
153
- data = Marshal.dump(theory)
154
-
155
- # TODO Shouldn't include colours for this description
156
- desc_file = File.open(File.join(directory_path,'desc'),'w+')
157
- desc_file << theory.describe
158
- desc_file.close
159
-
160
- dump_file = File.open(File.join(directory_path,'dump'),'w+')
161
- dump_file << data
162
- dump_file.close
163
-
164
- end
165
-
166
- end