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,38 +0,0 @@
1
- require 'required'
2
- require 'test/unit'
3
-
4
- class TestString < Test::Unit::TestCase
5
-
6
- def setup
7
-
8
- end
9
-
10
- def teardown
11
- System.reset
12
- end
13
-
14
- def test_write
15
- assert_equal('\'three headed monkey\'','three headed monkey'.write)
16
- assert_equal("'three headed monkey'",'three headed monkey'.write)
17
- assert_equal("'\\'vodoo\\' lady'","'vodoo' lady".write)
18
- end
19
-
20
- def test_to_literal
21
- x = 'test'
22
- assert(x.to_literal.kind_of?(Literal))
23
- assert_equal(x,x.to_literal.value)
24
- end
25
-
26
- def test_to_declared_variable_statement
27
- x = 'test'
28
- declared_variable_statement = x.to_declared_variable_statement
29
- assert_equal("var_0 = 'test'",declared_variable_statement.write)
30
- assert_equal(0,declared_variable_statement.declared_variable_id)
31
- end
32
-
33
- def test_to_var
34
- assert_equal(4,'test'.to_var(4,7).variable_id)
35
- assert_equal(7,'test'.to_var(4,7).uniq_id)
36
- end
37
-
38
- end
@@ -1,434 +0,0 @@
1
- require 'required'
2
- require 'test/unit'
3
-
4
- class TestChain < Test::Unit::TestCase
5
- include ContainsTheories
6
-
7
- def setup
8
-
9
- end
10
-
11
- def teardown
12
- System.reset
13
- RuntimeMethod.reset_global_id
14
- end
15
-
16
- # Create the most simple of chains that only has a head and a tail and completes
17
- def test_initialize_1
18
-
19
- # Create the single requirement
20
- result_one = TheoryResult.new(StringToTheory.run("if(var1.all_pass?(var2))\nreturn true\nend"))
21
- head = Theory.new([],nil,[result_one])
22
-
23
- # Check initial declaration
24
- assert_nothing_raised(){Chain.new()}
25
-
26
- # Add the head to the chain - completing it
27
- chain = Chain.new()
28
- assert_nothing_raised(){chain.add_link(head)}
29
- chain_results = chain.add_link(head)
30
- assert_equal(true,chain_results.any? {|x|x.complete?})
31
-
32
- # Implement the chain
33
- assert_equal(1,chain_results.length)
34
- complete_chain = chain_results.first
35
- assert_nothing_raised() {complete_chain.implement}
36
-
37
- end
38
-
39
- # Test a very simple chain that shares all the save variable ids(negating the mapping) but is made up
40
- # of a head, link and tail.
41
- def test_initialize_2
42
-
43
- # Create the head for the chain
44
- head_result = TheoryResult.new(StringToTheory.run("if(var2[var3][:output]==var2[var3][:params][var4])\nreturn true\nend"))
45
- head = Theory.new([],nil,[head_result])
46
-
47
- # Create linking method
48
- link_one_dependent_one = TheoryDependent.new(StringToTheory.run("if(var2[var3][:output]==var2[var3][:params][var4])\nreturn true\nend"))
49
- link_one_action = TheoryAction.new(
50
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var3][:output])')),
51
- StringToTheory.run('var1.statement_id')
52
- )
53
- link_one_result = TheoryResult.new(StringToTheory.run("if(var1.all_pass?(var2))\nreturn true\nend"))
54
- link_one = Theory.new([link_one_dependent_one],link_one_action,[link_one_result])
55
-
56
- # Create the initial chain and confirm it isn't complete (the head can't connect to tail)
57
- chain = Chain.new
58
- assert_equal(false,chain.complete?)
59
-
60
- assert_nothing_raised(){chain.add_link(head)}
61
- chain_results = chain.add_link(head)
62
-
63
- # Add the next chain in the link
64
- extended_results = []
65
- chain_results.each do |c|
66
- extended_results += c.add_link(link_one)
67
- end
68
- chain_results = extended_results
69
-
70
- assert_equal(true,chain_results.all? {|x| x.kind_of?(Chain)})
71
- assert_equal(true,chain_results.all? {|x| x.complete? })
72
- assert_equal(true,chain_results.all? {|x| x.broken_link_count == 0})
73
-
74
- end
75
-
76
- # Test that this very simple chain can be unified
77
- #
78
- def test_unifiy_chain_1
79
- head = Theory.new([],nil,[])
80
-
81
- link_one_action = TheoryAction.new(
82
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var3][:output])')),
83
- StringToTheory.run('var1.statement_id')
84
- )
85
- link_one_result = TheoryResult.new(StringToTheory.run("if(var1.all_pass?(var2))\nreturn true\nend"))
86
- link_one = Theory.new([],link_one_action,[link_one_result])
87
- chain = Chain.new
88
- chain = chain.add_link(head).first
89
- chain = chain.add_link(link_one).first
90
-
91
- global_ids = chain.chain_mapping.mapping.collect {|key,value| key}
92
-
93
- assert_equal(
94
- true,
95
- global_ids.all? do |x|
96
- chain.unify_chain.write.include?('var'+x.to_s)
97
- end
98
- )
99
-
100
- end
101
-
102
- # Test that an extremely basic chain can be implemented. The chain
103
- # basically involves adding one return statement to a runtime method.
104
- #
105
- def test_implement_1
106
-
107
- head = Theory.new([],nil,[])
108
-
109
- link_one_action = TheoryAction.new(
110
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var3][:output])')),
111
- StringToTheory.run('var1.statement_id')
112
- )
113
- # NOTE: I need to add one result so the theory can be flagged as complete - I might not need it
114
- # to be complete -
115
- link_one_result = TheoryResult.new(StringToTheory.run("if(var1.all_pass?(var2))\nreturn true\nend"))
116
- link_one = Theory.new([],link_one_action,[link_one_result])
117
- chain = Chain.new
118
- chain = chain.add_link(head).first
119
- chain = chain.add_link(
120
- link_one,
121
- {
122
- 1=>IntrinsicRuntimeMethod.new,
123
- 2=>IntrinsicTestCases.new,
124
- 3=>IntrinsicLiteral.new(0)
125
- }
126
- ).first
127
-
128
- # Attempt to implement the chain
129
- assert_nothing_raised() {chain.implement}
130
- implemented_chain = chain.implement
131
- assert_equal(false,implemented_chain.write.include?('var'))
132
-
133
- end
134
-
135
- # Checks that a implemented theory can be created with the very basic
136
- # chain.
137
- #
138
- def test_theory_progression_with_case_1
139
-
140
- # ----------------- SETUP -----------------
141
- # Create demonstration #1
142
- # (just return the first parameter)
143
- demo_1_test_case_1 = CTestCase.new
144
- demo_1_test_case_1[:params] = ['sparky']
145
- demo_1_test_case_1[:output] = 'sparky'
146
- demo_1_test_case_2 = CTestCase.new
147
- demo_1_test_case_2[:params] = ['kel']
148
- demo_1_test_case_2[:output] = 'kel'
149
- demo_1_test_cases = [
150
- demo_1_test_case_1,demo_1_test_case_2
151
- ]
152
-
153
- head = Theory.new([],nil,[])
154
- link_one_action = TheoryAction.new(
155
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2.params[var3])')),
156
- StringToTheory.run('var1.statement_id')
157
- )
158
- # NOTE: I need to add one result so the theory can be flagged as complete - I might not need it
159
- # to be complete -
160
- link_one_result = TheoryResult.new(StringToTheory.run("if(var1.all_pass?(var2))\nreturn true\nend"))
161
- link_one = Theory.new([],link_one_action,[link_one_result])
162
- chain = Chain.new
163
- chain = chain.add_link(head).first
164
- chain = chain.add_link(
165
- link_one,
166
- {
167
- 1=>IntrinsicRuntimeMethod.new,
168
- 2=>IntrinsicTestCases.new,
169
- 3=>IntrinsicLiteral.new(0)
170
- }
171
- ).first
172
- runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
173
-
174
- # ---------------- Attempt to create the three theory snapshots -------------
175
- assert_nothing_raised() {chain.theory_progression(runtime_method,demo_1_test_cases)}
176
- assert_equal(3,chain.theory_progression(runtime_method,demo_1_test_cases).length)
177
- assert_equal(true,chain.theory_progression(runtime_method,demo_1_test_cases).all?{|x| x.kind_of?(TheoryImplementation)})
178
-
179
- end
180
-
181
- # Test implementation with the simple example that just returns the passed
182
- # value.
183
- def test_implement_2
184
-
185
- # Create the head for the chain
186
- head_result = TheoryResult.new(StringToTheory.run("if(var2[var3][:output]==var2[var3][:params][var4])\nreturn true\nend"))
187
- head = Theory.new([],nil,[head_result])
188
-
189
- # Create linking method
190
- link_one_dependent_one = TheoryDependent.new(StringToTheory.run("if(var2[var3][:output]==var2[var3][:params][var4])\nreturn true\nend"))
191
- link_one_action = TheoryAction.new(
192
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var3][:output])')),
193
- StringToTheory.run('var1.statement_id')
194
- )
195
- link_one_result = TheoryResult.new(StringToTheory.run("if(var1.all_pass?(var2))\nreturn true\nend"))
196
- link_one = Theory.new([link_one_dependent_one],link_one_action,[link_one_result])
197
-
198
- # Create the values for the head
199
- head_values = {2=>IntrinsicTestCases.new,3=>IntrinsicLiteral.new(0),4=>IntrinsicLiteral.new(0)}
200
- link_one_values = { 1=>IntrinsicRuntimeMethod.new,
201
- 2=>IntrinsicTestCases.new,
202
- 3=>IntrinsicLiteral.new(0),
203
- 4=>IntrinsicLiteral.new(0)
204
- }
205
-
206
- # Create the initial chain and confirm it isn't complete (the head can't connect to tail)
207
- chain = Chain.new
208
- assert_equal(false,chain.complete?)
209
-
210
- assert_nothing_raised(){chain.add_link(head)}
211
- chain_results = chain.add_link(head,head_values)
212
-
213
- # Add the next chain in the link
214
- extended_results = []
215
- chain_results.each do |c|
216
- extended_results += c.add_link(link_one,link_one_values)
217
- end
218
- chain_results = extended_results
219
- assert_equal(1,chain_results.length)
220
-
221
- # Now attempt to implement it
222
- complete_chain = chain_results.first
223
- assert_equal(true,complete_chain.complete?)
224
- assert_nothing_raised(){complete_chain.implement}
225
-
226
- end
227
-
228
- # Add the theories needded to create a simple 'if' runtime method
229
- #
230
- # def method_1(var1)
231
- # if var1 == 'something'
232
- # return 'exist'
233
- # end
234
- # return 'does not exists'
235
- # end
236
- #
237
- def test_add_link_to_3
238
-
239
- theory_1 = Theory.load_theory(20)
240
- theory_2 = Theory.load_theory(14)
241
- theory_3 = Theory.load_theory(15)
242
- theory_4 = Theory.load_theory(12)
243
-
244
- # Create te head for the theory
245
- head_result_one = TheoryResult.new(StringToTheory.run("if(var2[var3].kind_of?(CTestCase))\nreturn true\nend"))
246
- head_result_two = TheoryResult.new(
247
- StringToTheory.run("if((var2[var3][:params][var6] == var2[var4][:params][var6])==false)\nreturn true\nend")
248
- )
249
- head = Theory.new([],nil,[head_result_one,head_result_two])
250
-
251
- # Create the initial chain
252
- chain = Chain.new
253
-
254
- # Add the head link to the chain
255
- chain_results = chain.add_link(head)
256
-
257
- # Add the next link to the chain
258
- extended_results = []
259
- chain_results.each do |c|
260
- extended_results += c.add_link(theory_1)
261
- end
262
- chain_results = extended_results
263
-
264
- assert_equal(1,chain_results.length)
265
- assert_equal(false,chain_results.all? {|x| x.complete? })
266
-
267
- # Add the next link to the chain
268
- extended_results = []
269
- chain_results.each do |c|
270
- extended_results += c.add_link(theory_2)
271
- end
272
- chain_results = extended_results
273
-
274
- # Add the next link to the chain
275
- extended_results = []
276
- chain_results.each do |c|
277
- extended_results += c.add_link(theory_3)
278
- end
279
- chain_results = extended_results
280
-
281
- # Add the next link to the chain
282
- extended_results = []
283
- chain_results.each do |c|
284
- extended_results += c.add_link(theory_4)
285
- end
286
- chain_results = extended_results
287
-
288
- # Check the results - at least one the chains should be complete now
289
- assert_equal(true,chain_results.all? {|x| x.kind_of?(Chain)})
290
- #assert_equal(true,chain_results.any? {|x| x.complete?})
291
- #assert_equal(1,chain_results.select {|x| x.complete?}.length)
292
-
293
- # Implement the completed chain
294
- #complete_chain = chain_results.select {|x| x.complete?}.first
295
- #assert_equal(6,complete_chain.unify_chain.theory_variables.length)
296
-
297
- end
298
-
299
- def test_variables_creation_with_case_1
300
-
301
- # Create demonstration #1
302
- # (just return the first parameter)
303
- demo_1_test_case_1 = CTestCase.new
304
- demo_1_test_case_1[:params] = ['sparky']
305
- demo_1_test_case_1[:output] = 'sparky'
306
- demo_1_test_case_2 = CTestCase.new
307
- demo_1_test_case_2[:params] = ['kel']
308
- demo_1_test_case_2[:output] = 'kel'
309
- demo_1_test_cases = [
310
- demo_1_test_case_1,demo_1_test_case_2
311
- ]
312
-
313
- head = Theory.new([],nil,[])
314
- link_one_action = TheoryAction.new(
315
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2.params[var3])')),
316
- StringToTheory.run('var1.statement_id')
317
- )
318
- # NOTE: I need to add one result so the theory can be flagged as complete - I might not need it
319
- # to be complete -
320
- link_one_result = TheoryResult.new(StringToTheory.run("if(var1.all_pass?(var2))\nreturn true\nend"))
321
- link_one = Theory.new([],link_one_action,[link_one_result])
322
- chain = Chain.new
323
- chain = chain.add_link(head).first
324
- chain = chain.add_link(
325
- link_one,
326
- {
327
- 1=>IntrinsicRuntimeMethod.new,
328
- 2=>IntrinsicTestCases.new,
329
- 3=>IntrinsicLiteral.new(0)
330
- }
331
- ).first
332
- runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
333
-
334
- assert_equal(3,chain.variables_creation.length)
335
-
336
- end
337
-
338
- # # Add the theories needded to create a simple 'if' runtime method
339
- # #
340
- # # def method_1(var1)
341
- # # if var1 == 'something'
342
- # # return 'exist'
343
- # # end
344
- # # return 'does not exists'
345
- # # end
346
- # #
347
- # # but also include the values of each of the values.
348
- # #
349
- # def test_add_link_to_3_with_values
350
- #
351
- # theory_1 = Theory.load_theory(20)
352
- # theory_2 = Theory.load_theory(14)
353
- # theory_3 = Theory.load_theory(15)
354
- # theory_4 = Theory.load_theory(12)
355
- #
356
- # # Create te head for the theory
357
- # head_result_one = TheoryResult.new(StringToTheory.run("if(var2[var3].kind_of?(CTestCase))\nreturn true\nend"))
358
- # head_result_two = TheoryResult.new(
359
- # StringToTheory.run("if((var2[var3][:params][var6] == var2[var4][:params][var6])==false)\nreturn true\nend")
360
- # )
361
- # head = Theory.new([],nil,[head_result_one,head_result_two])
362
- #
363
- # end
364
-
365
- # def test_solvable_passing_no_theories
366
- #
367
- # # Create the initial starting chain from pre-existing chain
368
- # directory_path = $LOC+File.join('test','fixtures','chains','3')
369
- # raise StandardError.new("chain 3 does not exist") unless(File.exists?(directory_path))
370
- # dump_file = File.open(File.join(directory_path,'dump'),'r')
371
- # initial_chain = Marshal.load(dump_file)
372
- #
373
- # finish = Parser.run("if(runtime_method.all_pass?(test_cases))\nreturn true\nend")
374
- #
375
- # assert_equal(false,initial_chain.solvable?(finish,[]))
376
- #
377
- # end
378
-
379
- # def test_solvable_with_one_theory_that_solves_it
380
- #
381
- # # Create the initial starting chain from pre-existing chain
382
- # directory_path = $LOC+File.join('test','fixtures','chains','1')
383
- # raise StandardError.new("chain 1 does not exist") unless(File.exists?(directory_path))
384
- # dump_file = File.open(File.join(directory_path,'dump'),'r')
385
- # initial_chain = Marshal.load(dump_file)
386
- #
387
- # theory_19 = Theory.load_theory(19)
388
- #
389
- # finish = Parser.run("if(runtime_method.all_pass?(test_cases))\nreturn true\nend")
390
- # assert_equal(true,initial_chain.solvable?(finish,[theory_19]))
391
- #
392
- # end
393
-
394
- # def test_solvable_with_case_1
395
- # # TODO This works but takes longer than I would expect.
396
- #
397
- # # Create the initial starting chain from pre-existing chain
398
- # directory_path = $LOC+File.join('test','fixtures','chains','3')
399
- # raise StandardError.new("chain 3 does not exist") unless(File.exists?(directory_path))
400
- # dump_file = File.open(File.join(directory_path,'dump'),'r')
401
- # initial_chain = Marshal.load(dump_file)
402
- #
403
- # theory_1 = Theory.load_theory(20)
404
- # theory_2 = Theory.load_theory(14)
405
- # theory_3 = Theory.load_theory(15)
406
- # theory_4 = Theory.load_theory(12)
407
- #
408
- # finish = Parser.run("if(runtime_method.all_pass?(test_cases))\nreturn true\nend")
409
- # assert_equal(true,initial_chain.solvable?(finish,[theory_1,theory_2,theory_3,theory_4]))
410
- #
411
- # end
412
- #
413
- # def test_solvable_with_case_1_and_missing_theory
414
- #
415
- # # Create the initial starting chain from pre-existing chain
416
- # directory_path = $LOC+File.join('test','fixtures','chains','3')
417
- # raise StandardError.new("chain 3 does not exist") unless(File.exists?(directory_path))
418
- # dump_file = File.open(File.join(directory_path,'dump'),'r')
419
- # initial_chain = Marshal.load(dump_file)
420
- #
421
- # theory_1 = Theory.load_theory(20)
422
- # theory_2 = Theory.load_theory(14)
423
- # theory_3 = Theory.load_theory(15)
424
- # theory_4 = Theory.load_theory(12)
425
- #
426
- # finish = Parser.run("if(runtime_method.all_pass?(test_cases))\nreturn true\nend")
427
- # assert_equal(false,initial_chain.solvable?(finish,[theory_1,theory_2,theory_3]))
428
- # assert_equal(false,initial_chain.solvable?(finish,[theory_1,theory_2,theory_4]))
429
- # assert_equal(false,initial_chain.solvable?(finish,[theory_1,theory_3,theory_4]))
430
- # assert_equal(false,initial_chain.solvable?(finish,[theory_2,theory_3,theory_4]))
431
- #
432
- # end
433
-
434
- end