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,336 +0,0 @@
1
- require 'required'
2
- require 'test/unit'
3
-
4
- class TestTheoryGenerator < Test::Unit::TestCase
5
- include ContainsTheories
6
-
7
- def setup
8
-
9
- test_case_1 = CTestCase.new
10
- test_case_1[:params] = ['something']
11
- test_case_1[:output] = 'exists'
12
- test_case_2 = CTestCase.new
13
- test_case_2[:params] = ['my willpower']
14
- test_case_2[:output] = 'does not exist'
15
- @set_1_test_cases = [
16
- test_case_1,test_case_2
17
- ]
18
- @runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
19
-
20
- end
21
-
22
- def teardown
23
- System.reset
24
- RuntimeMethod.reset_global_id
25
- end
26
-
27
- def test_initialize
28
- assert_nothing_raised(){TheoryGenerator.new}
29
- end
30
-
31
- # This is testing the generator for the problem that can be solved with
32
- # the following solution:
33
- #
34
- # def identifyType(word)
35
- # if(word == ‘go’)
36
- # return ‘verb’
37
- # end
38
- # return ‘adjective’
39
- # end
40
- #
41
- def test_generate_with_first_case
42
- test_case_1 = CTestCase.new
43
- test_case_1[:params] = ['something']
44
- test_case_1[:output] = 'exists'
45
- test_case_2 = CTestCase.new
46
- test_case_2[:params] = ['my willpower']
47
- test_case_2[:output] = 'does not exist'
48
- test_cases = [
49
- test_case_1,test_case_2
50
- ]
51
- runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
52
-
53
- end
54
-
55
- def test_generate_theories_for_actions
56
-
57
- # The folling are the actions that need included in the statement to solve the problem
58
- # var1 = RuntimeMethod, var2 = test_cases, var3 = 0, var4 = 0
59
- action_one = TheoryAction.new(
60
- TheoryStatement.new(StringToTheory.run(
61
- 'Statement.new(If.new,Container.new(var2[var3][:params][var4],Equivalent.new,var2[var3][:output]))'
62
- )
63
- ),
64
- StringToTheory.run('var1.statement_id')
65
- )
66
- action_two = TheoryAction.new(
67
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var3][:output])')),
68
- StringToTheory.run('var1.last.statement_id')
69
- )
70
- action_three = TheoryAction.new(
71
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var4][:output])')),
72
- StringToTheory.run('var1.statement_id')
73
- )
74
- actions = [action_one,action_two,action_three]
75
-
76
- end
77
-
78
- def test_actions_validate_runtime_method
79
-
80
- # The folling are the actions that need included in the statement to solve the problem
81
- # var1 = RuntimeMethod, var2 = test_cases, var3 = 0, var4 = 0
82
- action_one = TheoryAction.new(
83
- TheoryStatement.new(StringToTheory.run(
84
- 'Statement.new(If.new,Container.new(var2[var3][:params][var4],Equivalent.new,var2[var3][:output]))'
85
- )
86
- ),
87
- StringToTheory.run('var1.statement_id')
88
- )
89
- action_two = TheoryAction.new(
90
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var3][:output])')),
91
- StringToTheory.run('var1.last.statement_id')
92
- )
93
- action_three = TheoryAction.new(
94
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var4][:output])')),
95
- StringToTheory.run('var1.statement_id')
96
- )
97
- actions = [action_one,action_two,action_three]
98
- generator = TheoryGenerator.new
99
- generator.actions_validate_runtime_method?(@runtime_method,@test_cases,actions)
100
-
101
- end
102
-
103
- def test_generate_theories_with_some_simple_cases
104
-
105
- @set_1_test_cases
106
- @runtime_method
107
- mapping = Mapping.new({
108
- 1 => @runtime_method.copy,
109
- 2 => @set_1_test_cases.copy
110
- })
111
- accessors = [
112
- {:value=>@runtime_method.copy,:statement=>TheoryStatement.new(TheoryVariable.new(1)),:step=>0},
113
- {:value=>@set_1_test_cases.copy,:statement=>TheoryStatement.new(TheoryVariable.new(2)),:step=>0}
114
- ]
115
- # TODO I can probably use the runtime method and test case in the mapping
116
- assert_kind_of(
117
- Array,TheoryGenerator.new.generate_theories(@set_1_test_cases,@runtime_method,accessors,mapping)
118
- )
119
- assert_equal(
120
- true,
121
- TheoryGenerator.new.generate_theories(@set_1_test_cases,@runtime_method,accessors,mapping).all? {|x| x.kind_of?(Theory)}
122
- )
123
-
124
- end
125
-
126
- def test_extend_accessors_with_some_simple_cases
127
-
128
- @set_1_test_cases
129
- @runtime_method
130
- mapping = Mapping.new({
131
- 1 => @runtime_method.copy,
132
- 2 => @set_1_test_cases.copy
133
- })
134
- accessors = [
135
- {:value=>@runtime_method.copy,:statement=>TheoryStatement.new(TheoryVariable.new(1)),:step=>0},
136
- {:value=>@set_1_test_cases.copy,:statement=>TheoryStatement.new(TheoryVariable.new(2)),:step=>0}
137
- ]
138
- assert_equal(
139
- 2,
140
- TheoryGenerator.new.extend_accessors(accessors,mapping,[0,1,2],0).length
141
- )
142
- assert_equal(
143
- 9,
144
- TheoryGenerator.new.extend_accessors(accessors,mapping,[0,1,2],1).length
145
- )
146
- # Check that the two test case access has been added e.g. test_case[var3], test_case[var4]
147
- assert_equal(4,mapping.length)
148
-
149
- # NOTE: The step is NOT the number of itterations - it determines what accessors are available
150
- # to construct new statements.
151
- assert_equal(
152
- 2,
153
- TheoryGenerator.new.extend_accessors(accessors,mapping,[0,1,2],2).length
154
- )
155
- end
156
-
157
- def test_statements_with_first_case
158
-
159
- potential_values = MappingValues.new([@set_1_test_cases,@runtime_method])
160
- generator = TheoryGenerator.new
161
-
162
- # Test one itteration mapping has the correct number of accessors
163
- one_itteration_accessors, one_itteration_mapping = generator.generate_accessors_and_mapping(@set_1_test_cases,@runtime_method,1)
164
- assert_equal(one_itteration_accessors.length,one_itteration_accessors.uniq.length)
165
- assert_equal(9,one_itteration_accessors.length)
166
- assert_equal(4,one_itteration_mapping.length)
167
-
168
- two_itteration_accessors, two_itteration_mapping = generator.generate_accessors_and_mapping(@set_1_test_cases,@runtime_method,2)
169
- assert_equal(two_itteration_accessors.length,two_itteration_accessors.collect {|x| x[:statement].write}.uniq.length)
170
- assert_equal(18,two_itteration_accessors.length)
171
- assert_equal(5,two_itteration_mapping.length)
172
-
173
- three_itteration_accessors, three_itteration_mapping = generator.generate_accessors_and_mapping(@set_1_test_cases,@runtime_method,3)
174
- assert_equal(29,three_itteration_accessors.length)
175
- assert_equal(7,three_itteration_mapping.length)
176
- assert_equal(three_itteration_accessors.length,three_itteration_accessors.collect {|x| x[:statement].write}.uniq.length)
177
-
178
- # TODO Need to check why four itteration doesn't have any effect
179
- end
180
-
181
- # Check that indexes are re-used. This allows the test case params to referer to the
182
- # same param in the runtime method.
183
- #
184
- # var1.params[var5] == var2[var3][:params][var5]
185
- # NOTE: var5 are the same reference
186
- #
187
- def test_indexes_are_shared
188
- potential_values = MappingValues.new([@set_1_test_cases,@runtime_method])
189
- generator = TheoryGenerator.new
190
- accessors, mapping = generator.generate_accessors_and_mapping(@set_1_test_cases,@runtime_method,3)
191
- assert_equal(true,accessors.any? {|x| x[:statement].write == 'var1.params[var5]'})
192
- assert_equal(true,accessors.any? {|x| x[:statement].write == 'var2[var3][:params][var5]'})
193
- end
194
-
195
- # Checks that the theory to add the 'return 'does not exist' statement is generated
196
- # return var2[var4][:params][var5]
197
- #
198
- def test_generate_theories_with_case_1_statement_2
199
-
200
- # Create the runtime method with and add the initial "ifstatement" to it
201
- @runtime_method << Parser.run("if(var0 == 'my willpower')\nend\n")
202
-
203
- # Create the mapping for the generator
204
- mapping = Mapping.new({1 => @runtime_method.copy,2 => @set_1_test_cases.copy})
205
- mapping[3] = 0
206
- mapping[4] = 0
207
- mapping[5] = 1
208
- # TODO Should it generate 7 variables surely 6,7 refer to [var2][var3][:params][var6] and [var2][var4][:params][var7]
209
- # - I might only want var6 since you can't right code to account for the difference. - Warren this is a proper
210
- # don't ignore it.
211
- mapping[6] = 0
212
- mapping[7] = 0
213
-
214
- # Create the accessors used to generate the action
215
- accessors = [
216
- {:value=>'does not exist',:statement=>StringToTheory.run('var2[var4][:params][var5]')},
217
- {:value=>1,:statement=>StringToTheory.run('var1.last.statement_id')}
218
- ]
219
- assert_equal('var2[var4][:params][var5]',accessors[0][:statement].write)
220
-
221
- # Check that all the accessors could be generated
222
- generated_accessors, mapping = TheoryGenerator.new.generate_accessors_and_mapping(@set_1_test_cases,@runtime_method,3)
223
- accessors.each do |accessor|
224
- assert(generated_accessors.any? {|x| x[:statement].write == accessor[:statement].write })
225
- end
226
-
227
- # Generate possible theories given the limited number of accessors
228
- theories = TheoryGenerator.new.generate_theories(@set_1_test_cases,@runtime_method,accessors,mapping)
229
- assert_equal(
230
- true,
231
- theories.any? do |theory|
232
- theory.action.write == '<runtime_method>.add_statement_at(Statement.new(Return.new, var2[var4][:params][var5]),var1.last.statement_id)'
233
- end
234
- )
235
-
236
- end
237
-
238
- def test_generate_theories_with_case_1_statement_3
239
-
240
- # Create the runtime method with and add the initial "ifstatement" to it
241
- @runtime_method << Parser.run("if(var0 == 'my willpower')\nend\n")
242
- @runtime_method.add_statement_at(Parser.run("return 'does not exist'"),@runtime_method.last.statement_id)
243
-
244
- # Create the mapping for the generator
245
- mapping = Mapping.new({1 => @runtime_method.copy,2 => @set_1_test_cases.copy})
246
- mapping[3] = 0
247
- mapping[4] = 0
248
- mapping[5] = 1
249
- # TODO Should it generate 7 variables surely 6,7 refer to [var2][var3][:params][var6] and [var2][var4][:params][var7]
250
- # - I might only want var6 since you can't right code to account for the difference.
251
- mapping[6] = 0
252
- mapping[7] = 0
253
-
254
- # Create the accessors used to generate the action
255
- accessors = [
256
- {:value=>'exists',:statement=>StringToTheory.run('var2[var4][:output]')},
257
- {:value=>0,:statement=>StringToTheory.run('var1.statement_id')}
258
- ]
259
- assert_equal('var2[var4][:output]',accessors[0][:statement].write)
260
-
261
- # Check that all the accessors could be generated
262
- generated_accessors, mapping = TheoryGenerator.new.generate_accessors_and_mapping(@set_1_test_cases,@runtime_method,3)
263
- accessors.each do |accessor|
264
- assert(generated_accessors.any? {|x| x[:statement].write == accessor[:statement].write })
265
- end
266
-
267
- end
268
-
269
- def test_simple_chain_head_creation
270
-
271
- # Create the simple runtime method and test cases used to create the head
272
- runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
273
- sparky = CTestCase.new
274
- sparky[:params] = ['sparky']
275
- sparky[:output] = 'sparky'
276
- pip = CTestCase.new
277
- pip[:params] = ['pip']
278
- pip[:output] = 'pip'
279
- test_cases = [
280
- sparky,pip
281
- ]
282
-
283
- # Generate the head theory - this is the starting point and doesn't have any dependents
284
- accessors, mapping = TheoryGenerator.new.generate_accessors_and_mapping(test_cases,runtime_method,4,0)
285
-
286
- # * Generate all the possible results of this runtime method
287
- theory_results = TheoryGenerator.new.get_theory_results(accessors)
288
-
289
- # * Create the actual head theory
290
- head_theory = Theory.new([],nil,theory_results,runtime_method.copy)
291
-
292
- # Check that the generated theory can be implemented - and all the variables have been replaced
293
- intrinsic_mapping = TheoryGenerator.new.covert_to_intrinsic_mapping(mapping)
294
-
295
- # Go through each result and check that the variables can be mapped to intrinsic values
296
- head_theory.results.each do |res|
297
- mapped_res = res.map_to(intrinsic_mapping)
298
- assert_equal(false,mapped_res.write.include?('var'))
299
- end
300
-
301
- implemented_thoery = head_theory.map_to(intrinsic_mapping)
302
- assert_not_equal(
303
- true,
304
- implemented_thoery.write.include?('var')
305
- )
306
-
307
- end
308
-
309
- def test_generate_accessors_and_mapping_with_theory_6
310
-
311
- runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
312
- sparky = CTestCase.new
313
- sparky[:params] = ['sparky']
314
- sparky[:output] = 'sparky'
315
- pip = CTestCase.new
316
- pip[:params] = ['pip']
317
- pip[:output] = 'pip'
318
- test_cases = [
319
- sparky,pip
320
- ]
321
-
322
- # Generate the head theory - this is the starting point and doesn't have any dependents
323
- accessors, mapping = TheoryGenerator.new.generate_accessors_and_mapping(test_cases,runtime_method,7,0)
324
-
325
- # * Generate all the possible results of this runtime method
326
- theory_results = TheoryGenerator.new.get_theory_results(accessors)
327
-
328
- # Check that the results (that would be used in the head) include each do theory_6's dependents
329
- theory_6 = Theory.load_theory(6)
330
- theory_6.dependents.each do |theory_dependent|
331
- assert_equal(true,theory_results.any? {|x| x.write == theory_dependent.write})
332
- end
333
-
334
- end
335
-
336
- end
@@ -1,42 +0,0 @@
1
- require 'required'
2
- require 'test/unit'
3
-
4
- class TestTheoryGenerator < Test::Unit::TestCase
5
-
6
- def setup
7
-
8
- test_case_1 = CTestCase.new
9
- test_case_1[:params] = ['something']
10
- test_case_1[:output] = 'exists'
11
- test_case_2 = CTestCase.new
12
- test_case_2[:params] = ['my willpower']
13
- test_case_2[:output] = 'does not exist'
14
- @set_1_test_cases = [
15
- test_case_1,test_case_2
16
- ]
17
- @runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
18
-
19
- end
20
-
21
- def teardown
22
- System.reset
23
- RuntimeMethod.reset_global_id
24
- end
25
-
26
- # Checks that the first statement "if(var == 'my willpower')" can be generated
27
- #
28
- # test time: 37mins
29
- #
30
- def test_generate_theories_with_case_1_statement_1
31
-
32
- accessors, mapping = TheoryGenerator.new.generate_accessors_and_mapping(@set_1_test_cases,@runtime_method,3)
33
- theories = TheoryGenerator.new.generate_theories(@set_1_test_cases,@runtime_method,accessors,mapping)
34
- assert_equal(
35
- true,
36
- theories.any? do |x|
37
- x.write == '<runtime_method>.add_statement_at(OpenStatement.new(Statement.new(If.new,Container.new(var1.params[var5], Equivalent.new, var2[var3][:params][var5]))),var1.statement_id)'
38
- end
39
- )
40
- end
41
-
42
- end
@@ -1,104 +0,0 @@
1
- $LOAD_PATH << File.expand_path('../../../../../lib',__FILE__)
2
-
3
- require 'required'
4
- require 'test/unit'
5
-
6
- class TestHistory < Test::Unit::TestCase
7
-
8
- def setup
9
-
10
- # Create the initial runtime method instance for testing
11
- @simple_runtime_method = RuntimeMethod.new(MethodUsage.new,nil.to_var)
12
-
13
- # Create a method that is passed a string
14
- @grim_fandango_method_var = MethodParameter.new
15
- @grim_fandango = 'Grim Fandango'.to_var(@grim_fandango_method_var.variable_id)
16
- @string_runtime_method = RuntimeMethod.new(MethodUsage.new(@grim_fandango_method_var),nil)
17
-
18
- end
19
-
20
- def teardown
21
- System.reset
22
- RuntimeMethod.reset_global_id
23
- end
24
-
25
- def test_initialize
26
-
27
- end
28
-
29
- def test_find_steps_with_variable
30
-
31
- # Add 'var_b = var_a.chop'
32
- b_equals_A_chop = Statement.new(Unknown.new,Equal.new,InstanceCallContainer.new(@grim_fandango_method_var,Chop.new))
33
- @string_runtime_method.push(b_equals_A_chop)
34
- assert_equal(
35
- 2,
36
- @string_runtime_method.history([@grim_fandango]).find_steps_with_variable(
37
- @grim_fandango_method_var.variable_id
38
- ).length
39
- )
40
- assert_equal(1,@string_runtime_method.history(ParametersContainer.new(@grim_fandango)).find_steps_with_variable(b_equals_A_chop.declared_variable_id).length)
41
-
42
- end
43
-
44
- # ================= CUSTOM ====================
45
-
46
- def test_history_call_through_runtime_method
47
-
48
- # Check that a essentially empty history object is returned
49
- assert(@simple_runtime_method.history(ParametersContainer.new).kind_of?(History))
50
-
51
- # Check that a runtime method that includes a string returns properly
52
- assert(@string_runtime_method.history(ParametersContainer.new(@grim_fandango)).kind_of?(History))
53
- assert_equal(1,@string_runtime_method.history(ParametersContainer.new(@grim_fandango)).length)
54
-
55
- # Add 'var_b = var_a.chop'
56
- b = Unknown.new
57
- b_equals_A_chop = Statement.new(b,Equal.new,InstanceCallContainer.new(@grim_fandango_method_var,Chop.new))
58
- @string_runtime_method.push(b_equals_A_chop)
59
- after_one_statement = @string_runtime_method.history(ParametersContainer.new(@grim_fandango))
60
- assert_equal(2,after_one_statement.length)
61
-
62
- # Check that the correct number of variables are retained at each stage
63
- assert_equal(1,after_one_statement[0]['variables'].length)
64
- assert_equal(2,after_one_statement[1]['variables'].length)
65
-
66
- # Check that the variable has the correct id
67
- assert_equal(true,after_one_statement[1]['variables'].any? {|x| x['id']== b_equals_A_chop.declared_variable_id})
68
-
69
- # Confirm that all the saved variables have the correct ids
70
- found_steps = after_one_statement.find_steps_with_variable(@grim_fandango.variable_id)
71
- found_steps.each do |x|
72
- found_steps.each do |y|
73
- assert_equal(x.find_data_for_variable(@grim_fandango.variable_id)['abs_id'],y.find_data_for_variable(@grim_fandango.variable_id)['abs_id'])
74
- end
75
- end
76
-
77
- # Add a length statement
78
- c = Unknown.new
79
- c_equals_a_length = Statement.new(c,Equal.new,InstanceCallContainer.new(b,StringLength.new))
80
- @string_runtime_method.push(c_equals_a_length)
81
-
82
- # Confirm that there are now 3 steps in the history
83
- assert_equal(3,@string_runtime_method.history(ParametersContainer.new(@grim_fandango)).length)
84
-
85
- # Add the first nested statement to the method.
86
- c_times = Statement.new(InstanceCallContainer.new(c,Times.new))
87
- c_time_do = BlockStatement.new(c_times)
88
- @string_runtime_method.push(c_time_do)
89
-
90
- # Confirm that each part of the statement is tracked
91
- assert_equal(16,@string_runtime_method.history(ParametersContainer.new(@grim_fandango)).length)
92
-
93
- end
94
-
95
- def test_history_call_through_runtime_method_using_complex_method
96
-
97
- # Add a length statement
98
- c = Unknown.new
99
- c_equals_a_length = Statement.new(c,Equal.new,InstanceCallContainer.new(@grim_fandango,StringLength.new))
100
- @string_runtime_method.push(c_equals_a_length)
101
-
102
- end
103
-
104
- end