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,92 +0,0 @@
1
- # This is an odd sort of variable because it's actual value
2
- # continually changes when used. It needs to have a variable
3
- # id to prevent a duplicate variable being created.
4
- #
5
- class BlockVariable < BaseVariable
6
-
7
- attr_writer :realised
8
-
9
- def initialize
10
- super()
11
-
12
- @realised = false
13
- end
14
-
15
- # Returns a duplicate of the block variable.
16
- #
17
- def copy
18
- # @uniq_id should probably be cloned or something
19
- result = self.class.new() {{:variable_id => self.variable_id,:uniq_id=>@uniq_id, :uniq_id_history=>@uniq_id_history.copy}}
20
- result.instance_variable = @instance_variable
21
- self.each do |x|
22
- result.push(x)
23
- end
24
- result.realised = @realised
25
- return result
26
- end
27
-
28
- # Returns a string representing the block variable but with all the
29
- # values of the block variable as well
30
- def write_with_value
31
- #return self.write+'('+self.inject {|line,x| line += x.value.write+} +')'
32
- l = self.write+'('
33
- self.each do |x|
34
- l += x.value.write
35
- l += '|' unless x.object_id == self.last.object_id
36
- end
37
- l += ')'
38
- return l
39
- end
40
-
41
- # Returns the flag indicating whether the blockvariable had been
42
- # realised yet. I can't just use whether all the contained variables
43
- # are realised as an indication because the block variable may be
44
- # empty. This would indicate either the block itself has no
45
- # itterations or it hadn't been realised yet.
46
- #
47
- def realised?
48
- return @realised
49
- end
50
-
51
- # Returns a duplicate block variable where all values for the block
52
- # variable are included.
53
- #
54
- def realise(method_map)
55
- x = method_map.find_realised_variable(self.variable_id,self.uniq_id,self.class.to_s)
56
- # Flag the block variable as realised - this needs to be done maually oterwise empty
57
- # blocks would flaged as realsied.
58
- x.realised = true
59
-
60
- return x
61
- end
62
-
63
- # Returns true if the block variable can be used as the specified variable
64
- # type otherwise it returns false. It can be used as the specified variable
65
- # type if all the variables it contains are of that type.
66
- #
67
- # @param variable_type The variable type that the block variable is expected
68
- # to act like e.g. FixnumVariable.
69
- #
70
- def pass_as?(variable_type)
71
- return self.all? {|x| x.pass_as?(variable_type)}
72
- end
73
-
74
- # This simple returns the block variable. It is a quick hack so that
75
- # InstanceCallContainers and variables can be treated in the same way although
76
- # it is a bit clunck and confusing.
77
- #
78
- def variable
79
- return self
80
- end
81
-
82
- # This writes block variable as a literal. Now for normal variables this is
83
- # fine as var_a might become '8' etc. However block variables have multiple
84
- # values. I'm not sure why this is need so for now it will just display
85
- # the first block variable.
86
- #
87
- def to_literal_string
88
- if empty? then return '' end
89
- return self.first.to_literal_string
90
- end
91
-
92
- end
@@ -1,35 +0,0 @@
1
- class FixnumVariable < TypeVariable
2
-
3
- def initialize(val,id=nil)
4
- super(val,id)
5
- end
6
-
7
- def to_declaration
8
- return VariableDeclaration.new('FixnumVariable',@value.to_declaration)
9
- end
10
-
11
- # # TODO I wan't to get rid of this call entirly
12
- # def copy_contextual_variable
13
- # return copy
14
- # end
15
-
16
- # Returns true if the variable type is Fixnum, this is used
17
- # to determine whether a BlockVariable or VariableContainer
18
- # can be used as a particular variable type.
19
- #
20
- def pass_as?(variable_type)
21
- return true if variable_type==FixnumVariable
22
- return false
23
- end
24
-
25
- # Returns an array of desctructive instance calls given the available
26
- # variables.
27
- #
28
- # @param available An array of other variables that can be used as
29
- # parameters.
30
- #
31
- def destructive_instance_calls(available=[])
32
- return []
33
- end
34
-
35
- end
@@ -1,8 +0,0 @@
1
- class HistoryVariable < BaseVariable
2
-
3
- def initialize(val)
4
- @value = val
5
- super()
6
- end
7
-
8
- end
@@ -1,179 +0,0 @@
1
- class MethodParameter < BaseVariable
2
- attr_reader :usage_variable
3
- attr_writer :variable_id
4
-
5
- def initialize(id=nil)
6
- super(id)
7
- end
8
-
9
- # Returns true if this variables meets the requirements of the
10
- # supplied variable. If the this meets the requirements of the
11
- # supplied variable then this variable could replace the
12
- # supplied variable in a statement.
13
- #
14
- # TODO Write tests for this
15
- #
16
- # @param of
17
- #
18
- # TODO Have an act_as call that doesn't return true/false but raises errors so I can identify
19
- # why something can't be something else.
20
- #
21
- def meets_requirements? of
22
-
23
- # Handle the possible datatypes of "of"
24
- begin
25
- if of.kind_of?(Variable)
26
- return meets_requirements_of_variable(of)
27
- elsif of.kind_of?(InstanceCallContainer)
28
- return meets_requirements_of_instance_call(of)
29
- else
30
- raise StandardError.new('Not expecting class of type '+of.class.to_s)
31
- end
32
- rescue FailedVariableMatch
33
- return false
34
- end
35
- end
36
-
37
- # Raises an error to avoid me accidently trying to give this class the
38
- # method.
39
- #
40
- def to_literal_string
41
- # TODO I should turn this on further down the line - it realtes to tracking
42
- #raise StandardError.new('Method Variables can\'t be converted to a literal string because they don\'t have a value')
43
- return self.write
44
- end
45
-
46
- #
47
- def describe(tab=0,context=self)
48
-
49
- # Create a temporay copy of the variable
50
- copied_var = self.copy
51
-
52
- unless context == self
53
-
54
- # Return a duplicate variable with the requirements in the context indicated
55
- copied_var = context.contextual_variable(copied_var.variable_id)
56
-
57
- end
58
-
59
- # Print the name of the variable
60
- line = ''
61
- line += write
62
-
63
- # Print out each of the requirements
64
- copied_var.each do |x|
65
- desc = x.describe(context)
66
- desc.each_line do |l|
67
- line += " "+l
68
- end
69
- line += "\n" unless x == copied_var.last
70
- end
71
- line += "\n"
72
-
73
- return line
74
-
75
- end
76
-
77
- def copy
78
- return Marshal.load(Marshal.dump(self))
79
- end
80
-
81
- # Returns a reference to the usage variable that is represented
82
- # by this variable. Remember this MethodParameter represents
83
- # a particular rule so its id doesn't reflect all cases.
84
- #
85
- def usage_variable
86
- return @usage_variable
87
- end
88
-
89
- # Set the usage variable that this method variable should be used
90
- # as. This is set when a method variable is added to a method.
91
- #
92
- def usage_variable= usage
93
- @usage_variable = usage
94
- end
95
-
96
- # Attempts to return a literal that meets
97
- # all the requirements.
98
- #
99
- def literalise
100
-
101
- # Does the variable have any "equal to literal" requirements
102
- self.each do |req|
103
- if req.structure_match?([This,Equal,Literal])
104
- return req[2].copy
105
- end
106
- end
107
-
108
- raise StandardError.new('The literalise call is very basic right now and needs improved')
109
- end
110
-
111
- # Returns a statement showing the variable being declaraced
112
- #
113
- # MethodParameter.new(Requirement.new())
114
- #
115
- def declaration_statement
116
- # TODO Check that .copy method call works across all the uses of "declaration_statement"
117
- return Statement.new(ClassMethodCallContainer.new(MethodParameterClass.new,New.new,*self.collect {|x| x.copy.declaration_statement}))
118
- end
119
-
120
- def to_declaration
121
- return VariableDeclaration.new('MethodParameter',*self.collect {|x| x.to_declaration})
122
- end
123
-
124
- private
125
-
126
- # TODO Write tests for this
127
- def meets_requirements_of_variable(this)
128
-
129
- # Check if var has any requirements - if it doesn't have any then anything can be it
130
- return 'is' if this.empty?
131
-
132
- begin
133
-
134
- # Can this be literised? (it makes it easy to check requirements)
135
- if self.literalisable?
136
-
137
- # then change it into a literal value
138
- literal = self.literalise
139
-
140
- # Good stuff - next lets see if we can confirm the requirements of 'var'
141
- begin
142
-
143
- # Goes through all of var requirements and substitutes self for the literal
144
- this_could_be_that(literal,this)
145
- return true
146
- rescue IncompatiableRequirementsError => e
147
- StandardLogger.instance.info e
148
- return false
149
- end
150
-
151
- else # If self can't be literalised
152
-
153
- # Go through each of the supplied variables requirements
154
- all_requirements_matched = true
155
- this.each do |req|
156
- requirement_matched = false
157
- self.each do |own_req|
158
- if own_req.write == req.write
159
- requirement_matched = true
160
- break
161
- end
162
- end
163
- all_requirements_matched = false unless requirement_matched
164
- end
165
-
166
- return true if all_requirements_matched
167
- return false
168
-
169
- end
170
-
171
- rescue StandardError => e
172
- StandardLogger.log e
173
- return false
174
- end
175
- return false
176
-
177
- end
178
-
179
- end
@@ -1,60 +0,0 @@
1
- class MethodUsageVariable < BaseVariable
2
-
3
- def initialize(*parameters)
4
- super()
5
- raise StandardError.new('Only submit the paramaters on the usage variable') if parameters.first.kind_of?(MethodUsage)
6
- # Go through each paramater in the method usage instance
7
- parameters.each do |x|
8
- self.push x.copy
9
- end
10
-
11
- end
12
-
13
- def to_declaration
14
- return VariableDeclaration.new('MethodUsageVariable',*self.collect {|x| x.to_declaration})
15
- end
16
-
17
- def copy
18
- result = MethodUsageVariable.new(*self.collect {|x| x.copy}) {{:variable_id => self.variable_id,:uniq_id=>@uniq_id, :uniq_id_history=>@uniq_id_history.copy}}
19
- return result
20
- end
21
-
22
- # # Only let this method be called from fellow Fixnum classes or Unknowns
23
- # def variable_id=(id)
24
- # # TODO This would be nicer if it wasn't so hard coded ./lib/core/variable/Unknown.rb
25
- # unless caller.first.split(':')[0]==__FILE__ or caller.first.split(':')[0]=='./lib/core/variable/Unknown.rb'
26
- # raise StandardError.new('Illegal attempt to set variable_id')
27
- # end
28
- # @variable_id = id
29
- # end
30
-
31
- # TODO Test this
32
- def to_literal_string
33
- l = 'MethodUsage.new('
34
- self.each do |x|
35
- l += x.to_literal_string
36
- unless x.object_id == self.last.object_id
37
- l += ','
38
- end
39
- end
40
- l += ')'
41
- return l
42
- end
43
-
44
- # TODO Write tests
45
- # Compares the passed argument and returns true if they are
46
- # the same class and contains the same values.
47
- #
48
- def equivalent?(to)
49
- return false if to.class != self.class
50
- to.zip(self) do |x,y|
51
- return false unless x.equivalent?(y)
52
- end
53
- return true
54
- end
55
-
56
- def destructive_instance_calls(with=[])
57
- return []
58
- end
59
-
60
- end
@@ -1,29 +0,0 @@
1
- class NilVariable < TypeVariable
2
-
3
- def initialize(id=nil)
4
- super(nil)
5
- end
6
-
7
- def copy
8
- copied = NilVariable.new {{:variable_id => self.variable_id,:uniq_id=>@uniq_id, :uniq_id_history=>@uniq_id_history.copy}}
9
- #copied.variable_id = self.variable_id
10
- return copied
11
- end
12
-
13
- # Only let this method be called from fellow NilVariable classes
14
- def variable_id=(id)
15
- unless caller.first.split(':')[0]==__FILE__
16
- raise StandardError.new('Illegal attempt to set variable_id')
17
- end
18
- @variable_id = id
19
- end
20
-
21
- def realised?
22
- return true
23
- end
24
-
25
- def to_declaration
26
- return VariableDeclaration.new(self.class.to_s,nil.to_declaration)
27
- end
28
-
29
- end
@@ -1,67 +0,0 @@
1
- class RuntimeMethodParameter < TypeVariable
2
-
3
- def initialize(val)
4
- super(val)
5
- end
6
-
7
- # def copy
8
- # copied = self.class.new(@value)
9
- # copied.variable_id = self.variable_id
10
- # return copied
11
- # end
12
- #
13
- # Only let this method be called from fellow Fixnum classes or Unknowns
14
- def variable_id=(id)
15
- # TODO I need a better way to restrict access to this
16
- # TODO This would be nicer if it wasn't so hard coded ./lib/core/variable/Unknown.rb
17
- #unless caller.first.split(':')[0]==__FILE__ or caller.first.split(':')[0]=='./lib/core/variable/Unknown.rb'
18
- # raise StandardError.new('Illegal attempt to set variable_id')
19
- #end
20
- @variable_id = id
21
- end
22
-
23
- # Returns an array of instance calls that are possible given the
24
- # provided variables.
25
- #
26
- # @param available
27
- #
28
- def instance_calls(available=[],used_in_declaration_statement=false)
29
- results = []
30
-
31
- # Create runtime_method.push(runtime_value)
32
- ## Find all the statement variables
33
- available.find_all {|x| x.kind_of?(StatementVariable)}.each do |y|
34
- #results.push(InstanceCallContainer.new(self.copy,PushStatement.new,y.copy))
35
- # TODO What is PushStatement for
36
- results.push(InstanceCallContainer.new(self.copy,Push.new,y.copy))
37
- end
38
- return results
39
- end
40
-
41
- # Returns an array of instances calls that return a value and are
42
- # therefore approriate for declaration statements.
43
- #
44
- # NOTE Although .push does return a value I have excluded it because
45
- # I want to limit the number of variables declared.
46
- #
47
- def returning_instance_calls(available)
48
- return []
49
- end
50
-
51
- # Returns an array of desctructive instance calls given the available
52
- # variables.
53
- #
54
- # @param available An array of other variables that can be used as
55
- # parameters.
56
- #
57
- def destructive_instance_calls(available=[])
58
- return instance_calls(available)
59
- end
60
-
61
- # # Returns a declaration variable for this runtime method variable.
62
- # #
63
- # def to_declaration
64
- # return VariableDeclaration.new(RuntimeMethodParameter)
65
- # end
66
-
67
- end