cauldron 0.1.3 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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,361 +0,0 @@
1
- require 'required'
2
- require 'test/unit'
3
-
4
- class TestTheoryConnector < Test::Unit::TestCase
5
- include ContainsTheories
6
-
7
- def setup
8
- super
9
- @potential_values = [
10
- Parser.run('0'),
11
- Parser.run('test_cases'),
12
- Parser.run('runtime_method')
13
- ]
14
- @connector = TheoryConnector.new(@potential_values)
15
- end
16
-
17
- def teardown
18
- System.reset
19
- RuntimeMethod.reset_global_id
20
- end
21
-
22
- def test_initialize
23
- assert_nothing_raised(){TheoryConnector.new(@potential_values)}
24
- end
25
-
26
- def test_chain_with_a_easy_problem_and_only_one_theory
27
-
28
- # Create the simple runtime method to be populated
29
- runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
30
- sparky = CTestCase.new
31
- sparky[:params] = ['sparky']
32
- sparky[:output] = 'sparky'
33
- pip = CTestCase.new
34
- pip[:params] = ['pip']
35
- pip[:output] = 'pip'
36
- test_cases = [
37
- sparky,pip
38
- ]
39
- finish = Parser.run("if(runtime_method.all_pass?(test_cases))\nreturn true\nend")
40
-
41
- # NOTE: To solve this it just needs to include an action that returns the first variable
42
- # Create the VERY simple theory to solve this.
43
- theory_action = TheoryAction.new(
44
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var1.params[0])')),
45
- StringToTheory.run('var1.statement_id')
46
- )
47
- result_one = TheoryResult.new(
48
- StringToTheory.run("if(var1.all_pass?(var2))\nreturn true\nend")
49
- )
50
- solution_theory = Theory.new([],theory_action,[result_one])
51
- assert(@connector.chain(runtime_method,test_cases,finish,[solution_theory]).kind_of?(Array))
52
- assert_equal(1,@connector.chain(runtime_method,test_cases,finish,[solution_theory]).length)
53
- assert(@connector.chain(runtime_method,test_cases,finish,[solution_theory]).all? {|x| x.kind_of?(Chain)})
54
- assert(@connector.chain(runtime_method,test_cases,finish,[solution_theory]).all? {|x| x.length == 2})
55
-
56
- # Check that the generated chain works
57
- implemented = @connector.chain(runtime_method,test_cases,finish,[solution_theory]).first.implement
58
- result = TheoryChainValidator.new.build(
59
- runtime_method,
60
- test_cases,
61
- [implemented],
62
- []
63
- )
64
- assert_equal(
65
- true,
66
- result.kind_of?(RuntimeMethod)
67
- )
68
-
69
- end
70
-
71
- def test_create_possible_chain_extensions_with_a_very_simple_problem
72
-
73
- directory_path = $LOC+File.join('test','fixtures','chains','1')
74
- raise StandardError.new("chain 1 does not exist") unless(File.exists?(directory_path))
75
- dump_file = File.open(File.join(directory_path,'dump'),'r')
76
-
77
- initial_chain = Marshal.load(dump_file)
78
- theory_6 = Theory.load_theory(6)
79
-
80
- # Create the simple runtime method to be populated
81
- runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
82
- sparky = CTestCase.new
83
- sparky[:params] = ['sparky']
84
- sparky[:output] = 'sparky'
85
- pip = CTestCase.new
86
- pip[:params] = ['pip']
87
- pip[:output] = 'pip'
88
- test_cases = [
89
- sparky,pip
90
- ]
91
- finish = Parser.run("if(runtime_method.all_pass?(test_cases))\nreturn true\nend")
92
-
93
- # TEMPORARY Hack remove all the results that don't resemble at least one of the theories
94
- # dependents.
95
- theory_dependents = [theory_6].inject([]) {|total,x| total += x.dependents}
96
- new_results = []
97
- initial_chain.first.results.each do |r|
98
- if theory_dependents.any? {|x| r.same_structure?(x)}
99
- new_results.push(r)
100
- end
101
- end
102
- assert_equal(
103
- 1,
104
- @connector.create_possible_chain_extensions(runtime_method,test_cases,finish,[theory_6],initial_chain).length
105
- )
106
- assert_equal(
107
- true,
108
- @connector.chain(runtime_method,test_cases,finish,[theory_6]).all? {|x| x.kind_of?(Chain)}
109
- )
110
-
111
- end
112
-
113
- def test_chain_with_a_marginally_more_complicated_problem
114
-
115
- # Create the simple runtime method to be populated
116
- runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
117
- test_cases = [
118
- {:params=>['sparky'], :output=>3},
119
- {:params=>['pip'], :output=>3},
120
- ]
121
- finish = Parser.run("if(runtime_method.all_pass?(test_cases))\nreturn true\nend")
122
- assert_equal(
123
- true,
124
- @connector.chain(runtime_method,test_cases,finish,[@theory_3]).kind_of?(Array)
125
- )
126
- assert_equal(
127
- true,
128
- @connector.chain(runtime_method,test_cases,finish,[@theory_3]).all? {|x| x.all? {|y| y.kind_of?(Theory)}}
129
- )
130
-
131
- end
132
-
133
- def test_chain_with_addition_theory
134
-
135
- runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new,MethodParameter.new))
136
- test_cases = [
137
- {:params=>['left 4','dead'], :output=>'left 4 dead'}
138
- ]
139
- finish = Parser.run("if(runtime_method.all_pass?(test_cases))\nend")
140
-
141
- end
142
-
143
- def test_chain_with_2_theories
144
-
145
- runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
146
- sparky = CTestCase.new
147
- sparky[:params] = ['sparky']
148
- sparky[:output] = 6
149
- kel = CTestCase.new
150
- kel[:params] = ['kel']
151
- kel[:output] = 3
152
- test_cases = [
153
- sparky,kel
154
- ]
155
- finish = Parser.run("if(runtime_method.all_pass?(test_cases))\nreturn true\nend")
156
- theory_7 = Theory.load_theory(7)
157
- theory_5 = Theory.load_theory(5)
158
-
159
- directory_path = $LOC+File.join('test','fixtures','chains','2')
160
- raise StandardError.new("chain 2 does not exist") unless(File.exists?(directory_path))
161
- dump_file = File.open(File.join(directory_path,'dump'),'r')
162
- initial_chain = Marshal.load(dump_file)
163
-
164
- # Temporary Hack remove all the results that don't resemble at least one of the theories
165
- # dependents.
166
- theory_dependents = [theory_7,theory_5].inject([]) {|total,x| total += x.dependents}
167
- new_results = []
168
- initial_chain.first.results.each do |r|
169
- if theory_dependents.any? {|x| r.same_structure?(x)}
170
- new_results.push(r)
171
- end
172
- end
173
- #initial_chain.first.results = new_results
174
- initial_chain.first.results = [new_results[0]]
175
-
176
-
177
- #exit
178
- # TEMP - Removing most of the dependents
179
- # initial_chain.first.results.each_with_index do |x,i|
180
- # #if x.write.include?('if(var1.realise2(var2[var3][:params]).params[var4].value.length == var2[var3][:output])')
181
- # if x.write.include?('if(var1.realise2(var2[var3][:params]).params[var8].value.length == var2[var3][:output])')
182
- # end
183
- # end
184
- # exit
185
- #initial_chain.first.results = initial_chain.first.results = [initial_chain.first.results[429]]
186
- #initial_chain.first.results = initial_chain.first.results[0..1]
187
- #if(var1.realise2(var2[var3][:params]).params[var4].value.length == var2[var3][:output])
188
-
189
-
190
- # # Quicker version thath uses pre-generated head
191
- # assert_equal(
192
- # true,
193
- # @connector.create_possible_chain_extensions(
194
- # runtime_method,
195
- # test_cases,
196
- # finish,
197
- # [theory_4,theory_5],
198
- # initial_chain
199
- # ).kind_of?(Array)
200
- # )
201
-
202
- # assert_equal(
203
- # true,
204
- # @connector.chain(runtime_method,test_cases,finish,[theory_4,theory_5]).kind_of?(Array)
205
- # )
206
-
207
- # assert_equal(
208
- # true,
209
- # @connector.chain(runtime_method,test_cases,finish,[@theory_3]).all? do |x|
210
- # x.all? {|y| y.kind_of?(Theory)}
211
- # end
212
- # )
213
- # assert_equal(
214
- # true,
215
- # @connector.chain(runtime_method,test_cases,finish,[theory_4,theory_5]).all? do |x|
216
- # x.all? {|y| y.kind_of?(Theory)}
217
- # end
218
- # )
219
- # assert(@connector.chain(runtime_method,test_cases,finish,[theory_4,theory_5]).length > 0)
220
- #
221
-
222
- assert_equal(
223
- true,
224
- @connector.create_possible_chain_extensions(
225
- runtime_method,
226
- test_cases,
227
- finish,
228
- [theory_7,theory_5],
229
- initial_chain
230
- ).any? {|x| x.length > 1 }
231
- )
232
-
233
- end
234
-
235
- def test_with_case_1
236
- theory_1 = Theory.load_theory(20)
237
- # TODO Do I really want theories with out actions I should maybe move the result
238
- # for theory_4 to theory 3. - UPDATE I'm pretty sure I need theories with out
239
- # actions need to confirm.
240
- theory_2 = Theory.load_theory(14)
241
- theory_3 = Theory.load_theory(15)
242
- theory_4 = Theory.load_theory(12)
243
-
244
- # Create the initial starting chain from pre-existing chain
245
- directory_path = $LOC+File.join('test','fixtures','chains','3')
246
- raise StandardError.new("chain 3 does not exist") unless(File.exists?(directory_path))
247
- dump_file = File.open(File.join(directory_path,'dump'),'r')
248
- initial_chain = Marshal.load(dump_file)
249
-
250
- # Create the empty runtime method and test cases
251
- runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
252
- test_case_1 = CTestCase.new
253
- test_case_1[:params] = ['something']
254
- test_case_1[:output] = 'exists'
255
- test_case_2 = CTestCase.new
256
- test_case_2[:params] = ['my willpower']
257
- test_case_2[:output] = 'does not exist'
258
- test_cases = [
259
- test_case_1,test_case_2
260
- ]
261
- finish = Parser.run("if(runtime_method.all_pass?(test_cases))\nreturn true\nend")
262
-
263
- initial_chain.remove_superfluous_head_results!([theory_1,theory_2,theory_3,theory_4])
264
-
265
- # Check that at least one complete chain is created
266
- assert_equal(
267
- true,
268
- @connector.create_possible_chain_extensions(
269
- runtime_method,
270
- test_cases,
271
- finish,
272
- [theory_1,theory_2,theory_3,theory_4],
273
- initial_chain
274
- ).any? {|x| x.length > 1 }
275
- )
276
-
277
- end
278
-
279
- def test_unify_chain_with_a_very_simple_problem
280
-
281
- runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
282
- test_cases = [
283
- {:params=>['sparky'], :output=>6},
284
- {:params=>['kel'], :output=>3}
285
- ]
286
- finish = Parser.run("if(runtime_method.all_pass?(test_cases))\nreturn true\nend")
287
-
288
- theory_4 = Theory.load_theory(4)
289
- theory_5 = Theory.load_theory(5)
290
-
291
- # Update the theries so their variables don't match to start
292
- theory_4 = theory_4.map_to(Mapping.new({1=>TheoryVariable.new(8),2=>TheoryVariable.new(9),3=>TheoryVariable.new(10)}))
293
- theory_5 = theory_5.map_to(Mapping.new({1=>TheoryVariable.new(109),2=>TheoryVariable.new(85),3=>TheoryVariable.new(23)}))
294
-
295
- assert_equal(
296
- Array,
297
- TheoryConnector.new([]).unify_chain([theory_4,theory_5]).class
298
- )
299
- assert_equal(
300
- 1,
301
- TheoryConnector.new([]).unify_chain([theory_4,theory_5].reverse).length
302
- )
303
- TheoryConnector.new([]).unify_chain([theory_4,theory_5].reverse).each do |chain|
304
- chain.each do |theory|
305
- end
306
- end
307
- TheoryConnector.new([]).unify_chain([theory_4,theory_5].reverse).each do |chain|
308
- assert_equal(
309
- 2,
310
- chain.length
311
- )
312
- end
313
- TheoryConnector.new([]).unify_chain([theory_4,theory_5].reverse).each do |chain|
314
- assert_equal(
315
- 3,
316
- chain.uniq_theory_variable_ids.length
317
- )
318
- end
319
-
320
- end
321
-
322
-
323
- def test_chain_with_chop_chop
324
-
325
- theory_1 = Theory.load_theory(16)
326
- theory_2 = Theory.load_theory(17)
327
- theory_3 = Theory.load_theory(18)
328
- #finish = Parser.run("if(runtime_method.pass?(test_cases[0]))\nreturn true\nend")
329
- # [:params = [‘Belfast’], ‘result’ = ‘B’]
330
- test_case_1 = CTestCase.new
331
- test_case_1[:params] = ['Belfast']
332
- test_case_1[:output] = 'B'
333
- test_cases = [
334
- test_case_1
335
- ]
336
- tc = Parser.run('test_cases')
337
- tc_index_0 = IntrinsicLiteral.new(0)
338
- real_method = Parser.run('runtime_method')
339
-
340
- finish = OpenStatement.new(
341
- Statement.new(If.new,Container.new(InstanceCallContainer.new(real_method,Pass.new,ArrayAccess.new(tc,tc_index_0))))
342
- )
343
- finish << Statement.new(Return.new,True.new)
344
- potential_values = MappingValues.new([
345
- tc,
346
- real_method,
347
- tc_index_0,
348
- IntrinsicLiteral.new(0),
349
- Parser.run('last_runtime_method')
350
- ])
351
- runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
352
-
353
- connector = TheoryConnector.new(potential_values)
354
- assert_equal(
355
- 2,
356
- connector.chain(runtime_method,test_cases,finish,[theory_1,theory_2,theory_3]).length
357
- )
358
-
359
- end
360
-
361
- end
@@ -1,153 +0,0 @@
1
- $LOAD_PATH << File.expand_path('../../../../lib',__FILE__)
2
-
3
- require 'required'
4
- require 'test/unit'
5
-
6
- class TestTheoryDependent < Test::Unit::TestCase
7
-
8
- def setup
9
- # TODO Need to include restriction so that theory dependents are always converted to if statements
10
- # @dependent_one = TheoryDependent.new("var1.length = var2.length") - > WRONG!
11
- @dependent_one = TheoryDependent.new(StringToTheory.run("if(var1.length = var2.length)\nend"))
12
- @dependent_two = TheoryDependent.new(StringToTheory.run("if(var1.value.length = var2.length)\nend"))
13
- end
14
-
15
- def teardown
16
- System.reset
17
- RuntimeMethod.reset_global_id
18
- end
19
-
20
- def test_intialize
21
- assert_nothing_raised(){TheoryDependent.new(StringToTheory.run("if(var6 = 7)\nend"))}
22
- assert_nothing_raised(){TheoryDependent.new(StringToTheory.run("if(var6 == 7)\nend"))}
23
- end
24
-
25
- def test_intialize_kind_of_statements
26
- assert_nothing_raised(){TheoryDependent.new(StringToTheory.run("if(var1.kind_of?(RuntimeMethod))\nreturn true\nend"))}
27
- assert_equal(
28
- true,
29
- TheoryDependent.new(StringToTheory.run("if(var1.kind_of?(RuntimeMethod))\nreturn true\nend")).describe.include?('return true')
30
- )
31
- end
32
-
33
- def test_intialize_with_addition_and_comparison
34
- assert_nothing_raised(){
35
- TheoryDependent.new(StringToTheory.run("if((var1 + var2) == var3)\nend"))
36
- }
37
- assert_equal(
38
- 3,
39
- TheoryDependent.new(StringToTheory.run("if((var1 + var2) == var3)\nend")).theory_variables.length
40
- )
41
- end
42
-
43
- def test_intialize_with_block_statements
44
- assert_nothing_raised(){
45
- TheoryDependent.new(StringToTheory.run("if(var1.any? { |x| x.include? var2.statement_id })\nreturn true\nend"))
46
- }
47
- assert_equal(
48
- 2,
49
- TheoryDependent.new(StringToTheory.run("if(var1.any? { |x| x.include? var2.statement_id })\nreturn true\nend")).theory_variables.length
50
- )
51
- end
52
-
53
- def test_intialize_with_if_statement_example
54
- assert_nothing_raised(){
55
- TheoryDependent.new(
56
- StringToTheory.run("if((var1.history(var2[var4][:params]).any?{ |x| x.statement_id == var8.statement_id} ) == false)\nend")
57
- )
58
- }
59
- assert_equal(
60
- 4,
61
- TheoryDependent.new(
62
- StringToTheory.run("if((var1.history(var2[var4][:params]).any?{ |x| x.statement_id == var8.statement_id} ) == false)\nend")
63
- ).theory_variables.length
64
- )
65
- end
66
-
67
- def test_theory_variables
68
- assert_equal(2,@dependent_one.theory_variables.length)
69
- assert_equal(2,@dependent_two.theory_variables.length)
70
- end
71
-
72
- def test_copy
73
- a = StringToTheory.run("if(var1.length = var2.length)\nend")
74
-
75
- end
76
-
77
- def test_rewrite_with
78
- assert_raises(StandardError) {@dependent_one.rewrite_with([])}
79
- assert_equal(
80
- "if(runtime_method.params[0].length = test_cases[0][:output].length)\nend",
81
- @dependent_one.rewrite_with([
82
- InstanceCallContainer.new(IntrinsicRuntimeMethod.new,ArrayAccess.new(Params.new,0)),
83
- HashAccess.new(
84
- ArrayAccess.new(
85
- IntrinsicTestCases.new,
86
- 0
87
- ),
88
- Literal.new(:output)
89
- )
90
- ]).write
91
- )
92
- end
93
-
94
- def test_rewrite_with_using_a_long_replacement
95
- assert_equal(
96
- "if(runtime_method.params[0].value.length = test_cases[0][:output].length)\nend",
97
- @dependent_one.rewrite_with([
98
- Parser.run('runtime_method.params[0].value'),
99
- Parser.run('test_cases[0][:output]')
100
- ]).write
101
- )
102
- end
103
-
104
- def test_rewrite_with_too_few_replacements
105
- assert_raises(StandardError){
106
- @dependent_one.rewrite_with([
107
- Parser.run('runtime_method.params[0].value')
108
- ])
109
- }
110
- end
111
-
112
- def test_rewrite_permutations
113
- base_value_desc = [
114
- Parser.run('runtime_method[:params][0]'),
115
- Parser.run('test_cases[0][:params][0]'),
116
- Parser.run('test_cases[0][:output]'),
117
- Parser.run('test_cases[0][:params][0]'),
118
- Parser.run('test_cases[1][:output]')
119
- ]
120
- assert_equal(20,@dependent_one.rewrite_permutations(base_value_desc).length)
121
- assert_equal(OpenStatement,@dependent_one.rewrite_permutations(base_value_desc).first.class)
122
- end
123
-
124
- def test_map_to_1
125
- dependent_one = TheoryDependent.new(StringToTheory.run("if(var2[var3].kind_of?(CTestCase))\nreturn true\nend"))
126
- mapping = {2=>IntrinsicTestCases.new,3=>Literal.new(0)}
127
- assert_equal(
128
- "if(<test_cases>[0].kind_of?(CTestCase))\n return true\nend\n",
129
- dependent_one.map_to(mapping).describe
130
- )
131
- end
132
-
133
- def test_map_to_2
134
- dependent_two = TheoryDependent.new(StringToTheory.run("if(var6.kind_of?(Fixnum))\nreturn true\nend"))
135
- mapping = {6 => 0.to_literal}
136
- assert_equal(
137
- "if(0.kind_of?(Fixnum))\n return true\nend\n",
138
- dependent_two.map_to(mapping).describe
139
- )
140
- end
141
-
142
- def test_map_to_3
143
- dependent_three = TheoryDependent.new(
144
- StringToTheory.run("if((var2[var3][:params][var6] == var2[var4][:params][var6])==false)\nreturn true\nend")
145
- )
146
- mapping = {2=>IntrinsicTestCases.new,3=>Literal.new(0),6=>0.to_literal,4=>1.to_literal}
147
- assert_equal(
148
- "if((<test_cases>[0][:params][0] == <test_cases>[1][:params][0]) == false)\n return true\nend\n",
149
- dependent_three.map_to(mapping).describe
150
- )
151
- end
152
-
153
- end