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,23 +0,0 @@
1
- # This class is used to include code into a statement without having
2
- # to create the correct classes etc.
3
- #
4
- # It is currently only used for method validation, where I want a quick
5
- # check that a generated method is correct e.g.
6
- #
7
- # ' == "Test"'
8
- #
9
- class Raw
10
-
11
- def initialize(value)
12
- @value = value
13
- end
14
-
15
- def write()
16
- return @value
17
- end
18
-
19
- def copy
20
- return Raw.new(@value.copy)
21
- end
22
-
23
- end
@@ -1,21 +0,0 @@
1
- # TODO Perhaps RuntimeMethodDeclaration might have worked better
2
- #
3
- class RuntimeMethodLiteral
4
-
5
- def initialize(usage,return_variable)
6
- raise StandardError.new('Where is this used')
7
- @usage = usage
8
- @return_variable = return_variable
9
- end
10
-
11
- def write
12
- # TODO This shouldn't just make up values
13
- return 'RuntimeMethod.new('+@usage.to_declaration.write+','+@return_variable.to_declaration.write+')'
14
- end
15
-
16
- # TODO This copy isn't accurate
17
- def copy
18
- return RuntimeMethodLiteral.new(@usage.copy, @return_variable.copy)
19
- end
20
-
21
- end
@@ -1,28 +0,0 @@
1
- class StatementLiteral
2
-
3
- # TODO I might not need the RuntimeMethodLiteral or StatementLiteral classes - I could just
4
- # use the creation command.
5
-
6
- #
7
- #
8
- def initialize(statement)
9
- @statement = statement
10
- end
11
-
12
- #
13
- #
14
- def write
15
- l = 'Statement.new('
16
- @statement.each do |x|
17
- l += x.creation
18
- l += ',' unless x.object_id == @statement.last.object_id
19
- end
20
- l += ')'
21
- return l
22
- end
23
-
24
- def copy
25
- return StatementLiteral.new(@statement.copy)
26
- end
27
-
28
- end
@@ -1,25 +0,0 @@
1
- class AvailableVariablesCall < InstanceCall
2
- include WriteParameters
3
-
4
- def initialize(*parameters)
5
- super(*parameters)
6
-
7
- # The requirements for the instance use this method call
8
- @use_requirements = [Requirement.new(InstanceCallContainer.new(This.new,ClassCall.new), Equal.new , RuntimeMethodClass.new)]
9
-
10
- end
11
-
12
- def write
13
- return '.available_variables'
14
- end
15
-
16
- # TODO Test this method works
17
- def copy
18
- return self.class.new(*self.collect {|x| x.copy})
19
- end
20
-
21
- def requirements
22
- @use_requirements.each {|req| yield req}
23
- end
24
-
25
- end
@@ -1,33 +0,0 @@
1
- # TODO Change this to InstanceClassCall = remember it needs to be changed to InstanceClassCallClass
2
- #
3
- # TODO Move this to instance_call
4
- #
5
- # This represents the .class element of statements like
6
- # e.g. var_a.class
7
- #
8
- class ClassCall <InstanceCall
9
-
10
- def initialize
11
- super
12
- end
13
-
14
- def write
15
- return '.class'
16
- end
17
-
18
- def copy
19
- return ClassCall.new
20
- end
21
-
22
- # The class call has no requirements since every object has
23
- # this methods.
24
- #
25
- def requirements
26
- return []
27
- end
28
-
29
- def declaration_statement
30
- return ClassMethodCallContainer.new(ClassCallClass.new,New.new)
31
- end
32
-
33
- end
@@ -1,72 +0,0 @@
1
- # This class represent calls to availble functions. This could be
2
- # custom generated method calls e.g.
3
- #
4
- # m1
5
- #
6
- # if there was a method that looked like
7
- #
8
- # def m1
9
- # # do something
10
- # end
11
- #
12
- # it could also be core ruby calls
13
- #
14
- # TODO Write tests for this
15
- #
16
- class DefCall <InstanceCall
17
- include WriteParameters
18
-
19
- # TODO I'm still undecided on whether DefCall should have a scope id or not
20
- attr_reader :runtime_method, :scope_id
21
- attr_writer :scope_id
22
-
23
- #
24
- # TODO I suspect response isn't needed any more or at least should be the secound parameter
25
- # @param response What is returned by the method -
26
- #
27
- def initialize(response,runtime_method,*parameters)
28
- super(*parameters)
29
- raise StandardError.new('Should be a runtime method instance') unless runtime_method.kind_of?(ActsAsRuntimeMethod)
30
- @response = response.copy
31
- @runtime_method = runtime_method.copy
32
-
33
- end
34
-
35
- def write
36
- l = @runtime_method.method_name
37
- l += write_params(self)
38
- return l
39
- end
40
-
41
- def describe
42
- x = 'Call: '+write
43
- return x
44
- end
45
-
46
- def copy
47
- return DefCall.new(@response.copy,@runtime_method.copy,*self.collect {|x| x.copy})
48
- end
49
-
50
- def response
51
- return @response.copy
52
- end
53
-
54
- # Returns true if the method call can pass as specified variable_type. This
55
- # bascially depends on what the method call returns.
56
- #
57
- # @param variable_type The variable type the method call will be treated as. For
58
- # example FixnumVariable.
59
- #
60
- def pass_as?(variable_type)
61
- return @response.pass_as?(variable_type)
62
- end
63
-
64
- def equivalent?(to)
65
- return false unless to.class == self.class
66
- # TODO I should also include a method_interation value here - this should increment each time the
67
- # the runtime method recieves a new statement because it essentially becomes a different method.
68
- return true if @runtime_method.method_id == to.runtime_method.method_id
69
- return false
70
- end
71
-
72
- end
@@ -1,29 +0,0 @@
1
- # NOTE: This class call shouldn't be made available during runtime method
2
- # generation. - it would just get messy.
3
- #
4
- class EvaluateClassCall < InstanceCall
5
-
6
- def initialize
7
- super
8
- end
9
-
10
- def write
11
- return '.evaluate_class'
12
- end
13
-
14
- def copy
15
- return EvaluateClassCall.new
16
- end
17
-
18
- # The class call has no requirements since every object has
19
- # this methods.
20
- #
21
- def requirements
22
- return []
23
- end
24
-
25
- def declaration_statement
26
- return ClassMethodCallContainer.new(EvaluateClassCall.new,New.new)
27
- end
28
-
29
- end
@@ -1,27 +0,0 @@
1
-
2
- class MethodNameCall < InstanceCall
3
-
4
- def initialize
5
- super
6
- end
7
-
8
- def write
9
- return '.method_name'
10
- end
11
-
12
- def copy
13
- return MethodNameCall.new
14
- end
15
-
16
- # The class call has no requirements since every object has
17
- # this methods.
18
- #
19
- def requirements
20
- return []
21
- end
22
-
23
- def declaration_statement
24
- return ClassMethodCallContainer.new(MethodNameCall.new,New.new)
25
- end
26
-
27
- end
@@ -1,15 +0,0 @@
1
- class ToDeclarationCall <InstanceCall
2
-
3
- def initialize
4
- super
5
- end
6
-
7
- def write
8
- return '.to_declaration'
9
- end
10
-
11
- def copy
12
- return ToDeclarationCall.new
13
- end
14
-
15
- end
@@ -1,292 +0,0 @@
1
- # A requirement is simply a statment that evaluates to true.
2
- #
3
- # For example this == 7
4
- class Requirement < Array
5
- include PrintVariables
6
-
7
- attr_reader :parent
8
- attr_writer :parent
9
-
10
- alias :array_push :push
11
-
12
- def initialize(*parameters)
13
- #raise StandardError.new('---------------------This is redundant')
14
- super()
15
- parameters.each do |param|
16
- self.push param
17
- end
18
- end
19
-
20
- # Compares another requirement to its self and to determine
21
- # whether they are mutually exclusive.
22
- #
23
- # For example:
24
- # self > 8 ~= requirement < 7
25
- #
26
- def mutually_exclusive?(requirement)
27
- return false
28
- end
29
-
30
- def describe(context=self)
31
-
32
- line = ''
33
-
34
- # Handle describing requirement
35
- if context == self
36
- self.each do |code|
37
- line += code.write
38
- end
39
- line += "\n"
40
- return line
41
- end
42
-
43
- # Handle the description for a higher context
44
- after_equal_sign = false
45
- self.each do |code|
46
- next if code.kind_of? This
47
-
48
- if code.kind_of? Equivalent
49
- after_equal_sign = true
50
- line += "\t"
51
- end
52
-
53
- # Handle instance calls (should be shown as .class = String
54
- if code.kind_of? InstanceCallContainer
55
- if after_equal_sign
56
- line += code.write
57
- else
58
- line += '.'+code.method_call.write
59
- end
60
- else
61
- line += code.write
62
- end
63
-
64
- line += ' ' unless code == self.last
65
- end
66
- return line
67
-
68
- end
69
-
70
- # Returns true if the requirement contains any other variables
71
- # e.g. self.chop = 'test' returns false
72
- # self.length = var4 returns true
73
- #
74
- def any_variables?
75
- self.each do |code|
76
- if code.kind_of? InstanceCallContainer
77
- return true if code.subject.kind_of? Variable
78
- end
79
- return true if code.kind_of? Variable
80
- end
81
- return false
82
- end
83
-
84
- # Writes out the nature of the requirement.
85
- #
86
- # @param context The context in when the requirement is being written. This
87
- # should be something that can print variables.
88
- # @param variable The variable that represent 'self' in the requirement. Otherwise
89
- # it defaults to 'self'
90
- #
91
- def write(context=self,variable=nil)
92
-
93
- #variable = parent unless parent.nil?
94
-
95
- line = ''
96
- self.each do |x|
97
- #if x.kind_of? This or x.kind_of? InstanceCallContainer
98
- if x.kind_of? This or x.kind_of? InstanceCallContainer
99
- line += x.write+' '
100
- else
101
- line += x.write+' '
102
- end
103
- end
104
- return line
105
- end
106
-
107
- # Intended to be a more reliable clone. So will go deeper
108
- # into the object.
109
- #
110
- def copy
111
- copied_requirement = Requirement.new
112
- self.each do |code|
113
- copied_requirement.push code.copy
114
- end
115
- copied_requirement.parent = nil
116
- return copied_requirement
117
- end
118
-
119
- # Returns true if the requirement contains a 'self'. I don't think
120
- # it's possible or desirable not to so I'll probably end up dropping
121
- # this method.
122
- #
123
- def contains_self?
124
- self.each do |x|
125
- if x.kind_of? This then return true end
126
-
127
- # Check any instance calls for 'self'
128
- if x.kind_of? InstanceCallContainer
129
- return true
130
- end
131
-
132
- end
133
- return false
134
- end
135
-
136
- # Changes the "self" value for a literal value to determine
137
- # whether the literal value could be used in place. For
138
- # example:
139
- #
140
- # self.chop = 8 -> subst self for 22 [WRONG]
141
- # self.chop = 8 -> subst self for 'community' [CORRECT]
142
- #
143
- def subst_self_for literal
144
-
145
- # Make a copy of the current requirement
146
- copied_requirement = self.copy
147
- copied_requirement.each_with_index do |x,i|
148
- if x.kind_of? InstanceCallContainer
149
- x.subst_self_for literal
150
- end
151
- if x.kind_of? This
152
- copied_requirement[i] = literal
153
- end
154
- end
155
-
156
- return copied_requirement
157
-
158
- end
159
-
160
- # Pretty much the same as each except that it includes
161
- # instance calls as two elements e.g. the suject and
162
- # the method call.
163
- #
164
- def each_bit
165
- self.each do |g|
166
- if g.kind_of? InstanceCallContainer
167
- yield g.subject
168
- yield g.method_call
169
- next
170
- end
171
- yield g
172
- end
173
- end
174
-
175
- # Checks whether the structure of the requirement
176
- # matches that supplied.
177
- #
178
- # @param structure A structure is simply an array of
179
- # classes e.g. [This,Equal,Literal]
180
- #
181
- def structure_match?(structure)
182
-
183
- # Checks that they are at least the same length
184
- if self.length != structure.length then return false end
185
-
186
- structure.each_with_index do |x,i|
187
- return false unless self[i].kind_of?(x)
188
- end
189
- return true
190
- end
191
-
192
- # Evaluates the code in the requirement to determine
193
- # whether it generates a runtime error.
194
- #
195
- def evaluate
196
- evaluation_code = ''
197
- self.each do |x|
198
-
199
- # Change the equal sign to equivalent for evaluation purposes
200
- if x.kind_of? Equal
201
- evaluation_code += ' == '
202
- next
203
- end
204
- evaluation_code += x.write(self)
205
- end
206
- eval 'return '+evaluation_code
207
- end
208
-
209
- def valid?
210
- begin
211
- return evaluate
212
- rescue NoMethodError => e
213
- StandardLogger.log e
214
- return false
215
- rescue RuntimeError => e
216
- StandardLogger.log e
217
- return false
218
- end
219
- end
220
-
221
- # Evaluates the literal by replacing 'self' with the
222
- # literal value provided.
223
- #
224
- def use?(literal)
225
-
226
- new_requirement = subst_self_for literal
227
-
228
- # Change any equal(=) to equivalent(==)
229
- new_requirement_string = 'if '
230
- new_requirement.each do |code|
231
-
232
- if code.kind_of? Equal
233
- new_requirement_string += ' == '
234
- next
235
- end
236
-
237
- new_requirement_string += code.write
238
- end
239
-
240
- new_requirement_string += ' then return true end'+"\n"+'return false'
241
-
242
- # See if the evaluated requirement breaks anything
243
- begin
244
- eval new_requirement_string
245
- rescue StandardError => e
246
- StandardLogger.log e
247
- return false
248
- end
249
- return true
250
-
251
- end
252
-
253
- # Returns a string of the requirement but also includes the variable
254
- # id for any variables.
255
- #
256
- def write_with_variable_id(tab=0,context=self)
257
- line = ''
258
- tab.times {line += "\t" }
259
- self.each do |x|
260
- if x.kind_of? Variable
261
- line += x.write(self)+'('+x.variable_id.to_s+') '
262
- next
263
- end
264
- if x.kind_of? InstanceCallContainer
265
- line += x.write(self)+'('+x.subject.variable_id.to_s+')'
266
- next
267
- end
268
- line += x.write(self)
269
- end
270
- return line
271
- end
272
-
273
- # Returns a statement containing a MethodClass instance
274
- # which is basicall Requirement.new(This.new,Equal.new,Something else)
275
- #
276
- def declaration_statement
277
-
278
- # Create the class method call
279
- instance_declaraction = ClassMethodCallContainer.new(RequirementClass.new,New.new,*self.collect{|x|x.copy.declaration_statement})
280
-
281
- s = Statement.new(instance_declaraction)
282
- return s
283
-
284
- end
285
-
286
- protected
287
-
288
- def push(val)
289
- array_push(val)
290
- end
291
-
292
- end