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,137 +0,0 @@
1
- $LOAD_PATH << File.expand_path('../../../../lib',__FILE__)
2
-
3
- require 'cauldron'
4
-
5
-
6
- require 'test/unit'
7
-
8
- class TestTheoryImplementation < Test::Unit::TestCase
9
- include ContainsTheories
10
-
11
- def setup
12
- super
13
-
14
- demo_1_test_case_1 = CTestCase.new
15
- demo_1_test_case_1[:params] = ['sparky']
16
- demo_1_test_case_1[:output] = 'sparky'
17
- demo_1_test_case_2 = CTestCase.new
18
- demo_1_test_case_2[:params] = ['kel']
19
- demo_1_test_case_2[:output] = 'kel'
20
- @case_1_test_cases = [
21
- demo_1_test_case_1,demo_1_test_case_2
22
- ]
23
- @case_1_runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
24
-
25
- end
26
-
27
- def teardown
28
- System.reset
29
- RuntimeMethod.reset_global_id
30
- end
31
-
32
- def test_leads_to
33
-
34
- # TODO I need a better way to rebuild the implementations - I need to be able to save the declaration probably
35
- # It could grep the desc.txt for those in the theory - I need to be able to rebuild them.
36
- implementation_0 = load_theory_implementation(0)
37
- finish = Parser.run("if(runtime_method.all_pass?(test_cases))\nreturn true\nend")
38
- assert_equal(
39
- true,
40
- implementation_0.leads_to?(finish)
41
- )
42
- end
43
-
44
- def test_copy
45
- implementation_0 = load_theory_implementation(0)
46
- assert_equal(
47
- implementation_0.describe,
48
- implementation_0.copy.describe
49
- )
50
- end
51
-
52
- # Test the creation of a very simple theory action that just adds a
53
- # return statement to the runtime method.
54
- #
55
- def test_theory_three_implementations
56
- # TODO Need to raise error if number of values available doesn't meet
57
- # the theory. This just doesn't return an permutations if you only
58
- # supply.
59
- # TODO Also need a quick check that all the theories are included in the test suite
60
- values = [
61
- Parser.run('runtime_method'),
62
- Parser.run('test_cases'),
63
- Parser.run('0')
64
- ]
65
- assert_nothing_raised(){@theory_3.rewrite_permutations(values)}
66
- assert_equal(6,@theory_3.rewrite_permutations(values).length)
67
-
68
- #first_imlementation = @theory_3.rewrite_permutations(values).first
69
- # if:
70
- # if(runtime_method.params[0].value.length == test_cases[0][:output])
71
- # end
72
- # action:
73
- # <runtime_method>.add_statement_at(Statement.new(Return.new(), InstanceCallContainer.new(runtime_method.params[0], StringLength.new())),0)
74
- # result:
75
- # runtime_method.all_pass?(test_cases) = true
76
- runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
77
- test_cases = [
78
- {:params=>['sparky'], :output=>6}
79
- ]
80
- first_imlementation = @theory_3.rewrite_permutations(values).first
81
- assert_equal(true,first_imlementation.meets_dependencies?(runtime_method.copy,test_cases))
82
-
83
- test_cases = [
84
- {:params=>['pip'], :output=>3}
85
- ]
86
- first_imlementation = @theory_3.rewrite_permutations(values).first
87
- assert_equal(true,first_imlementation.meets_dependencies?(runtime_method.copy,test_cases))
88
-
89
- # NOTE: Although the theory is strickly speaking wrong here because it only uses the
90
- # first paramter - this fine here though because this method only checks the
91
- # dependencies are met.
92
- test_cases = [
93
- {:params=>['sparky'], :output=>6},
94
- {:params=>['pip'], :output=>3},
95
- ]
96
- first_imlementation = @theory_3.rewrite_permutations(values).first
97
- assert_equal(true,first_imlementation.meets_dependencies?(runtime_method.copy,test_cases))
98
-
99
- end
100
-
101
- def test_meets_dependencies__with_theory_17
102
- # #TODO Uncomment this - it is a valid test
103
- # theory = Theory.load_theory(17)
104
- #
105
- # # Create the runtime method and test cases that should pass the theories dependents
106
- # test_case_1 = CTestCase.new
107
- # test_case_1[:params] = ['waz']
108
- # test_case_1[:output] = 'B'
109
- # test_cases = [
110
- # test_case_1
111
- # ]
112
- # runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
113
- #
114
- # # Create the mapping for the theory
115
- # m = Mapping.new(
116
- # {
117
- # 1=>IntrinsicRuntimeMethod.new,
118
- # 2=>IntrinsicLiteral.new(0),
119
- # 3=>IntrinsicTestCases.new,
120
- # 4=>IntrinsicLiteral.new(0),
121
- # 5=>Parser.run('last_runtime_method')
122
- # }
123
- # )
124
- #
125
- # # Add the statement to the runtime method to make the dependent correct
126
- # s = BlockStatement.new(Statement.new(InstanceCallContainer.new(Container.new(InstanceCallContainer.new(runtime_method.params[0], StringLength.new), Subtract.new, 1), Times.new)))
127
- # runtime_method.push(s)
128
- #
129
- # implementation = theory.map_to(m)
130
- # pp runtime_method.history2(test_cases[0][:params])
131
- # assert_equal(
132
- # true,
133
- # implementation.meets_dependencies?(runtime_method,test_cases)
134
- # )
135
- end
136
-
137
- end
@@ -1,112 +0,0 @@
1
- $LOAD_PATH << File.expand_path('../../../../lib',__FILE__)
2
-
3
- require 'required'
4
- require 'test/unit'
5
-
6
- class TestTheoryResult < Test::Unit::TestCase
7
- include ContainsTheories
8
-
9
- def setup
10
-
11
- end
12
-
13
- def teardown
14
- System.reset
15
- RuntimeMethod.reset_global_id
16
- end
17
-
18
- def test_intialize_1
19
- # assert_equal(
20
- # "if(<runtime_method>.all_pass?(<test_cases>))\nreturn true\nend",
21
- # TheoryResult.new(Parser.run("if(runtime_method.all_pass?(test_cases))\nreturn true\nend")).describe
22
- # )
23
- end
24
-
25
- def test_intialize_3
26
- assert_equal(
27
- "if(#{TheoryVariable.variable_colour(1)}var1#{TheoryVariable::NORMAL}.length == #{TheoryVariable.variable_colour(2)}var2#{TheoryVariable::NORMAL})\n return true\nend\n",
28
- TheoryResult.new(
29
- StringToTheory.run("if(var1.length == var2)\n return true\nend")
30
- ).describe
31
- )
32
- end
33
-
34
- def test_validates_2
35
-
36
- implementation = load_theory_implementation(2)
37
-
38
- # TODO Should have the runtime method as a fixture so this evaluation isn't necessary
39
- runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))
40
- test_cases = [
41
- {:params=>['sparky'], :output=>'sparky'.length},
42
- {:params=>['pip'], :output=>'pip'.length},
43
- {:params=>['roweIAGE'], :output=>'roweIAGE'.length},
44
- ]
45
- evaluation_code = ''
46
- evaluation_code += "test_cases = #{test_cases.write}"+"\n"
47
- evaluation_code += "runtime_method = RuntimeMethod.new(MethodUsage.new(MethodParameter.new))"+"\n"
48
- evaluation_code += 'runtime_method.add_statement_at(Statement.new(Return.new, runtime_method.params[0]),runtime_method.statement_id)'+"\n"
49
-
50
- evaluation_code += 'return runtime_method'+"\n"
51
- result = CodeEvaluation.new.evaluate_code(evaluation_code)
52
- assert(true,implementation.results.all? {|x| x.validates?(result,test_cases)})
53
-
54
- end
55
-
56
- def test_same_structure_1
57
- # TODO Fixtures should include implemented TheoryResult and TheoryResults - I don't like using first
58
- implementation = load_theory_implementation(1)
59
- theory = Theory.load_theory(1)
60
-
61
- implemented_result = load_implementation_result(0)
62
- theory_result = theory.results.first
63
-
64
- assert_equal(
65
- true,
66
- theory_result.same_structure?(implemented_result.statement)
67
- )
68
- end
69
-
70
- def test_same_structure_4
71
- # TODO Fixtures should include implemented TheoryResult and TheoryResults - I don't like using first
72
- theory = Theory.load_theory(4)
73
- implemented_result = load_implementation_result(0)
74
- theory_result = theory.results.first
75
- assert_equal(
76
- false,
77
- theory_result.same_structure?(implemented_result.statement)
78
- )
79
- end
80
-
81
- def test_map_to_with_case_1_theory_1
82
- result_one = TheoryResult.new(StringToTheory.run(
83
- "if(var1.history(var2[var3][:params]).any? { |x| x.statement_id == var1.last.statement_id })\nreturn true\nend"
84
- ))
85
- mapping = {
86
- 1=>IntrinsicRuntimeMethod.new,
87
- 2=>IntrinsicTestCases.new,
88
- 3=>Literal.new(0),
89
- 4=>1.to_literal,
90
- 6=>0.to_literal
91
- }
92
- assert_equal(
93
- "if(<runtime_method>.history(<test_cases>[0][:params]).any?{ |x| x.statement_id == <runtime_method>.last.statement_id} )\n return true\nend\n",
94
- result_one.map_to(mapping).describe
95
- )
96
- end
97
-
98
- def test_map_to_with_example_1
99
- result = TheoryResult.new(
100
- StringToTheory.run("if((var1.params[var3].length == var1) == false)\nreturn true\nend")
101
- )
102
- mapping = {
103
- 1=>IntrinsicRuntimeMethod.new,
104
- 3=>IntrinsicLiteral.new(0)
105
- }
106
- assert_equal(
107
- "if((runtime_method.params[0].length == runtime_method) == false)\n return true\nend",
108
- result.map_to(mapping).write
109
- )
110
- end
111
-
112
- end
@@ -1,45 +0,0 @@
1
- require 'required'
2
- require 'test/unit'
3
-
4
- class TestTheoryVariable < Test::Unit::TestCase
5
-
6
- def setup
7
-
8
- end
9
-
10
- def teardown
11
- System.reset
12
- RuntimeMethod.reset_global_id
13
- end
14
-
15
- def test_initialize
16
- assert_nothing_raised(){TheoryVariable.new(8)}
17
- assert_raise(ArgumentError) {TheoryVariable.new}
18
- end
19
-
20
- def test_write
21
- assert_equal(
22
- TheoryVariable.new(7).describe,
23
- "#{TheoryVariable.variable_colour(7)}var7#{TheoryVariable::NORMAL}"
24
- )
25
- assert_not_equal(
26
- TheoryVariable.new(14).write,
27
- "#{TheoryVariable.variable_colour(7)}var7#{TheoryVariable::NORMAL}"
28
- )
29
- end
30
-
31
- def test_to_declaration
32
- assert_equal(TheoryVariable.new(9).to_declaration.write,'TheoryVariable.new(9)')
33
- assert_not_equal(TheoryVariable.new(10).to_declaration.write,'TheoryVariable.new(9)')
34
- end
35
-
36
- def test_subtacting_arrays
37
- var8 = TheoryVariable.new(8)
38
- var7 = TheoryVariable.new(7)
39
- varX = TheoryVariable.new(8)
40
- assert_equal(varX.theory_variable_id,var8.theory_variable_id)
41
- assert_equal(var7.theory_variable_id,7)
42
- assert_equal(1, ([var8,var7]-[varX]).length)
43
- end
44
-
45
- end
@@ -1,101 +0,0 @@
1
- $LOAD_PATH << File.expand_path('../../../../lib',__FILE__)
2
-
3
- require 'required'
4
- require 'test/unit'
5
-
6
- class TestMethodValidation < Test::Unit::TestCase
7
-
8
- def setup
9
- end
10
-
11
- def teardown
12
- System.reset
13
- RuntimeMethod.reset_global_id
14
- end
15
-
16
- # def test_self_generate
17
- #
18
- # # Check that a simple method to check the class of a runtime method instance can be created
19
- # validation_test_1 = MethodValidation.generate_attribute_test('.class.to_s == "RuntimeMethod"' )
20
- # assert(validation_test_1.kind_of?(RuntimeMethod))
21
- # assert_equal(
22
- # true,
23
- # MethodValidation.new.use_runtime_method(
24
- # validation_test_1,
25
- # ParametersContainer.new(RuntimeMethod.new(MethodUsage.new).to_declaration)
26
- # )
27
- # )
28
- #
29
- # # Create the method that should be evaluated correctly
30
- # test_2_method = RuntimeMethod.new(MethodUsage.new)
31
- # test_2_method.push Statement.new(Return.new,'Lilly'.to_literal)
32
- #
33
- # # Test that a runtime method returns 'Lilly'
34
- # validation_test_2 = MethodValidation.generate_response_test(" == 'Lilly'",[])
35
- # assert(validation_test_2.kind_of?(RuntimeMethod))
36
- # assert_equal(
37
- # true,
38
- # MethodValidation.new.use_runtime_method_2(validation_test_2,test_2_method)
39
- # )
40
- # validation_test_3 = MethodValidation.generate_response_test(" != 'Lilly'",[])
41
- # assert_equal(
42
- # false,
43
- # MethodValidation.new.use_runtime_method_2(validation_test_3,test_2_method)
44
- # )
45
- # #
46
- # # # Test that a runtime method returns the value it is passed
47
- # # test_3_param_1 = MethodParameter.new
48
- # # test_3_method = RuntimeMethod.new(MethodUsage.new(test_3_param_1))
49
- # # test_3_method.push(Statement.new(Return.new,test_3_param_1))
50
- # # test_3_validation = MethodValidation.generate(
51
- # # {:condition=>' == "Pip"',:target=>'response',:params=>['Pip'.to_literal],:runtime_method=>test_3_method})
52
- # # assert_equal(
53
- # # 'Pip',
54
- # # MethodValidation.new.use_runtime_method(
55
- # # test_3_validation,ParametersContainer.new(test_3_method.to_declaration)
56
- # # )
57
- # # )
58
- #
59
- #
60
- # end
61
-
62
-
63
- def test_use_runtime_method
64
-
65
- # Test that the following runtime method returns true
66
- # def method_0
67
- # return true
68
- # end
69
- method_0 = RuntimeMethod.new(MethodUsage.new)
70
- method_0.push Statement.new(Return.new,True.new)
71
- assert_equal(true,MethodValidation.new.use_runtime_method(method_0))
72
-
73
- # Test that the following runtime method returns 'Kelly'
74
- # def method_1
75
- # return 'Kelly'
76
- # end
77
- method_1 = RuntimeMethod.new(MethodUsage.new)
78
- method_1.push Statement.new(Return.new,'Kelly'.to_literal)
79
- assert_equal('Kelly',MethodValidation.new.use_runtime_method(method_1))
80
- assert_not_equal('kelly',MethodValidation.new.use_runtime_method(method_1))
81
-
82
- # Test that this method returns the string passed to it
83
- # def method_2(param_1)
84
- # return param_1
85
- # end
86
- method_2_param_1 = MethodParameter.new
87
- method_2 = RuntimeMethod.new(MethodUsage.new(method_2_param_1))
88
- method_2.push Statement.new(Return.new,method_2_param_1)
89
- assert_equal('Marc',MethodValidation.new.use_runtime_method(method_2,ParametersContainer.new('Marc'.to_literal)))
90
-
91
- # Test that this method adds both of the numbers and returns it
92
- method_3_param_1, method_3_param_2 = MethodParameter.new, MethodParameter.new
93
- method_3 = RuntimeMethod.new(MethodUsage.new(method_3_param_1,method_3_param_2))
94
- method_3_unknown_1 = Unknown.new
95
- method_3.push Statement.new(method_3_unknown_1,Equal.new,method_3_param_1,Addition.new,method_3_param_2)
96
- assert_equal(8,MethodValidation.new.use_runtime_method(method_3,ParametersContainer.new(2.to_literal,6.to_literal)))
97
- assert_not_equal(9,MethodValidation.new.use_runtime_method(method_3,ParametersContainer.new(2.to_literal,6.to_literal)))
98
-
99
- end
100
-
101
- end
@@ -1,110 +0,0 @@
1
- $LOAD_PATH << File.expand_path('../../../../lib',__FILE__)
2
-
3
- require 'required'
4
- require 'test/unit'
5
-
6
- class TestParser < Test::Unit::TestCase
7
-
8
- def setup
9
-
10
- end
11
-
12
- def teardown
13
-
14
- end
15
-
16
- def test_run_with_literal_number_conversion
17
- assert_equal('9',Parser.run('9').write)
18
- assert_not_equal('9',Parser.run('10').write)
19
- end
20
-
21
- def test_run_with_literal_string_conversion
22
- assert_equal("'test'",Parser.run("'test'").write)
23
- assert_equal("'10 million fireflies'",Parser.run("'10 million fireflies'").write)
24
- end
25
-
26
- def test_run_with_single_variable
27
- assert_equal('var_8',Parser.run('var8').write)
28
- end
29
-
30
- def test_run_with_a_instance_method_call
31
- assert_equal('var_8.length',Parser.run('var8.length').write)
32
- assert(Parser.run('var8.length').kind_of?(InstanceCallContainer))
33
- end
34
-
35
- def test_run_with_a_literal_method_call
36
- assert_equal("'new vegas'.length",Parser.run("'new vegas'.length").write)
37
- end
38
-
39
- def test_run_with_intrinsic_runtime_method
40
- assert_equal('runtime_method.params',Parser.run('runtime_method.params').write)
41
- assert_equal('runtime_method.params[0]',Parser.run('runtime_method.params[0]').write)
42
- assert_equal('test_cases[0]',Parser.run('test_cases[0]').write)
43
- assert_equal('test_cases[0][:output]',Parser.run('test_cases[0][:output]').write)
44
- assert_equal('test_cases[0].params[0]',Parser.run('test_cases[0].params[0]').write)
45
- assert_equal('runtime_method.params[0].value',Parser.run('runtime_method.params[0].value').write)
46
- end
47
-
48
- def test_run_with_array_elements
49
- assert_equal('var_6[8]',Parser.run('var6[8]').write)
50
- end
51
-
52
- def test_run_with_return_statement
53
- assert_equal('return true',Parser.run('return true').write)
54
- assert_equal('Statement',Parser.run('return true').class.to_s)
55
- end
56
-
57
- def test_run_with_theory_result_1
58
- assert_equal(
59
- 'runtime_method.all_pass?(test_cases)',
60
- Parser.run('runtime_method.all_pass?(test_cases)').write
61
- )
62
- end
63
-
64
- def test_run_with_next
65
- assert_equal(
66
- 'next',
67
- Parser.run('next').write
68
- )
69
- end
70
-
71
- def test_run_with_push
72
- assert_equal(
73
- 'var_1.push(8)',
74
- Parser.run('var1.push(8)').write
75
- )
76
- end
77
-
78
- def test_run_adding_two_variables
79
- assert_equal(
80
- 'var_1 = var_2 + var_3',
81
- Parser.run('var1 = var2 + var3').write
82
- )
83
- end
84
-
85
- def test_run_with_history_call
86
- assert_equal(
87
- 'var_1.history(var_2)',
88
- Parser.run('var1.history(var2)').write
89
- )
90
- end
91
-
92
- def test_run_with_a_populated_if_statement
93
- assert_equal(
94
- "if(runtime_method.all_pass?(test_cases))\nend",
95
- Parser.run("if(runtime_method.all_pass?(test_cases))\nend").write
96
- )
97
- assert_equal(
98
- "if(runtime_method.all_pass?(test_cases))\n return true\nend",
99
- Parser.run("if(runtime_method.all_pass?(test_cases))\nreturn true\nend").write
100
- )
101
- end
102
-
103
- def test_run_when_adding_a_number_and_fixnum
104
- assert_equal(
105
- "var_2 = var_5.chop + var_2",
106
- Parser.run("var2 = var5.chop + var2").write
107
- )
108
- end
109
-
110
- end