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,531 +0,0 @@
1
- $LOAD_PATH << File.expand_path('../../../lib',__FILE__)
2
-
3
- require 'cauldron'
4
-
5
- require 'test/unit'
6
-
7
- class TestTheory < Test::Unit::TestCase
8
- include ContainsTheories
9
-
10
- def setup
11
- super
12
- end
13
-
14
- def teardown
15
- System.reset
16
- RuntimeMethod.reset_global_id
17
- end
18
-
19
- # Attempt to create a very basic theory that basic says the following.
20
- #
21
- # If two variables have the same length then adding a return statement
22
- # which returns the first variable will result in the runtime method being
23
- # valid for all the cases.
24
- #
25
- def test_initialize_1
26
-
27
- # Create the single requirement
28
- dependent_one = TheoryDependent.new(StringToTheory.run("if(var1.length == var2.length)\nend"))
29
- action_one = TheoryAction.new(StringToTheory.run('return var1'),StringToTheory.run('var1.statement_id'))
30
- result_one = TheoryResult.new(Parser.run("if(runtime_method.all_pass?(test_cases))\nreturn true\nend"),true)
31
- assert_nothing_raised(){Theory.new([dependent_one],action_one,[result_one])}
32
-
33
- end
34
-
35
- # Test the creation of a theory that has a theory variable in the action that isn't
36
- # in any dependents.
37
- #
38
- def test_initialize_2
39
- dependent_two = TheoryDependent.new(StringToTheory.run("if(var1.length == var2.length)\nend"))
40
- action_two = TheoryAction.new(StringToTheory.run('return var3'),StringToTheory.run('var1.statement_id'))
41
- result_two = TheoryResult.new(Parser.run("if(runtime_method.all_pass?(test_cases))\nreturn true\nend"))
42
- assert_nothing_raised(){Theory.new([dependent_two],action_two,[result_two])}
43
- end
44
-
45
- def test_initialize_3
46
- dependent_one = TheoryDependent.new(StringToTheory.run("if(var1.length == var2.length)\nend"))
47
- action_two = TheoryAction.new(
48
- TheoryStatement.new(
49
- StringToTheory.run('Statement.new(Parser.run("var4 = var3.params[0]"))')
50
- ),
51
- StringToTheory.run('var1.statement_id')
52
- )
53
- result_two = TheoryResult.new(StringToTheory.run("if(var3.all_pass?(var4))\nreturn true\nend"))
54
- assert_nothing_raised(){Theory.new([dependent_one],action_two,[result_two])}
55
- end
56
-
57
- def test_initialize_with_more_than_one_dependent
58
- dependent_one = TheoryDependent.new(StringToTheory.run("if(var1.kind_of?(RuntimeMethod))\nreturn true\nend"))
59
- dependent_two = TheoryDependent.new(StringToTheory.run("if(var1.length == var2)\nreturn true\nend"))
60
- action = TheoryAction.new(
61
- TheoryStatement.new(
62
- StringToTheory.run('Statement.new(Return.new,var1.history.length)')
63
- ),
64
- StringToTheory.run('var1.statement_id')
65
- )
66
- result_one = TheoryResult.new(StringToTheory.run("if(var1.length == var2)\nreturn true\nend"))
67
- assert_nothing_raised(){
68
- Theory.new([dependent_one,dependent_two],action,[result_one])
69
- }
70
- end
71
-
72
- # https://docs.google.com/a/theinbetweens.co.uk/document/d/1i0PvZRHf_rZ-6Yusck7TANCyxgmRjLiLsLwYACKBuWs/edit?hl=en_GB#
73
- def test_initialize_with_case_1_theory_1
74
- dependent_one = TheoryDependent.new(StringToTheory.run("if(var2[var3].kind_of?(CTestCase))\nreturn true\nend"))
75
- dependent_two = TheoryDependent.new(StringToTheory.run("if(var6.kind_of?(Fixnum))\nreturn true\nend"))
76
- dependent_three = TheoryDependent.new(
77
- StringToTheory.run("if((var2[var3][:params][var6] == var2[var4][:params][var6])==false)\nreturn true\nend")
78
- )
79
- action = TheoryAction.new(
80
- TheoryStatement.new(StringToTheory.run(
81
- 'Statement.new(Container.new(var2[var3][:params][var6],Equivalent.new,var2[var3][:output]))'
82
- )),
83
- StringToTheory.run('var1.statement_id')
84
- )
85
- result_one = TheoryResult.new(StringToTheory.run(
86
- "if(var1.history(var2[var3][:params]).any? { |x| x.statement_id == var1.last.statement_id })\nreturn true\nend"
87
- ))
88
- result_two = TheoryResult.new(StringToTheory.run(
89
- "if((var1.history(var2[var4][:params]).any? { |x| x.statement_id == var1.last.statement_id })==false)\nreturn true\nend"
90
- ))
91
- assert_nothing_raised(){
92
- Theory.new(
93
- [dependent_one,dependent_two,dependent_three],
94
- action,
95
- [result_one,result_two]
96
- )
97
- }
98
- end
99
-
100
- # fixture theory 13
101
- def test_initialize_with_case_1_theory_1_with_last_runtime
102
- dependent_one = TheoryDependent.new(StringToTheory.run("if(var2[var3].kind_of?(CTestCase))\nreturn true\nend"))
103
- dependent_two = TheoryDependent.new(StringToTheory.run("if(var6.kind_of?(Fixnum))\nreturn true\nend"))
104
- dependent_three = TheoryDependent.new(
105
- StringToTheory.run("if((var2[var3][:params][var6] == var2[var4][:params][var6])==false)\nreturn true\nend")
106
- )
107
- action = TheoryAction.new(
108
- TheoryStatement.new(StringToTheory.run(
109
- 'Statement.new(Container.new(var2[var3][:params][var6],Equivalent.new,var2[var3][:output]))'
110
- )),
111
- StringToTheory.run('var1.statement_id')
112
- )
113
- result_one = TheoryResult.new(StringToTheory.run(
114
- "if(var5.history(var2[var3][:params]).any? { |x| x.statement_id == var1.last.statement_id })\nreturn true\nend"
115
- ))
116
- result_two = TheoryResult.new(StringToTheory.run(
117
- "if((var5.history(var2[var4][:params]).any? { |x| x.statement_id == var1.last.statement_id })==false)\nreturn true\nend"
118
- ))
119
- assert_nothing_raised(){
120
- Theory.new(
121
- [dependent_one,dependent_two,dependent_three],
122
- action,
123
- [result_one,result_two]
124
- )
125
- }
126
-
127
- end
128
-
129
- # fixture theory 14
130
- def test_initialize_with_case_1_theory_2
131
-
132
- dependent_one = TheoryDependent.new(StringToTheory.run(
133
- "if(var1.history(var2[var3][:params]).any? { |x| x.statement_id == var1.last.statement_id })\nreturn true\nend"
134
- ))
135
- dependent_two = TheoryDependent.new(StringToTheory.run(
136
- "if((var1.history(var2[var4][:params]).any? { |x| x.statement_id == var1.last.statement_id })==false)\nreturn true\nend"
137
- ))
138
- action = TheoryAction.new(
139
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var3][:output])')),
140
- StringToTheory.run('var1.last.statement_id')
141
- )
142
- result_one = TheoryResult.new(StringToTheory.run(
143
- "if(var1.pass?(var2[var3]))\nreturn true\nend"
144
- ))
145
- result_two = TheoryResult.new(StringToTheory.run(
146
- "if(var1.pass?(var2[var4])==false)\nreturn true\nend"
147
- ))
148
- assert_nothing_raised(){
149
- Theory.new(
150
- [dependent_one,dependent_two],
151
- action,
152
- [result_one,result_two]
153
- )
154
- }
155
- end
156
-
157
- def test_initialize_with_case_1_theory_2_with_last_runtime_method
158
-
159
- dependent_one = TheoryDependent.new(StringToTheory.run(
160
- "if(var5.history(var2[var3][:params]).any? { |x| x.statement_id == var1.last.statement_id })\nreturn true\nend"
161
- ))
162
- dependent_two = TheoryDependent.new(StringToTheory.run(
163
- "if((var5.history(var2[var4][:params]).any? { |x| x.statement_id == var1.last.statement_id })==false)\nreturn true\nend"
164
- ))
165
- action = TheoryAction.new(
166
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var3][:output])')),
167
- StringToTheory.run('var1.last.statement_id')
168
- )
169
- result_one = TheoryResult.new(StringToTheory.run(
170
- "if(var1.pass?(var2[var3]))\nreturn true\nend"
171
- ))
172
- result_two = TheoryResult.new(StringToTheory.run(
173
- "if(var5.pass?(var2[var4])==false)\nreturn true\nend"
174
- ))
175
- result_three = TheoryResult.new(StringToTheory.run(
176
- "if(var5.pass?(var2[var3]))\nreturn true\nend"
177
- ))
178
- assert_nothing_raised(){
179
- Theory.new(
180
- [dependent_one,dependent_two],
181
- action,
182
- [result_one,result_two,result_three]
183
- )
184
- }
185
- end
186
-
187
- def test_initialize_with_case_1_theory_3
188
- dependent_one = TheoryDependent.new(StringToTheory.run(
189
- "if(var1.pass?(var2[var3]))\nreturn true\nend"
190
- ))
191
- dependent_two = TheoryDependent.new(StringToTheory.run(
192
- "if(var1.pass?(var2[var4]) == false)\nreturn true\nend"
193
- ))
194
- action = TheoryAction.new(
195
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var4][:output])')),
196
- StringToTheory.run('var1.statement_id')
197
- )
198
- result_one = TheoryResult.new(StringToTheory.run(
199
- "if(var1.pass?(var2[var4]))\nreturn true\nend"
200
- ))
201
- assert_nothing_raised(){
202
- Theory.new(
203
- [dependent_one,dependent_two],
204
- action,
205
- [result_one]
206
- )
207
- }
208
- end
209
-
210
- def test_initialize_with_case_1_theory_3_with_last_runtime_method
211
-
212
- dependent_one = TheoryDependent.new(StringToTheory.run(
213
- "if(var5.pass?(var2[var3]))\nreturn true\nend"
214
- ))
215
- dependent_two = TheoryDependent.new(StringToTheory.run(
216
- "if(var5.pass?(var2[var4]) == false)\nreturn true\nend"
217
- ))
218
- action = TheoryAction.new(
219
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var4][:output])')),
220
- StringToTheory.run('var1.statement_id')
221
- )
222
- result_one = TheoryResult.new(StringToTheory.run(
223
- "if(var1.pass?(var2[var4]))\nreturn true\nend"
224
- ))
225
- assert_nothing_raised(){
226
- Theory.new(
227
- [dependent_one,dependent_two],
228
- action,
229
- [result_one]
230
- )
231
- }
232
- end
233
-
234
- def test_initialize_with_case_1_theory_4
235
- dependent_one = TheoryDependent.new(StringToTheory.run(
236
- "if(var1.pass?(var2[var3]))\nreturn true\nend"
237
- ))
238
- dependent_two = TheoryDependent.new(StringToTheory.run(
239
- "if(var1.pass?(var2[var4]))\nreturn true\nend"
240
- ))
241
-
242
- result_one = TheoryResult.new(StringToTheory.run(
243
- "if(var1.all_pass?(var2))\nreturn true\nend"
244
- ))
245
-
246
- assert_nothing_raised(){
247
- Theory.new(
248
- [dependent_one,dependent_two],
249
- nil,
250
- [result_one]
251
- )
252
- }
253
- end
254
-
255
- def test_initialize_with_case_2_theory_1
256
- # - fixture 16
257
-
258
- # a = BlockStatement.new(
259
- # Statement.new(
260
- # InstanceCallContainer.new(
261
- # Container.new(
262
- # InstanceCallContainer.new(
263
- # var1.params[0],StringLength.new
264
- # ),
265
- # Subtract.new,
266
- # 1
267
- # ),
268
- # Times.new
269
- # )
270
- # )
271
- # )
272
-
273
- # TODO Should probably add a few for more dependents
274
- # var1 = RuntmeMethod
275
- # var2 = 0 - .params[0]
276
- # var3 = TestCases
277
- # var4 = 0 - the first test case
278
- # var5 = last_runtime_method
279
- dependent_one = TheoryDependent.new(
280
- StringToTheory.run(
281
- "if(var1.kind_of?(RuntimeMethod))\nreturn true\nend"
282
- )
283
- )
284
- dependent_two = TheoryDependent.new(
285
- StringToTheory.run(
286
- "if(var3[var4].kind_of?(CTestCase))\nreturn true\nend"
287
- )
288
- )
289
- action = TheoryAction.new(
290
- TheoryStatement.new(
291
- StringToTheory.run(
292
- 'BlockStatement.new(Statement.new(InstanceCallContainer.new(Container.new(InstanceCallContainer.new(var1.params[var2],StringLength.new),Subtract.new,1),Times.new)))'
293
- )
294
- ),
295
- StringToTheory.run('var1.statement_id')
296
- )
297
- result_one = TheoryResult.new(
298
- StringToTheory.run(
299
- "if(var1.history2(var3[var4]).select {|x| x['statement_id'] == var3.last.statement_id} == var3[var4][:params][var2].length-1)\nreturn true\nend"
300
- )
301
- )
302
- assert_nothing_raised(){
303
- Theory.new(
304
- [dependent_one,dependent_two],
305
- action,
306
- [result_one]
307
- )
308
- }
309
- end
310
-
311
- def test_initialize_with_case_2_theory_2
312
- # - fixture 17
313
- # var1 = RuntmeMethod
314
- # var2 = 0 - .params[0]
315
- # var3 = TestCases
316
- # var4 = 0 - the first test case
317
- # var5 = last_runtime_method
318
- dependent_one = TheoryDependent.new(
319
- StringToTheory.run(
320
- "if(var1.history2(var3[var4]).select {|x| x['statement_id'] == var3.last.statement_id} == var3[var4][:params][var2].length-1)\nreturn true\nend"
321
- )
322
- )
323
- action = TheoryAction.new(
324
- TheoryStatement.new(
325
- StringToTheory.run(
326
- "Statement.new(var1.params[var2],Equal.new,InstanceCallContainer.new(var1.params[var2],Chop.new))"
327
- )
328
- ),
329
- StringToTheory.run('var1.last.statement_id')
330
- )
331
- result_one = TheoryResult.new(
332
- StringToTheory.run(
333
- "if(var5.history2(var3[var4]).last['variables'].last['value'] == var3[var4][:output].length)\nreturn true\nend"
334
- )
335
- )
336
- assert_nothing_raised(){
337
- Theory.new(
338
- [dependent_one],
339
- action,
340
- [result_one]
341
- )
342
- }
343
- end
344
-
345
- def test_initialize_with_case_2_theory_3
346
- # - fixture 18
347
- # var1 = RuntmeMethod
348
- # var2 = 0 - .params[0]
349
- # var3 = TestCases
350
- # var4 = 0 - the first test case
351
- # var5 = last_runtime_method
352
- dependent_one = TheoryDependent.new(
353
- StringToTheory.run(
354
- "if(var5.history2(var3[var4]).last['variables'].last['value'] == var3[var4][:output].length)\nreturn true\nend"
355
- )
356
- )
357
- action = TheoryAction.new(
358
- TheoryStatement.new(
359
- StringToTheory.run(
360
- "Statement.new(Return.new,var1.params[var2])"
361
- )
362
- ),
363
- StringToTheory.run('var1.statement_id')
364
- )
365
- result_one = TheoryResult.new(StringToTheory.run(
366
- "if(var1.pass?(var3[var4]))\nreturn true\nend"
367
- ))
368
- assert_nothing_raised(){
369
- Theory.new(
370
- [dependent_one],
371
- action,
372
- [result_one]
373
- )
374
- }
375
- end
376
-
377
- def test_map_to_case1_theory_1
378
-
379
- theory =Theory.load_theory(9)
380
- mapping = Mapping.new({
381
- 1=>IntrinsicRuntimeMethod.new,
382
- 2=>IntrinsicTestCases.new,
383
- 3=>0.to_literal,
384
- 4=>1.to_literal,
385
- 6=>1.to_literal
386
- })
387
- assert_equal(
388
- 0,
389
- theory.map_to(mapping).all_theory_variables.length
390
- )
391
-
392
- end
393
-
394
- def test_map_to_case_1_theory_2
395
- theory =Theory.load_theory '10'
396
- mapping = Mapping.new({
397
- 1=>IntrinsicRuntimeMethod.new,
398
- 2=>IntrinsicTestCases.new,
399
- 3=>0.to_literal,
400
- 4=>1.to_literal,
401
- 6=>1.to_literal
402
- })
403
- assert_equal(
404
- 0,
405
- theory.map_to(mapping).all_theory_variables.length
406
- )
407
- end
408
-
409
- def test_map_to_case_1_theory_3
410
- theory =Theory.load_theory '11'
411
- mapping = Mapping.new({
412
- 1=>IntrinsicRuntimeMethod.new,
413
- 2=>IntrinsicTestCases.new,
414
- 3=>0.to_literal,
415
- 4=>1.to_literal,
416
- 6=>1.to_literal
417
- })
418
- assert_equal(
419
- 0,
420
- theory.map_to(mapping).all_theory_variables.length
421
- )
422
- end
423
-
424
- def test_map_to_case_1_theory_4
425
-
426
- theory =Theory.load_theory '12'
427
- mapping = Mapping.new({
428
- 1=>IntrinsicRuntimeMethod.new,
429
- 2=>IntrinsicTestCases.new,
430
- 3=>0.to_literal,
431
- 4=>1.to_literal,
432
- 6=>1.to_literal
433
- })
434
- assert_equal(
435
- 0,
436
- theory.map_to(mapping).all_theory_variables.length
437
- )
438
- end
439
-
440
- # Check that a clear description of the theory in an abstract state
441
- # can be generated.
442
- #
443
- def test_describe
444
- assert(@theory_1.describe.kind_of?(String))
445
- assert(@theory_1.describe.include?('if'))
446
- assert(@theory_1.describe.include?('action'))
447
- assert(@theory_1.describe.include?('result'))
448
- end
449
-
450
- def test_all_theory_variables
451
- assert_equal(3,@theory_1.all_theory_variables.length)
452
- assert_equal(5,@theory_2.all_theory_variables.length)
453
- end
454
-
455
- def test_rewrite_permutations
456
-
457
- # Find potential literal values
458
- potential_values = MappingValues.new([
459
- Parser.run('test_cases[0][:params][0]'),
460
- Parser.run('test_cases[0][:params]'),
461
- Parser.run('test_cases[0][:output]'),
462
- Parser.run('test_cases'),
463
- Parser.run('runtime_method')
464
- ])
465
- assert(@theory_1.rewrite_permutations(potential_values).kind_of?(Array))
466
- assert_equal(60,@theory_1.rewrite_permutations(potential_values).length)
467
- assert(@theory_1.rewrite_permutations(potential_values).all? {|x| x.kind_of?(TheoryImplementation)})
468
-
469
- # Check that all the theory variables have been substituted
470
- @theory_1.rewrite_permutations(potential_values).each do |x|
471
- x.dependents.each do |y|
472
- assert_equal(0,y.theory_variables.length)
473
- end
474
- end
475
- end
476
-
477
- def test_rewrite_permutations_with_a_theory_without_an_action
478
- potential_values = [
479
- Parser.run('test_cases[0][:params][0]'),
480
- Parser.run('test_cases[0][:params]'),
481
- Parser.run('test_cases[0][:output]'),
482
- Parser.run('test_cases'),
483
- Parser.run('runtime_method')
484
- ]
485
- theory_5 =Theory.load_theory(5)
486
- assert_equal(
487
- 60,
488
- theory_5.rewrite_permutations(potential_values).length
489
- )
490
- end
491
-
492
- def test_all_theory_variables_with_a_theory_without_an_action
493
- theory_4 =Theory.load_theory(4)
494
- theory_5 =Theory.load_theory(5)
495
- assert_nil(theory_5.action)
496
- assert_not_nil(theory_4.action)
497
- assert_equal(
498
- 3,
499
- theory_5.all_theory_variables.length
500
- )
501
- end
502
-
503
- # Check that correct number of orphan variables are detected
504
- def test_orphan_action_variables
505
-
506
- # Create the simple that contains a theory_variable 3 that is only used in the action
507
- link_one_action = TheoryAction.new(
508
- TheoryStatement.new(StringToTheory.run('Statement.new(Return.new,var2[var3][:output])')),
509
- StringToTheory.run('var1.statement_id')
510
- )
511
- link_one_result = TheoryResult.new(StringToTheory.run("if(var1.all_pass?(var2))\nreturn true\nend"))
512
- t = Theory.new([],link_one_action,[link_one_result])
513
- assert_equal(1,t.orphan_action_variables.length)
514
- assert_equal(3,t.orphan_action_variables.first.theory_variable_id)
515
-
516
- end
517
-
518
- def test_find_component
519
- theory_4 = Theory.load_theory(4)
520
- assert_equal(
521
- theory_4.dependents[0].theory_component_id,
522
- theory_4.find_component(theory_4.dependents[0].theory_component_id).theory_component_id
523
- )
524
- assert_equal(
525
- theory_4.results[0].theory_component_id,
526
- theory_4.find_component(theory_4.results[0].theory_component_id).theory_component_id
527
- )
528
-
529
- end
530
-
531
- end