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,44 +0,0 @@
1
-
2
- # Used to make calls to a dynamically written class.
3
- #
4
- class ClassEvaluation
5
- @@count = 0
6
-
7
- def evaluate_class(runtime_class,runtime_call)
8
- return evaluate_class_2(runtime_class,runtime_call)
9
- end
10
-
11
- def evaluate_class_2(runtime_class,runtime_call,*params)
12
-
13
- # Create file to include the test method
14
- file = Tempfile.new(runtime_class.class_name+'.rb')
15
- @@count += 1
16
-
17
- # Include the sytax for the statement in the file
18
- file << runtime_class.write
19
- file.close
20
-
21
- # Load the newly created class and check the statement
22
- load file.path
23
- begin
24
- # TODO Make this more generic
25
- case params.length
26
- when 0
27
- return eval("#{runtime_class.class_name}.new.#{runtime_call}")
28
- when 1
29
- return eval("#{runtime_class.class_name}.new.#{runtime_call}(params[0])")
30
- else
31
- raise StandardError.new('Can only handle one parameter right now')
32
- end
33
- rescue NameError => e
34
- StandardLogger.instance.info(runtime_class.write)
35
- raise e
36
- ensure
37
- file.close
38
- file.unlink
39
- end
40
-
41
- end
42
-
43
-
44
- end
@@ -1,39 +0,0 @@
1
- class CodeEvaluation
2
-
3
- # TODO I should cap the number of CodeEvaluation classes that can be created
4
- @@COUNT = 0
5
-
6
- # Generates a class and dumps the passed in code into the
7
- # a runtime method within the class and then runs it.
8
- #
9
- # @param code Ruby code as a string
10
- #
11
- def evaluate_code(code)
12
- @@COUNT += 1
13
-
14
- begin
15
-
16
- # Create file to include the test method
17
- file = Tempfile.new("runtime_code_evaluation_#{@@COUNT}.rb")
18
-
19
- # Include the sytax for the statement in the file
20
- file << "class RuntimeCodeEvaluation#{@@COUNT}"+"\n"
21
- file << "\t"+'def check'+"\n"
22
- code.each_line do |l|
23
- file << "\t\t"+l+"\n"
24
- end
25
- file << "\t"+'end'+"\n"
26
- file << 'end'
27
- file.close
28
-
29
- # Load the newly created class and check the statement
30
- load file.path
31
-
32
- return eval("RuntimeCodeEvaluation#{@@COUNT}.new.check")
33
- ensure
34
- file.close
35
- file.unlink
36
- end
37
- end
38
-
39
- end
@@ -1,32 +0,0 @@
1
- class DeclarationStatementEvaluation
2
-
3
- # NOTE It might improve performance if this was a singleton
4
- def evaluate(written_statement,runtime_methods=[])
5
-
6
- # Create file to include the test method
7
- file = Tempfile.new("runtime_declaration_statement_evaluation.rb")
8
-
9
- # Include the sytax for the statement in the file
10
- file << 'class RuntimeDeclarationStatementEvaluation'+"\n"
11
- file << "\t"+'def check'+"\n"
12
- file << written_statement
13
- file << "\t"+'end'+"\n"
14
-
15
- # Add and associated runtime methods
16
- runtime_methods.each do |x|
17
- file << x.write
18
- end
19
-
20
- file << 'end'
21
- file.close
22
-
23
- # Load the newly created class and check the statement
24
- load filepath
25
- return RuntimeDeclarationStatementEvaluation.new.check
26
-
27
- ensure
28
- file.close
29
- file.unlink
30
- end
31
-
32
- end
@@ -1,49 +0,0 @@
1
- # This class is used to evaluate runtime variables.
2
-
3
- class MethodEvaluation
4
- @@COUNTER = 0
5
-
6
- def evaluate_method(runtime_method,params,additional_methods=[])
7
-
8
- # Create file to include the runtime method
9
- file = Tempfile.new("runtime_method_evaluation.rb")
10
-
11
- # A new class name is created otherwise previously declared method names are peristent.
12
- # e.g. if a "RuntimeMethodEvaluation" was created with the method_a it would still
13
- # be available even if the class was overridden.
14
- class_name = 'RuntimeMethodEvaluation'+@@COUNTER.to_s
15
- @@COUNTER += 1
16
- # TODO I shouldn't just be incrementing the counter number - these are separate classes
17
- file_content = ''
18
-
19
- # Include the sytax for the statement in the file
20
- file_content << 'class '+class_name+"\n"
21
- file_content << runtime_method.write(
22
- ParametersContainer.new,1,
23
- "This is the method that is being evaluated using '#{class_name}.new.#{runtime_method.method_name}"
24
- )
25
-
26
- # And any additional methods and close the file
27
- additional_methods.each do |x|
28
- file_content << x.write(ParametersContainer.new,1)
29
- end
30
- file_content << "\n"+'end'
31
- file << file_content
32
- file.close
33
-
34
- evaluated_parameters = []
35
- params.each do |x|
36
- evaluated_parameters.push(x.value)
37
- end
38
-
39
- # Load the generated class
40
- load file.path
41
-
42
- # Use the evaluated paramaters with the evaluated runtime method
43
- return eval("#{class_name}.new."+runtime_method.method_name+"(*evaluated_parameters)")
44
- ensure
45
- file.close
46
- file.unlink
47
- end
48
-
49
- end
@@ -1,71 +0,0 @@
1
- module MethodTester
2
-
3
- # Returns a runtime method instance that will call the supplied
4
- # runtime method and then test the result against the test
5
- # runtime method.
6
- #
7
- # @param solution_method This is the method that should generate a runtime
8
- # method instance that can be used and produce results
9
- # that satisfy the requirements.
10
- # @param return_value_evaluation_method This method is used to evaluate the result return
11
- # from using the solution method.
12
- #
13
- def access_method(solution_method,return_value_evaluation_method)
14
-
15
- # Construct the method to test the generated runtime method
16
- testing_method = RuntimeMethod.new(MethodUsage.new)
17
- generated_instance = Unknown.new
18
-
19
- # Create the call that captures what is returned by the test method
20
- testing_method << Statement.new(generated_instance,Equal.new,DefCall.new(nil,solution_method))
21
-
22
- # Return the result of the "is_runtime_method_test"
23
- testing_method << Statement.new(Return.new,DefCall.new(nil,return_value_evaluation_method,generated_instance))
24
-
25
- return testing_method
26
-
27
- end
28
-
29
- # Returns the results of calling the runtime method with the parameters
30
- # provided.
31
- #
32
- # @param runtime_method A runtime method instance with on or more parameters
33
- #
34
- def use_runtime_method(runtime_method,params=ParametersContainer.new)
35
- # MethodEvaluation.new.evaluate_method(
36
- # requirement_testing_method,
37
- # ParametersContainer.new,
38
- # [reqs,copied_method]+@runtime_methods
39
- # )
40
- access_method = RuntimeMethod.new(MethodUsage.new)
41
- access_method.push(Statement.new(Return.new,DefCall.new(nil,runtime_method,*params)))
42
- return MethodEvaluation.new.evaluate_method(
43
- access_method,
44
- ParametersContainer.new,
45
- [runtime_method]
46
- )
47
- end
48
-
49
- # Generates a class that contains the passed through method and then
50
- # calls the passed method using the params provided.
51
- #
52
- # So if the supplied runtime_method would when written looked like
53
- #
54
- # def method_7
55
- # return true
56
- # end
57
- #
58
- # It would then be put into the class and "method_7" would be called using
59
- # the passed parameters.
60
- #
61
- # @param runtime_method A runtime method instance with zero of more parameters
62
- #
63
- #
64
- def use_runtime_method_2(runtime_method,*params)
65
- runtime_class = RuntimeClass.new('RuntimeMethodTester',runtime_method)
66
- ClassEvaluation.new.evaluate_class_2(runtime_class,runtime_method.method_name,*params)
67
- # return ClassEvaluation.new.evaluate_class(runtime_method,runtime_method.method_name)
68
-
69
- end
70
-
71
- end
@@ -1,149 +0,0 @@
1
- # The method generator is passed a number of runtime method instances that it uses
2
- # to test the runtime methods it generates. Those that pass the tests are approved
3
- # those that don't are rejected.
4
- #
5
- # Creating these runtime method instance is a bit verbose so I've created this
6
- # class to generate them based on the condition passed through.
7
- #
8
- class MethodValidation
9
- include MethodTester
10
-
11
- # Returns a runtime method instance that expects to be passed
12
- # a runtime method instance and evaluate an attribute of the
13
- # instance.
14
- #
15
- # For example it might be passed the condition=> ".kind_of?(RuntimeMethod)"
16
- # and would generate a runtime method instance that would be written like
17
- # the following.
18
- #
19
- # def method_0(var)
20
- # return true if var.kind_of?(RuntimeMethod)
21
- # return false
22
- # end
23
- #
24
- def self.generate_attribute_test(condition)
25
- method_var = MethodParameter.new
26
- test_method = RuntimeMethod.new(MethodUsage.new(method_var))
27
- test_method.push(HackStatement.new(
28
- 'return true if '+method_var.write+condition
29
- ))
30
- test_method.push(Statement.new(Return.new,False.new))
31
- return test_method
32
- end
33
-
34
- # Returns a runtime method instance that expects a runtime
35
- # method instance as a parameter. It will then use the passed
36
- # in runtime method instance as runtime code and evaluate the
37
- # response from the using the method.
38
- #
39
- # So if it was passed the condition=>' == "Dad"' and the params
40
- # => ['Dad'] it would generate a runtime method instance that
41
- # would write() like the following.
42
- #
43
- # def method_8(var_0)
44
- # var_1 = RuntimeMethod.new(MethodUsage.new)
45
- # var_1.push(Statement.new(Return.new,DefCall.new(nil,var_0,*<params>)))
46
- # var_2 = RuntimeClass.new('TempClassName',var_0,var_1)
47
- # return true if ClassEvaluation.new.evaluate_class(var_2,var_1.method_name) <condition>
48
- # return false
49
- # end
50
- #
51
- def self.generate_response_test(condition,params)
52
- method_var = MethodParameter.new
53
- test_method = RuntimeMethod.new(MethodUsage.new(method_var))
54
-
55
- # Create the enterance runtime method
56
- # 1. var_1 = RuntimeMethod.new(MethodUsage.new)
57
- var_1 = Unknown.new
58
- test_method.push(
59
- Statement.new(
60
- var_1,
61
- Equal.new,
62
- ClassMethodCallContainer.new(
63
- RuntimeMethodClass.new,
64
- New.new,
65
- ClassMethodCallContainer.new(MethodUsageClass.new,New.new)
66
- )
67
- )
68
- )
69
- # 2. var_1.push(Statement.new(Return.new,DefCall.new(nil,var_0,*<params>)))
70
- test_method.push(
71
- Statement.new(
72
- InstanceCallContainer.new(
73
- var_1,
74
- Push.new,
75
- ClassMethodCallContainer.new(
76
- StatementClass.new,
77
- New.new,
78
- ClassMethodCallContainer.new(
79
- ReturnClass.new,
80
- New.new
81
- ),
82
- ClassMethodCallContainer.new(
83
- DefCallClass.new,
84
- New.new,
85
- Nil.new,
86
- method_var,
87
- *params
88
- )
89
- )
90
- )
91
- )
92
- )
93
- # 3. var_2 = RuntimeClass.new('TempClassName',var_0,var_1)
94
- var_2 = Unknown.new
95
- test_method.push(
96
- Statement.new(
97
- var_2,
98
- Equal.new,
99
- ClassMethodCallContainer.new(
100
- RuntimeClassClass.new,
101
- New.new,
102
- 'TempClassName'.to_literal,
103
- method_var,
104
- var_1
105
- )
106
- )
107
- )
108
- # 4. var_3 = ClassEvaluation.new
109
- var_3 = Unknown.new
110
- test_method.push(
111
- Statement.new(
112
- var_3,
113
- Equal.new,
114
- ClassMethodCallContainer.new(
115
- ClassEvaluationClass.new,
116
- New.new
117
- )
118
- )
119
- )
120
- # 5. return true if var_3.evaluate_class(var_2,var_1.method_name)<condition>
121
- s = Statement.new(
122
- If.new,
123
- Container.new(
124
- InstanceCallContainer.new(
125
- var_3,
126
- EvaluateClassCall.new,
127
- var_2,
128
- InstanceCallContainer.new(var_1,MethodNameCall.new)
129
- ),
130
- Raw.new(condition)
131
- )
132
- )
133
- os = OpenStatement.new(s)
134
- os << Statement.new(Return.new,True.new)
135
- test_method.push(os)
136
-
137
- #test_method.push(s)
138
-
139
- # 6. return false
140
- test_method.push(
141
- Statement.new(
142
- Return.new,
143
- False.new
144
- )
145
- )
146
- return test_method
147
- end
148
-
149
- end
@@ -1,66 +0,0 @@
1
- # TODO This instance should replace the write method in ActsAsRuntimeMethod
2
-
3
- class MethodWriter
4
- include WriteParameters
5
-
6
- def initialize
7
-
8
- end
9
-
10
- def write(params,statements,tab=0,method_id=0,additional_comments='')
11
-
12
- line = "\n"
13
- tab.times {|x| line += " " }
14
- line += "#\n"
15
-
16
- params.each_with_index do |var,i|
17
- tab.times {|x| line += " " }
18
- line += "# @param "
19
-
20
- # Get a description of the requirements (this can multiple lines)
21
- line_prefix = ''
22
-
23
- desc = var.describe(tab)
24
- desc.each_line do |l|
25
- line += line_prefix+l
26
-
27
- # Assides the first line pre-fix a "# " to the start
28
- (tab-1).times {|x| line += " " }
29
- line_prefix = "# "
30
-
31
- end
32
-
33
- end
34
-
35
- # Add some some additional comment if supplied
36
- unless additional_comments.nil?
37
- tab.times {|x| line += " " }
38
- line += "#"
39
- tab.times {|x| line += " " }
40
- line += additional_comments+"\n"
41
- end
42
-
43
- tab.times {|x| line += " " }
44
- line += "#\n"
45
-
46
- tab.times {|x| line += " "}
47
- line += 'def method_'+method_id.to_s
48
-
49
- #line += write_params(@parameters)
50
- line += write_params(params)
51
- line += "\n"
52
-
53
- # Write out any statements within the method
54
- statements.each do |statement|
55
- line += statement.write(tab+1)+"\n"
56
- end
57
- line += "\n" if statements.empty?
58
-
59
- # Close the method
60
- tab.times {|x| line += " " }
61
- line += "end"+"\n"
62
-
63
- return line
64
- end
65
-
66
- end