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,72 +0,0 @@
1
- class StatementVariable < TypeVariable
2
-
3
- def initialize(val)
4
- super(val)
5
- end
6
-
7
- def copy
8
- copied = self.class.new(@value.copy) {{: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 Fixnum classes or Unknowns
14
- def variable_id=(id)
15
- # TODO This would be nicer if it wasn't so hard coded ./lib/core/variable/Unknown.rb
16
- unless caller.first.split(':')[0]==__FILE__ or caller.first.split(':')[0]=='./lib/core/statement/Statement.rb'
17
- raise StandardError.new('Illegal attempt to set variable_id')
18
- end
19
- @variable_id = id
20
- end
21
-
22
- # Returns a copy of the variable, this method exists in the
23
- # instance call class. It avoids distinguishing the two.
24
- # Since variale is lowest level context doesn't matter.
25
- #
26
- def copy_contextual_variable
27
- return copy
28
- end
29
-
30
- # Returns an array of instance calls the Statement instances can call. Some
31
- # method calls require parameters. These parameters are in the available
32
- # array.
33
- #
34
- # @param available An array of variables to be included in the creation
35
- # of the InstanceCallContainer.
36
- #
37
- def instance_calls(available=[])
38
- declared_variable_call = InstanceCallContainer.new(self.copy,DeclaredVariable.new)
39
- return [declared_variable_call]
40
- end
41
-
42
- # Returns an array of instances calls that return a value and are
43
- # therefore approriate for declaration statements.
44
- #
45
- def returning_instance_calls(available=[])
46
- return instance_calls(available)
47
- end
48
-
49
- #
50
- def destructive_instance_calls(available=[])
51
- return []
52
- end
53
-
54
- # Compares the passed argument and returns true if it is a unknown
55
- # variable which is treated as a wild card or a variable with
56
- # the same value.
57
- #
58
- # TODO I'm not sure I like UnkownVariables being treated as wild cards
59
- #
60
- def equivalent?(to)
61
- return true if to.kind_of?(Unknown)
62
- return false if to.class != self.class
63
- # TODO I don't know if this is an equivalent comparision
64
- return false unless to.value.write == @value.write
65
- return true
66
- end
67
-
68
- # def to_var
69
- # raise StandardError.new('Already a variable')
70
- # end
71
-
72
- end
@@ -1,7 +0,0 @@
1
- class StepVariable < TypeVariable
2
-
3
- def initialize(val,id=nil)
4
- super(val,id)
5
- end
6
-
7
- end
@@ -1,46 +0,0 @@
1
- class StringVariable < TypeVariable
2
-
3
- def initialize(val,id=nil)
4
- super(val,id)
5
- end
6
-
7
- # Returns an array of instance calls for the particular type
8
- # variable. For example:
9
- #
10
- # StringVariable.new('test').instance_calls
11
- #
12
- # might return [var.chop,var.length]
13
- #
14
- def instance_calls(available=[])
15
-
16
- # Add the chop instance call
17
- chop_call = InstanceCallContainer.new(self.copy,Chop.new)
18
- length_call = InstanceCallContainer.new(self.copy,StringLength.new)
19
- return [chop_call,length_call]
20
-
21
- end
22
-
23
- def to_declaration
24
- return VariableDeclaration.new(self.class.to_s,@value.to_declaration)
25
- end
26
-
27
- def to_literal_string
28
- return @value.to_literal_string
29
- end
30
-
31
- # TODO I wan't to get rid of this call entirly
32
- def copy_contextual_variable
33
- return copy
34
- end
35
-
36
- # Returns an array of desctructive instance calls given the available
37
- # variables.
38
- #
39
- # @param available An array of other variables that can be used as
40
- # parameters.
41
- #
42
- def destructive_instance_calls(available=[])
43
- return []
44
- end
45
-
46
- end
@@ -1,72 +0,0 @@
1
- # This variable doesn't represent a specific data type it is merely the parent
2
- # of all the other typed variables e.g. FixnumVariable, StringVariable etc.
3
- #
4
- class TypeVariable < BaseVariable
5
- attr_reader :value
6
-
7
- def initialize(val,id=nil)
8
- @value = val
9
- super(id)
10
- end
11
-
12
- def copy
13
- copied = self.class.new(@value.copy) {{:variable_id => self.variable_id,:uniq_id=>@uniq_id, :uniq_id_history=>@uniq_id_history.copy}}
14
- copied.instance_variable = @instance_variable
15
- return copied
16
- end
17
-
18
- # Only let this method be called from fellow Fixnum classes or Unknowns
19
- # NOTE I have allowed variable ids to be set to allow runtime methods to change
20
- # the id of passed variables.
21
- def variable_id=(id)
22
- # TODO This would be nicer if it wasn't so hard coded ./lib/core/variable/Unknown.rb
23
- # unless caller.first.split(':')[0]==__FILE__ or caller.first.split(':')[0]=='./lib/core/variable/Unknown.rb'
24
- # raise StandardError.new('Illegal attempt to set variable_id')
25
- # end
26
- @variable_id = id
27
- end
28
-
29
- def literalisable?
30
- return true
31
- end
32
-
33
- def literalise
34
- return Literal.new(@value.copy)
35
- end
36
-
37
- def realised?
38
- return true unless @value.nil?
39
- return false
40
- end
41
-
42
- def to_literal_string
43
- return @value.to_literal_string
44
- end
45
-
46
- def describe(tab=0)
47
- l = ''
48
- tab.times {|x| l += "/t" }
49
- l += '['+self.class.to_s+'] '+@value.write
50
- l += "\n"
51
- return l
52
- end
53
-
54
-
55
- def cauldron_method_calls
56
- return ['.value']
57
- end
58
-
59
- # Compares the passed argument and returns true if it is a unknown
60
- # variable which is treated as a wild card or a variable with
61
- # the same value.
62
- #
63
- # TODO I'm not sure I like UnkownVariables being treated as wild cards
64
- #
65
- def equivalent?(to)
66
- return true if to.kind_of?(Unknown)
67
- return false if to.class != self.class
68
- return false unless to.value == @value
69
- return true
70
- end
71
-
72
- end
@@ -1,102 +0,0 @@
1
-
2
- # TODO This is not strickly a Variable - it is a data type of it's own
3
-
4
- class Unknown < BaseVariable
5
- alias :variable_push :push
6
-
7
- # TODO I think requirements here can be dropped
8
- def initialize(*requirements)
9
- super(*requirements)
10
- end
11
-
12
- # Returns a typed version of the variable with the correct
13
- # variable id. This occurs when an Unknown variable is
14
- # used in a statement and its value can be determined.
15
- #
16
- def classify(value)
17
- case value.class.to_s
18
- when 'String'
19
- var = StringVariable.new(value)
20
- var.variable_id = variable_id
21
- return var
22
- when 'Fixnum'
23
- var = FixnumVariable.new(value)
24
- var.variable_id = variable_id
25
- return var
26
- else
27
- raise StandardError.new('Unknown data type '+value.class.to_s)
28
- end
29
- end
30
-
31
- # TODO Should 'Unknown' have a variable id
32
- def copy
33
- result = self.class.new(*self) {{:variable_id => variable_id,:uniq_id=>@uniq_id,:uniq_id_history=>@uniq_id_history.copy}}
34
- result.instance_variable = @instance_variable
35
- return result
36
- end
37
-
38
- #
39
- def describe(tab=0,context=self)
40
-
41
- # Create a temporay copy of the variable
42
- copied_var = self.copy
43
-
44
- unless context == self
45
-
46
- # Return a duplicate variable with the requirements in the context indicated
47
- copied_var = context.contextual_variable(copied_var.variable_id)
48
-
49
- end
50
-
51
- # Print the name of the variable
52
- line = ''
53
- line += write
54
-
55
- # Print out each of the requirements
56
- copied_var.each do |x|
57
- desc = x.describe(context)
58
- desc.each_line do |l|
59
- line += "\t"+l
60
- end
61
- line += "\n" unless x == copied_var.last
62
- end
63
- line += "\n"
64
-
65
- return line
66
-
67
- end
68
-
69
- # Returns a copy of the variable, this method exists in the
70
- # instance call class. It avoids distinguishing the two.
71
- # Since variale is lowest level context doesn't matter.
72
- #
73
- def copy_contextual_variable
74
- return copy
75
- end
76
-
77
- def to_literal_string
78
- return 'var'
79
- end
80
-
81
- def realised?
82
- return false
83
- end
84
-
85
- def to_declaration
86
- return VariableDeclaration.new('Unknown')
87
- end
88
-
89
- def to_var(id=nil,uniq_id=nil)
90
- StandardLogger.instance.warning('"Unknown" is NOT a variable - it is a data type')
91
- return UnknownVariable.new(self) {{:variable_id => id,:uniq_id=>uniq_id}}
92
- end
93
-
94
- # Unknown variables are evaluated are runtime so as along as it is
95
- # a variable it is probably fine.
96
- #
97
- def equivalent?(to)
98
- return true if to.kind_of?(BaseVariable)
99
- return false
100
- end
101
-
102
- end
@@ -1,29 +0,0 @@
1
- # NOTE FROM VARIABLE REFERENCE
2
- # I'm not sure if this is the way to go, but I need some way
3
- # to handle the case where variables reference variables.
4
- #
5
- # For example:
6
- #
7
- # #
8
- # #
9
- # def method_8
10
- # var_12 = Statement.new(Unknown.new,Equal.new,8.to_declaration)
11
- # var_570 = var_12.declared_variable
12
- # end
13
- #
14
- # In this case it is difficult to realise var_570 since it references an
15
- # unrealised variable. I should maybe have created an Unknown class, but
16
- # it is still an Unknown.
17
- #
18
- class UnknownVariable < TypeVariable
19
-
20
- def initialize(val,id=nil)
21
- super(val,id)
22
- end
23
-
24
- #
25
- def destructive_instance_calls(available=[])
26
- return []
27
- end
28
-
29
- end
@@ -1,70 +0,0 @@
1
- # This class represents any variable object used to help generate
2
- # a method.
3
- #
4
-
5
- module Variable
6
-
7
- include VariableIncluded
8
-
9
- @@variable_id = 0
10
-
11
- # The unique id is used to identify actually different variables. This essentially occurs
12
- # when a destructive method call is used. For example an two array variables might have the
13
- # same variable_id say '2' so would both be written as 'var_2' but one of them might have had
14
- # another element pushed into it e.g. 'var_2.push(6)'. The changed variable would then
15
- # receive a different uniq_id.
16
- @@uniq_id = 0
17
-
18
- #CONST_TEST = 'test'
19
- # 331 Constants are in capitals and accesses Variable::CONST_TEST class variables use @@
20
-
21
- # Create the declaration for a unique variable id. The unique_variable_id reflects the different
22
- # values a variable might have. For example if a variable is overwritten it will have the same
23
- # name as it's predisessor but not the same value.
24
- attr_reader :uniq_id, :scope_id
25
- attr_writer :scope_id
26
-
27
- def self.reset_global_id
28
- #http://www.zenspider.com/Languages/Ruby/QuickRef.html
29
- unless $".include?('test/unit.rb')
30
- StandardLogger.instance.log 'WARNING: Resetting variable id, this should only be done for tests'
31
- end
32
- @@variable_id = 0
33
- @@uniq_id = 0
34
- end
35
-
36
- def self.variable_id
37
- return @@variable_id
38
- end
39
-
40
- # TODO This is not a permenant method it is a temporary fix
41
- # as I migrate away from requirements.
42
- #
43
- def meets_requirements? of
44
- return true if of.literalise.value == self.value
45
- return false
46
- end
47
-
48
- # Change the value of the variables uniq_id
49
- #
50
- # @param The new value for the variables uniq_id
51
- #
52
- def uniq_id=(value)
53
- @uniq_id = value
54
- raise StandardError.new('Should be fixnum') unless value.kind_of?(Fixnum)
55
- end
56
-
57
- # Updates the uniq_id for this variable so it can be regarded
58
- # differently. Uniq_ids are used in the CodeHandler to allow
59
- # the inclusion of the correct statements to recreate a variable.
60
- #
61
- def increament_uniq_id!
62
- @uniq_id = @@uniq_id
63
- @@uniq_id += 1
64
- end
65
-
66
- def to_var(id=nil)
67
- raise StandardError.new(self.class.to_s+' is already a Variable - should not call to_var')
68
- end
69
-
70
- end
@@ -1,28 +0,0 @@
1
- class VariableContainer < BaseVariable
2
-
3
- attr_writer :realised
4
-
5
- def initialize
6
- super()
7
-
8
- @realised = false
9
- end
10
-
11
- # Returns a duplicate of this variable container.
12
- #
13
- def copy
14
- result = VariableContainer.new(){{:variable_id => self.variable_id,:uniq_id=>@uniq_id, :uniq_id_history=>@uniq_id_history.copy}}
15
- result.instance_variable = @instance_variable
16
- self.each do |x|
17
- result.push(x)
18
- end
19
- result.realised = @realised
20
- return result
21
- end
22
-
23
- # TODO Write description - hack for instance calls
24
- def variable
25
- return self
26
- end
27
-
28
- end
@@ -1,27 +0,0 @@
1
- # Classes that include this module are presumeed to include a variable,
2
- # this is is used in the following classes.
3
- #
4
- # Variable
5
- # InstanceCallContainer
6
- # ArrayAccess
7
- #
8
- module VariableIncluded
9
-
10
- # Should have the following methods
11
- # variable
12
-
13
- # Returns the variable. This call also exists in the InstanceCallContainer class. It is
14
- # included to allow access of the variable with the need to disgiush whether it
15
- # is variable or an instance call.
16
- #
17
- def variable
18
- return self
19
- end
20
-
21
- # Returns the actual variable with the specified id.
22
- #
23
- def find_actual_variable(id)
24
- raise StandardError.new('Method needs defined in class')
25
- end
26
-
27
- end