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,62 +0,0 @@
1
- require 'required'
2
- require 'test/unit'
3
-
4
- class TestInstanceCallStructure < Test::Unit::TestCase
5
-
6
- def setup
7
-
8
- end
9
-
10
- def teardown
11
- System.reset
12
- RuntimeMethod.reset_global_id
13
- end
14
-
15
- def test_find_global_with_simple_mapping
16
-
17
- starting_mapping = {
18
- 0 => {:head=>8,0=>0,1=>2}
19
- }
20
- chain_mapping = ChainMapping.new(starting_mapping)
21
- assert_equal(0,chain_mapping.find_global(:head,8))
22
- assert_equal(0,chain_mapping.find_global(1,2))
23
- assert_equal(0,chain_mapping.find_global(0,0))
24
- assert_equal(nil,chain_mapping.find_global(0,3))
25
-
26
- end
27
-
28
- def test_find_global_with_medium_mapping
29
- starting_mapping = {
30
- 0 => {:head=>0,0=>0,1=>4},
31
- 3 => {:head=>3,0=>1,1=>5},
32
- 5 => {:head=>5,0=>2,1=>6,:tail=>7},
33
- 6 => {:head=>6,0=>4,1=>8},
34
- }
35
- chain_mapping = ChainMapping.new(starting_mapping)
36
- assert_equal(0,chain_mapping.find_global(:head,0))
37
- assert_equal(5,chain_mapping.find_global(:head,5))
38
- assert_equal(5,chain_mapping.find_global(0,2))
39
- assert_equal(6,chain_mapping.find_global(1,8))
40
- assert_equal(nil,chain_mapping.find_global(1,9))
41
- assert_equal(nil,chain_mapping.find_global(4,9))
42
- end
43
-
44
- def test_add_mapping
45
- starting_mapping = {
46
- 0 => {:head=>0,4=>0,1=>4},
47
- 3 => {:head=>3,4=>1,1=>5},
48
- 5 => {:head=>5,4=>2,1=>6,:tail=>7},
49
- 6 => {:head=>6,4=>4,1=>8},
50
- }
51
- chain_mapping = ChainMapping.new(starting_mapping)
52
- assert_nothing_raised(){chain_mapping.add_mapping(3,5,7)}
53
- assert_equal(3,chain_mapping.find_global(5,7))
54
- assert_equal(3,chain_mapping.find_global(4,1))
55
- assert_equal(nil,chain_mapping.find_global(5,8))
56
-
57
- # Test adding a new global id
58
- chain_mapping.add_mapping(7,5,9)
59
- assert_equal(7,chain_mapping.find_global(5,9))
60
- end
61
-
62
- end
@@ -1,169 +0,0 @@
1
- require 'required'
2
- require 'test/unit'
3
-
4
- # These are the simple tests for chin that generates the following runtime
5
- # method.
6
- #
7
- # def method_1(var1)
8
- # if var1 == 'something'
9
- # return 'exist'
10
- # end
11
- # return 'does not exists'
12
- # end
13
- #
14
- class TestChainWithCase1 < Test::Unit::TestCase
15
-
16
- # NOTE: This is the chain without the last runtime included - this will be in a different test case
17
- def setup
18
-
19
- # Create te head for the theory
20
- head_result_one = TheoryResult.new(StringToTheory.run("if(var2[var3].kind_of?(CTestCase))\nreturn true\nend"))
21
- head_result_two = TheoryResult.new(
22
- StringToTheory.run("if((var2[var3][:params][var6] == var2[var4][:params][var6])==false)\nreturn true\nend")
23
- )
24
- @head = Theory.new([],nil,[head_result_one,head_result_two])
25
- @head_values = { 2=>IntrinsicTestCases.new,
26
- 3=>IntrinsicLiteral.new(0),
27
- 4=>IntrinsicLiteral.new(1),
28
- 6=>IntrinsicLiteral.new(0)
29
- }
30
-
31
- # Create the four links that needed added to complete the solution
32
- # ========================== theory 1 ===========================
33
- t1_dependent_one = TheoryDependent.new(StringToTheory.run("if(var2[var3].kind_of?(CTestCase))\nreturn true\nend"))
34
- t1_dependent_two = TheoryDependent.new(
35
- StringToTheory.run("if((var2[var3][:params][var6] == var2[var4][:params][var6])==false)\nreturn true\nend")
36
- )
37
- t1_action = TheoryAction.new(
38
- TheoryStatement.new(StringToTheory.run(
39
- 'OpenStatement.new(Statement.new(If.new,Container.new(var1.params[var6],Equivalent.new,var2[var3][:params][var6])))'
40
- )),
41
- StringToTheory.run('var1.statement_id')
42
- )
43
- t1_result_one = TheoryResult.new(StringToTheory.run(
44
- "if(var1.history2(var2[var3][:params]).any? { |x| x['statement_id'] == var1.last.statement_id })\nreturn true\nend"
45
- ))
46
- t1_result_two = TheoryResult.new(StringToTheory.run(
47
- "if((var1.history2(var2[var4][:params]).any? { |x| x['statement_id'] == var1.last.statement_id })==false)\nreturn true\nend"
48
- ))
49
- @theory_one = Theory.new(
50
- [t1_dependent_one,t1_dependent_two],
51
- t1_action,
52
- [t1_result_one,t1_result_two]
53
- )
54
- @theory_one_values = { 1=>IntrinsicRuntimeMethod.new,
55
- 2=>IntrinsicTestCases.new,
56
- 3=>IntrinsicLiteral.new(0),
57
- 4=>IntrinsicLiteral.new(1),
58
- 6=>IntrinsicLiteral.new(0)
59
- }
60
-
61
- # =================== Theory 2 ======================
62
- t2_dependent_one = TheoryDependent.new(StringToTheory.run(
63
- "if(var1.history2(var2[var3][:params]).any? { |x| x['statement_id'] == var1.last.statement_id })\nreturn true\nend"
64
- ))
65
- t2_dependent_two = TheoryDependent.new(StringToTheory.run(
66
- "if((var1.history2(var2[var4][:params]).any? { |x| x['statement_id'] == var1.last.statement_id })==false)\nreturn true\nend"
67
- ))
68
- t2_action = TheoryAction.new(
69
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var3][:output])')),
70
- StringToTheory.run('var1.last.statement_id')
71
- )
72
- t2_result_one = TheoryResult.new(StringToTheory.run(
73
- "if(var1.pass?(var2[var3]))\nreturn true\nend"
74
- ))
75
- t2_result_two = TheoryResult.new(StringToTheory.run(
76
- "if(var1.pass?(var2[var4])==false)\nreturn true\nend"
77
- ))
78
- @theory_two = Theory.new(
79
- [t2_dependent_one,t2_dependent_two],
80
- t2_action,
81
- [t2_result_one,t2_result_two]
82
- )
83
- @theory_two_values = { 1=>IntrinsicRuntimeMethod.new,
84
- 2=>IntrinsicTestCases.new,
85
- 3=>IntrinsicLiteral.new(0),
86
- 4=>IntrinsicLiteral.new(1),
87
- 6=>IntrinsicLiteral.new(0)
88
- }
89
-
90
- # =================== Theory 3 ======================
91
- t3_dependent_one = TheoryDependent.new(StringToTheory.run(
92
- "if(var1.pass?(var2[var3]))\nreturn true\nend"
93
- ))
94
- t3_dependent_two = TheoryDependent.new(StringToTheory.run(
95
- "if(var1.pass?(var2[var4]) == false)\nreturn true\nend"
96
- ))
97
- t3_action = TheoryAction.new(
98
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var4][:output])')),
99
- StringToTheory.run('var1.statement_id')
100
- )
101
- t3_result_one = TheoryResult.new(StringToTheory.run(
102
- "if(var1.pass?(var2[var4]))\nreturn true\nend"
103
- ))
104
- @theory_three = Theory.new(
105
- [t3_dependent_one,t3_dependent_two],
106
- t3_action,
107
- [t3_result_one]
108
- )
109
- @theory_three_values = { 1=>IntrinsicRuntimeMethod.new,
110
- 2=>IntrinsicTestCases.new,
111
- 3=>IntrinsicLiteral.new(0),
112
- 4=>IntrinsicLiteral.new(1)
113
- }
114
-
115
- # ================== Theory 4 =======================
116
- # NOTE: This one needs to get it's dependents from theory 3 and 2
117
- t4_dependent_one = TheoryDependent.new(StringToTheory.run(
118
- "if(var1.pass?(var2[var3]))\nreturn true\nend"
119
- ))
120
- t4_dependent_two = TheoryDependent.new(StringToTheory.run(
121
- "if(var1.pass?(var2[var4]))\nreturn true\nend"
122
- ))
123
-
124
- t4_result_one = TheoryResult.new(StringToTheory.run(
125
- "if(var1.all_pass?(var2))\nreturn true\nend"
126
- ))
127
- @theory_four = Theory.new(
128
- [t4_dependent_one,t4_dependent_two],
129
- nil,
130
- [t4_result_one]
131
- )
132
-
133
- end
134
-
135
- def teardown
136
- System.reset
137
- RuntimeMethod.reset_global_id
138
- end
139
-
140
- def test_implement
141
-
142
- # Start by creating a complete chain with the values
143
- chain = Chain.new
144
-
145
- # Add the head link to the chain
146
- chain_results = chain.add_link(@head,@head_values)
147
- assert_equal(1,chain_results.length)
148
-
149
- # Add the next link to the chain
150
- chain_results = chain_results[0].add_link(@theory_one,@theory_one_values)
151
- assert_equal(1,chain_results.length)
152
-
153
- # Add the second link to the chain
154
- chain_results = chain_results[0].add_link(@theory_two,@theory_two_values)
155
- assert_equal(1,chain_results.length)
156
-
157
- # Add the third link to the chain
158
- chain_results = chain_results[0].add_link(@theory_three,@theory_three_values)
159
- assert_equal(1,chain_results.length)
160
-
161
- # Add the fourth link to the chain
162
- chain_results = chain_results[0].add_link(@theory_four,@theory_four_values)
163
- assert_equal(true,chain_results.any? {|x| x.complete?})
164
-
165
- end
166
-
167
-
168
- end
169
-
@@ -1,40 +0,0 @@
1
- require 'required'
2
- require 'test/unit'
3
-
4
- class TestInstanceCallContainer < Test::Unit::TestCase
5
-
6
- def setup
7
-
8
- # Create some example instance calls
9
- @var_a = 'Stan'.to_var
10
- @chop_instance_call_a = InstanceCallContainer.new(@var_a,Chop.new)
11
- @length_instance_call_a = InstanceCallContainer.new(@var_a,StringLength.new)
12
-
13
- end
14
-
15
- def teardown
16
- System.reset
17
- RuntimeMethod.reset_global_id
18
- end
19
-
20
- def test_literalise
21
-
22
- # # Tests ability to literalise simple 'stan'.chop
23
- # assert('sta',@chop_instance_call_a.literalise)
24
- #
25
- # # Test simple length call on 'stan'
26
- # assert('stan'.length,@length_instance_call_a.literalise)
27
-
28
- end
29
-
30
- def test_to_declaration
31
-
32
- # Check that the correct data type is returned
33
- assert_kind_of(VariableDeclaration,@chop_instance_call_a.to_declaration)
34
- assert_equal("InstanceCallContainer.new(StringVariable.new('Stan'), Chop.new())",@chop_instance_call_a.to_declaration.write)
35
-
36
- # TODO Test a to_declaration call for a InstanceCallContainer with parameters
37
-
38
- end
39
-
40
- end
@@ -1,35 +0,0 @@
1
- require 'required'
2
- require 'test/unit'
3
-
4
- class TestMethodUsage < Test::Unit::TestCase
5
-
6
- def setup
7
-
8
- # Create a basic method usage example
9
- @empty_method_usage = MethodUsage.new
10
-
11
- # Requires a string variable
12
- @method_var_a = MethodParameter.new
13
- @string_paramater_case = MethodUsage.new(@method_var_a)
14
-
15
- end
16
-
17
- def teardown
18
- System.reset
19
- end
20
-
21
- def test_initialize
22
- assert_raises(StandardError){MethodUsage.new('bad_boy')}
23
- end
24
-
25
- #
26
- def test_to_var
27
- assert(@empty_method_usage.to_var.kind_of?(MethodUsageVariable))
28
- assert(@string_paramater_case.to_var.kind_of?(MethodUsageVariable))
29
- assert_equal(1,@string_paramater_case.to_var.length)
30
- assert_nothing_raised(){@string_paramater_case.to_var}
31
- assert_equal(89,@empty_method_usage.to_var(89).variable_id)
32
- assert_equal(99,@empty_method_usage.to_var(89,99).uniq_id)
33
- end
34
-
35
- end
@@ -1,124 +0,0 @@
1
- require 'required'
2
- require 'test/unit'
3
-
4
- class TestInstanceCallStructure < Test::Unit::TestCase
5
-
6
- def setup
7
- @cauldron = Cauldron::Pot.new()
8
-
9
- # Create demonstration #1
10
- # (just return the first parameter)
11
- demo_1_test_case_1 = CTestCase.new
12
- demo_1_test_case_1[:params] = ['sparky']
13
- demo_1_test_case_1[:output] = 'sparky'
14
- demo_1_test_case_2 = CTestCase.new
15
- demo_1_test_case_2[:params] = ['kel']
16
- demo_1_test_case_2[:output] = 'kel'
17
- @demo_1_test_cases = [
18
- demo_1_test_case_1,demo_1_test_case_2
19
- ]
20
-
21
- # Create demonstration #2
22
- demo_2_test_case_1 = CTestCase.new
23
- demo_2_test_case_1[:params] = ['something']
24
- demo_2_test_case_1[:output] = 'exists'
25
- demo_2_test_case_2 = CTestCase.new
26
- demo_2_test_case_2[:params] = ['my willpower']
27
- demo_2_test_case_2[:output] = 'does not exist'
28
- demo_2_test_cases = [
29
- demo_2_test_case_1,demo_2_test_case_2
30
- ]
31
-
32
- # Create demo #1 chain
33
- # Create the head for the chain
34
- head = Theory.new([],nil,[])
35
-
36
- link_one_action = TheoryAction.new(
37
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2.params[var3])')),
38
- StringToTheory.run('var1.statement_id')
39
- )
40
- # NOTE: I need to add one result so the theory can be flagged as complete - I might not need it
41
- # to be complete -
42
- link_one_result = TheoryResult.new(StringToTheory.run("if(var1.all_pass?(var2))\nreturn true\nend"))
43
- link_one = Theory.new([],link_one_action,[link_one_result])
44
- chain = Chain.new
45
- chain = chain.add_link(head).first
46
- chain = chain.add_link(
47
- link_one,
48
- {
49
- 1=>IntrinsicRuntimeMethod.new,
50
- 2=>IntrinsicTestCases.new,
51
- 3=>IntrinsicLiteral.new(0)
52
- }
53
- ).first
54
-
55
- # Now implement the chain
56
- implemented_chain = chain.implement
57
-
58
- # TODO It should generate the values too.(TheoryGenerator)
59
- @demo_1 = {
60
- :initial_method=>RuntimeMethod.new(MethodUsage.new(MethodParameter.new)),
61
- :test_cases=>@demo_1_test_cases,
62
- :chain=>chain,
63
- :values=>{}
64
- }
65
- # action = TheoryAction.new(
66
- # TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var4][:output])')),
67
- # StringToTheory.run('var5.statement_id')
68
- # )
69
-
70
- end
71
-
72
- def teardown
73
- System.reset
74
- RuntimeMethod.reset_global_id
75
- end
76
-
77
- def test_with_simple_test_case
78
-
79
- test_case_1 = CTestCase.new
80
- test_case_1[:params] = ['something']
81
- test_case_1[:output] = 'exists'
82
- test_case_2 = CTestCase.new
83
- test_case_2[:params] = ['my willpower']
84
- test_case_2[:output] = 'does not exist'
85
- test_cases = [
86
- test_case_1,test_case_2
87
- ]
88
-
89
- #assert_nothing_raised() {@cauldron.brew(test_cases)}
90
- end
91
-
92
- # Checks that a theory is created for a very simple
93
- # example that just requires adding a single statement
94
- # to a runtime method.
95
- #
96
- def test_simmer_with_very_basic_theory
97
-
98
- @cauldron.clear
99
- # TEMP Notes
100
- # 1. Confirm that the chain solves the problem
101
- # 2. Generate a master theory for each of the steps
102
- # 3. Add each of simple theories to the bank.
103
- # 4. Need to clear the cauldron after each generation(for testing)
104
- assert_nothing_raised(){@cauldron.simmer(@demo_1)}
105
-
106
- end
107
-
108
- def test_brew_with_case_1
109
-
110
- # => TODO Should clear, then simmer first
111
- assert_nothing_raised(){@cauldron.brew(@demo_1_test_cases)}
112
-
113
- assert_equal(true,@cauldron.brew(@demo_1_test_cases).kind_of?(RuntimeMethod))
114
- end
115
-
116
- def test_demo_works_with_demo_1
117
- assert_equal(true,@cauldron.demo_works?(@demo_1))
118
- end
119
-
120
- def test_clear
121
- assert_nothing_raised(){@cauldron.clear}
122
- end
123
-
124
- end
@@ -1,40 +0,0 @@
1
- require 'required'
2
- require 'test/unit'
3
-
4
- class TestRuntimeTrackingMethod < Test::Unit::TestCase
5
-
6
- def setup
7
-
8
- @tracking_variable = ArrayVariable.new([])
9
- @tracking_variable.instance_variable = true
10
- @runtime_tracking_method = RuntimeTrackingMethod.new(@tracking_variable)
11
-
12
- end
13
-
14
- def teardown
15
- System.reset
16
- RuntimeMethod.reset_global_id
17
- end
18
-
19
- def test_write
20
-
21
- # Check that evaluated method doesn't generate an error
22
- #MethodUsage.new(@line,@action,@variables,@local_variables,@statement_id)
23
- assert_nothing_raised(){
24
- MethodEvaluation.new.evaluate_method(
25
- @runtime_tracking_method,ParametersContainer.new(
26
- 0.to_literal,
27
- 12.to_literal,
28
- [].to_literal,
29
- 'var=test'.to_literal
30
- ))
31
- }
32
-
33
- end
34
-
35
- def test_copy
36
- assert_nothing_raised(){@runtime_tracking_method.copy}
37
- assert_equal(@runtime_tracking_method.write,@runtime_tracking_method.copy.write)
38
- end
39
-
40
- end