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.
- data/.gitignore +51 -0
- data/Gemfile +6 -3
- data/Gemfile.lock +16 -3
- data/Rakefile +94 -92
- data/VERSION +1 -1
- data/bin/cauldron +2 -2
- data/cauldron.gemspec +15 -451
- data/features/cauldron_new_approach.feature +46 -0
- data/features/step_definitions/cauldron_steps.rb +11 -0
- data/features/step_definitions/terminal_steps.rb +0 -2
- data/features/support/env.rb +11 -1
- data/features/support/hooks.rb +5 -0
- data/lib/cauldron.rb +13 -7
- data/lib/cauldron/array_reverse_operator.rb +39 -0
- data/lib/cauldron/concat_operator.rb +34 -0
- data/lib/cauldron/if_relationship.rb +37 -0
- data/lib/cauldron/numeric_operator.rb +45 -0
- data/lib/cauldron/pot.rb +54 -162
- data/lib/cauldron/relationship.rb +5 -0
- data/lib/cauldron/terminal.rb +4 -60
- data/lib/cauldron/version.rb +3 -0
- data/lib/core/string.rb +21 -0
- data/sandbox.rb +27 -6
- data/spec/cauldron/array_reverse_operator_spec.rb +59 -0
- data/spec/cauldron/concat_operator_spec.rb +89 -0
- data/spec/cauldron/if_relationship_spec.rb +25 -0
- data/spec/cauldron/numeric_operator_spec.rb +70 -0
- data/spec/cauldron/pot_spec.rb +81 -151
- data/spec/cauldron/terminal_spec.rb +1 -39
- data/spec/examples/adding_if_statement.yml +13 -0
- data/spec/examples/simple_head_theory.txt +13 -0
- data/spec/spec_helper.rb +1 -14
- data/tasks/theory_tasks.rake +207 -207
- metadata +92 -532
- data/cauldron/.autotest +0 -23
- data/cauldron/History.txt +0 -6
- data/cauldron/Manifest.txt +0 -8
- data/cauldron/README.txt +0 -57
- data/cauldron/Rakefile +0 -27
- data/cauldron/bin/cauldron +0 -3
- data/cauldron/lib/cauldron.rb +0 -3
- data/cauldron/test/test_cauldron.rb +0 -8
- data/features/cauldron_example_cases.feature +0 -13
- data/features/cauldron_generates_runtime_method.feature +0 -16
- data/features/cauldron_generates_single_paramter_methods.feature +0 -25
- data/features/cauldron_interactive_start_terminal.feature +0 -17
- data/features/cauldron_quit_terminal.feature +0 -9
- data/features/cauldron_start_terminal.feature +0 -12
- data/features/support/method_1.example +0 -3
- data/features/support/method_2.example +0 -6
- data/lib/Chain.rb +0 -771
- data/lib/ChainMapping.rb +0 -172
- data/lib/CodeHandler.rb +0 -513
- data/lib/Mapping.rb +0 -27
- data/lib/MappingValues.rb +0 -24
- data/lib/PartialChain.rb +0 -253
- data/lib/Theory.rb +0 -295
- data/lib/UnifiedChain.rb +0 -351
- data/lib/cauldron/conversion.rb +0 -15
- data/lib/cauldron/demos.rb +0 -280
- data/lib/cauldron/env.rb +0 -1
- data/lib/cauldron/sexp2cauldron.rb +0 -139
- data/lib/cauldron/theory_factory.rb +0 -10
- data/lib/cauldron/util/home.rb +0 -21
- data/lib/cauldron/util/saver.rb +0 -45
- data/lib/core/ActsAsCode.rb +0 -25
- data/lib/core/BlockToken.rb +0 -33
- data/lib/core/CCall.rb +0 -7
- data/lib/core/CTestCase.rb +0 -27
- data/lib/core/ClassMethodCallContainer.rb +0 -58
- data/lib/core/Container.rb +0 -95
- data/lib/core/InstanceCallContainer.rb +0 -298
- data/lib/core/MethodUsage.rb +0 -65
- data/lib/core/PrintVariables.rb +0 -25
- data/lib/core/TheoryGenerator.rb +0 -753
- data/lib/core/Token.rb +0 -7
- data/lib/core/assignment/Assignment.rb +0 -18
- data/lib/core/assignment/Equal.rb +0 -39
- data/lib/core/assignment/Equivalent.rb +0 -20
- data/lib/core/assignment/NotEqual.rb +0 -14
- data/lib/core/call_container/CallContainer.rb +0 -72
- data/lib/core/class_method_call/New.rb +0 -15
- data/lib/core/class_method_call/RuntimeClassMethodCall.rb +0 -31
- data/lib/core/declaration/Declaration.rb +0 -16
- data/lib/core/declaration/LiteralDeclaration.rb +0 -47
- data/lib/core/declaration/VariableDeclaration.rb +0 -59
- data/lib/core/instance_call/ArrayEach.rb +0 -23
- data/lib/core/instance_call/ArrayLength.rb +0 -15
- data/lib/core/instance_call/Chop.rb +0 -19
- data/lib/core/instance_call/Copy.rb +0 -22
- data/lib/core/instance_call/DeclaredVariable.rb +0 -18
- data/lib/core/instance_call/InstanceCall.rb +0 -77
- data/lib/core/instance_call/Params.rb +0 -15
- data/lib/core/instance_call/Push.rb +0 -20
- data/lib/core/instance_call/StringLength.rb +0 -32
- data/lib/core/instance_call/Times.rb +0 -20
- data/lib/core/instance_call/instance_calls.rb +0 -176
- data/lib/core/instance_call/length_equal.rb +0 -15
- data/lib/core/kernal/EvalCall.rb +0 -15
- data/lib/core/kernal/LocalVariablesCall.rb +0 -15
- data/lib/core/literal/Literal.rb +0 -111
- data/lib/core/literal/Raw.rb +0 -23
- data/lib/core/literal/RuntimeMethodLiteral.rb +0 -21
- data/lib/core/literal/StatementLiteral.rb +0 -28
- data/lib/core/method_call/AvailableVariablesCall.rb +0 -25
- data/lib/core/method_call/ClassCall.rb +0 -33
- data/lib/core/method_call/DefCall.rb +0 -72
- data/lib/core/method_call/EvaluateClassCall.rb +0 -29
- data/lib/core/method_call/MethodNameCall.rb +0 -27
- data/lib/core/method_call/ToDeclarationCall.rb +0 -15
- data/lib/core/requirement/Requirement.rb +0 -292
- data/lib/core/runtime_class/ArrayClass.rb +0 -19
- data/lib/core/runtime_class/ClassCallClass.rb +0 -23
- data/lib/core/runtime_class/ClassEvaluationClass.rb +0 -19
- data/lib/core/runtime_class/ClassName.rb +0 -18
- data/lib/core/runtime_class/DefCallClass.rb +0 -21
- data/lib/core/runtime_class/EqualClass.rb +0 -19
- data/lib/core/runtime_class/FixnumClass.rb +0 -15
- data/lib/core/runtime_class/InstanceCallClass.rb +0 -19
- data/lib/core/runtime_class/InstanceCallContainerClass.rb +0 -16
- data/lib/core/runtime_class/InstanceClassCallClass.rb +0 -19
- data/lib/core/runtime_class/LiteralClass.rb +0 -19
- data/lib/core/runtime_class/MethodParameterClass.rb +0 -27
- data/lib/core/runtime_class/MethodUsageClass.rb +0 -27
- data/lib/core/runtime_class/RequirementClass.rb +0 -19
- data/lib/core/runtime_class/ReturnClass.rb +0 -21
- data/lib/core/runtime_class/RuntimeClass.rb +0 -30
- data/lib/core/runtime_class/RuntimeClassClass.rb +0 -19
- data/lib/core/runtime_class/RuntimeMethodClass.rb +0 -34
- data/lib/core/runtime_class/StatementClass.rb +0 -53
- data/lib/core/runtime_class/StringClass.rb +0 -23
- data/lib/core/runtime_class/StringLengthClass.rb +0 -19
- data/lib/core/runtime_class/StringVariableClass.rb +0 -19
- data/lib/core/runtime_class/ThisClass.rb +0 -15
- data/lib/core/runtime_class/UnknownClass.rb +0 -23
- data/lib/core/runtime_class/class_names.rb +0 -95
- data/lib/core/runtime_class/runtime_class.rb +0 -123
- data/lib/core/runtime_method/ActsAsRuntimeMethod.rb +0 -293
- data/lib/core/runtime_method/ParametersContainer.rb +0 -29
- data/lib/core/runtime_method/RealisedRuntimeMethod.rb +0 -94
- data/lib/core/runtime_method/RuntimeMethod.rb +0 -814
- data/lib/core/runtime_method/WriteParameters.rb +0 -35
- data/lib/core/statement/ActsAsStatement.rb +0 -20
- data/lib/core/statement/ArrayAccess.rb +0 -122
- data/lib/core/statement/BlockStatement.rb +0 -348
- data/lib/core/statement/DeclarationStatement.rb +0 -19
- data/lib/core/statement/HackStatement.rb +0 -25
- data/lib/core/statement/HashAccess.rb +0 -18
- data/lib/core/statement/OpenStatement.rb +0 -178
- data/lib/core/statement/RealisedStatement.rb +0 -5
- data/lib/core/statement/SingleLineBlockStatement.rb +0 -39
- data/lib/core/statement/Statement.rb +0 -1091
- data/lib/core/statement/StatementGroup.rb +0 -157
- data/lib/core/statement/StatementStructure2.rb +0 -224
- data/lib/core/statement/TheoryStatement.rb +0 -68
- data/lib/core/statement/TopologicalStatements.rb +0 -34
- data/lib/core/syntax/Addition.rb +0 -26
- data/lib/core/syntax/BlockContainer.rb +0 -102
- data/lib/core/syntax/Boolean.rb +0 -15
- data/lib/core/syntax/Code.rb +0 -11
- data/lib/core/syntax/Do.rb +0 -20
- data/lib/core/syntax/False.rb +0 -12
- data/lib/core/syntax/If.rb +0 -36
- data/lib/core/syntax/Nil.rb +0 -15
- data/lib/core/syntax/Return.rb +0 -33
- data/lib/core/syntax/Subtract.rb +0 -19
- data/lib/core/syntax/This.rb +0 -40
- data/lib/core/syntax/True.rb +0 -20
- data/lib/core/syntax/syntax.rb +0 -24
- data/lib/core/tracking/ActsAsTrackable.rb +0 -65
- data/lib/core/tracking/History.rb +0 -167
- data/lib/core/tracking/RuntimeTrackingMethod.rb +0 -32
- data/lib/core/tracking/Step.rb +0 -52
- data/lib/core/variable/ArrayVariable.rb +0 -76
- data/lib/core/variable/BaseVariable.rb +0 -152
- data/lib/core/variable/BlockVariable.rb +0 -92
- data/lib/core/variable/FixnumVariable.rb +0 -35
- data/lib/core/variable/HistoryVariable.rb +0 -8
- data/lib/core/variable/MethodParameter.rb +0 -179
- data/lib/core/variable/MethodUsageVariable.rb +0 -60
- data/lib/core/variable/NilVariable.rb +0 -29
- data/lib/core/variable/RuntimeMethodParameter.rb +0 -67
- data/lib/core/variable/StatementVariable.rb +0 -72
- data/lib/core/variable/StepVariable.rb +0 -7
- data/lib/core/variable/StringVariable.rb +0 -46
- data/lib/core/variable/TypeVariable.rb +0 -72
- data/lib/core/variable/Unknown.rb +0 -102
- data/lib/core/variable/UnknownVariable.rb +0 -29
- data/lib/core/variable/Variable.rb +0 -70
- data/lib/core/variable/VariableContainer.rb +0 -28
- data/lib/core/variable/VariableIncluded.rb +0 -27
- data/lib/core/variable/VariableReference.rb +0 -85
- data/lib/error/FailedToFindStatementContainerError.rb +0 -7
- data/lib/error/FailedToFindStatementError.rb +0 -7
- data/lib/error/FailedToFindVariableError.rb +0 -7
- data/lib/error/FailedToLiteraliseError.rb +0 -7
- data/lib/error/FailedVariableMatch.rb +0 -7
- data/lib/error/ImproperStatementUsageError.rb +0 -7
- data/lib/error/IncompatiableRequirementsError.rb +0 -7
- data/lib/error/InvalidStatementError.rb +0 -7
- data/lib/error/MethodSizeError.rb +0 -7
- data/lib/error/RuntimeSyntaxError.rb +0 -7
- data/lib/error/UnexpectedStatementTypeError.rb +0 -7
- data/lib/error/UnknownStatementType.rb +0 -7
- data/lib/error/UnliteralisableError.rb +0 -7
- data/lib/implemented_chain.rb +0 -35
- data/lib/intrinsic/IntrinsicLastRuntimeMethod.rb +0 -20
- data/lib/intrinsic/IntrinsicLiteral.rb +0 -26
- data/lib/intrinsic/IntrinsicObject.rb +0 -22
- data/lib/intrinsic/IntrinsicRuntimeMethod.rb +0 -27
- data/lib/intrinsic/IntrinsicTestCases.rb +0 -17
- data/lib/logger/StandardLogger.rb +0 -62
- data/lib/required.rb +0 -222
- data/lib/ruby_code/Array.rb +0 -95
- data/lib/ruby_code/Fixnum.rb +0 -39
- data/lib/ruby_code/Hash.rb +0 -25
- data/lib/ruby_code/NilClass.rb +0 -19
- data/lib/ruby_code/Object.rb +0 -24
- data/lib/ruby_code/String.rb +0 -63
- data/lib/ruby_code/Symbol.rb +0 -7
- data/lib/standard_library/Tasks.rb +0 -12
- data/lib/theories.rb +0 -166
- data/lib/theory/ActionImplementation.rb +0 -17
- data/lib/theory/TheoryAction.rb +0 -100
- data/lib/theory/TheoryChainValidator.rb +0 -103
- data/lib/theory/TheoryComponent.rb +0 -59
- data/lib/theory/TheoryConnector.rb +0 -756
- data/lib/theory/TheoryDependent.rb +0 -135
- data/lib/theory/TheoryImplementation.rb +0 -75
- data/lib/theory/TheoryResult.rb +0 -131
- data/lib/theory/TheoryVariable.rb +0 -63
- data/lib/theory/theory_collection.rb +0 -62
- data/lib/util/ClassEvaluation.rb +0 -44
- data/lib/util/CodeEvaluation.rb +0 -39
- data/lib/util/DeclarationStatementEvaluation.rb +0 -32
- data/lib/util/MethodEvaluation.rb +0 -49
- data/lib/util/MethodTester.rb +0 -71
- data/lib/util/MethodValidation.rb +0 -149
- data/lib/util/MethodWriter.rb +0 -66
- data/lib/util/Parser.rb +0 -305
- data/lib/util/StatementCheck.rb +0 -44
- data/lib/util/StringToTheory.rb +0 -142
- data/lib/util/System.rb +0 -8
- data/spec/cauldron/chain_spec.rb +0 -24
- data/spec/cauldron/demos_spec.rb +0 -30
- data/spec/cauldron/runtime_method_spec.rb +0 -92
- data/spec/cauldron/saver_spec.rb +0 -45
- data/spec/cauldron/sexp_2_cauldron_spec.rb +0 -118
- data/spec/cauldron/theory_action_spec.rb +0 -25
- data/spec/cauldron/theory_connector_spec.rb +0 -52
- data/spec/cauldron/theory_spec.rb +0 -59
- data/spec/cauldron/unified_chain_spec.rb +0 -140
- data/test/fixtures/chains/1/declaration.txt +0 -26
- data/test/fixtures/chains/1/dump +0 -0
- data/test/fixtures/chains/2/declaration.txt +0 -26
- data/test/fixtures/chains/2/dump +0 -0
- data/test/fixtures/chains/3/declaration.txt +0 -26
- data/test/fixtures/chains/3/dump +0 -0
- data/test/fixtures/implementation_results/0/declaration.txt +0 -3
- data/test/fixtures/implementation_results/0/dump +0 -0
- data/test/fixtures/theories/0/declaration.txt +0 -9
- data/test/fixtures/theories/0/desc +0 -10
- data/test/fixtures/theories/0/dump +0 -0
- data/test/fixtures/theories/1/declaration.txt +0 -15
- data/test/fixtures/theories/1/desc +0 -11
- data/test/fixtures/theories/1/dump +0 -0
- data/test/fixtures/theories/10/declaration.txt +0 -23
- data/test/fixtures/theories/10/desc +0 -17
- data/test/fixtures/theories/10/dump +0 -0
- data/test/fixtures/theories/11/declaration.txt +0 -20
- data/test/fixtures/theories/11/desc +0 -14
- data/test/fixtures/theories/11/dump +0 -0
- data/test/fixtures/theories/12/declaration.txt +0 -18
- data/test/fixtures/theories/12/desc +0 -12
- data/test/fixtures/theories/12/dump +0 -0
- data/test/fixtures/theories/13/declaration.txt +0 -24
- data/test/fixtures/theories/13/desc +0 -20
- data/test/fixtures/theories/13/dump +0 -0
- data/test/fixtures/theories/14/declaration.txt +0 -26
- data/test/fixtures/theories/14/desc +0 -20
- data/test/fixtures/theories/14/dump +0 -0
- data/test/fixtures/theories/15/declaration.txt +0 -20
- data/test/fixtures/theories/15/desc +0 -14
- data/test/fixtures/theories/15/dump +0 -0
- data/test/fixtures/theories/16/declaration.txt +0 -30
- data/test/fixtures/theories/16/desc +0 -14
- data/test/fixtures/theories/16/dump +0 -0
- data/test/fixtures/theories/17/declaration.txt +0 -25
- data/test/fixtures/theories/17/desc +0 -11
- data/test/fixtures/theories/17/dump +0 -0
- data/test/fixtures/theories/18/declaration.txt +0 -23
- data/test/fixtures/theories/18/desc +0 -11
- data/test/fixtures/theories/18/dump +0 -0
- data/test/fixtures/theories/19/declaration.txt +0 -23
- data/test/fixtures/theories/19/desc +0 -11
- data/test/fixtures/theories/19/dump +0 -0
- data/test/fixtures/theories/2/declaration.txt +0 -12
- data/test/fixtures/theories/2/desc +0 -10
- data/test/fixtures/theories/2/dump +0 -0
- data/test/fixtures/theories/20/declaration.txt +0 -23
- data/test/fixtures/theories/20/desc +0 -17
- data/test/fixtures/theories/20/dump +0 -0
- data/test/fixtures/theories/3/declaration.txt +0 -19
- data/test/fixtures/theories/3/desc +0 -11
- data/test/fixtures/theories/3/dump +0 -0
- data/test/fixtures/theories/4/declaration.txt +0 -11
- data/test/fixtures/theories/4/desc +0 -11
- data/test/fixtures/theories/4/dump +0 -0
- data/test/fixtures/theories/5/declaration.txt +0 -6
- data/test/fixtures/theories/5/desc +0 -9
- data/test/fixtures/theories/5/dump +0 -0
- data/test/fixtures/theories/6/declaration.txt +0 -13
- data/test/fixtures/theories/6/desc +0 -11
- data/test/fixtures/theories/6/dump +0 -0
- data/test/fixtures/theories/7/declaration.txt +0 -19
- data/test/fixtures/theories/7/desc +0 -11
- data/test/fixtures/theories/7/dump +0 -0
- data/test/fixtures/theories/8/declaration.txt +0 -21
- data/test/fixtures/theories/8/desc +0 -11
- data/test/fixtures/theories/8/dump +0 -0
- data/test/fixtures/theories/9/declaration.txt +0 -24
- data/test/fixtures/theories/9/desc +0 -20
- data/test/fixtures/theories/9/dump +0 -0
- data/test/fixtures/theory_implementations/0/declaration.txt +0 -11
- data/test/fixtures/theory_implementations/0/desc.txt +0 -9
- data/test/fixtures/theory_implementations/0/dump +0 -0
- data/test/fixtures/theory_implementations/0/theory_id +0 -1
- data/test/fixtures/theory_implementations/1/declaration.txt +0 -11
- data/test/fixtures/theory_implementations/1/desc.txt +0 -9
- data/test/fixtures/theory_implementations/1/dump +0 -1
- data/test/fixtures/theory_implementations/1/theory_id +0 -1
- data/test/fixtures/theory_implementations/2/declaration.txt +0 -11
- data/test/fixtures/theory_implementations/2/desc.txt +0 -9
- data/test/fixtures/theory_implementations/2/dump +0 -0
- data/test/fixtures/theory_implementations/2/theory_id +0 -1
- data/test/output/simple_method.txt +0 -5
- data/test/output/test_method/first_possible_method.txt +0 -6
- data/test/output/test_simple_cases/simple_case_01.txt +0 -8
- data/test/output/test_simple_cases/simple_case_02.txt +0 -7
- data/test/output/test_simple_cases/simple_case_03.txt +0 -8
- data/test/output/test_simple_cases/simple_case_04.txt +0 -8
- data/test/output/test_simple_cases/simple_case_05.txt +0 -8
- data/test/output/test_simple_cases/simple_case_06.txt +0 -9
- data/test/output/test_simple_cases/simple_case_07.txt +0 -9
- data/test/output/test_simple_cases/simple_case_08.txt +0 -9
- data/test/tc_describe.rb +0 -46
- data/test/tc_method.rb +0 -130
- data/test/tc_requirement.rb +0 -30
- data/test/tc_suite_complete.rb +0 -26
- data/test/tc_variable.rb +0 -52
- data/test/ts_complete.rb +0 -74
- data/test/ts_stable.rb +0 -81
- data/test/unit/core/declaration/tc_literal_declaration.rb +0 -34
- data/test/unit/core/method_call/tc_class_call.rb +0 -20
- data/test/unit/core/runtime_method/tc_realised_runtime_method.rb +0 -132
- data/test/unit/core/runtime_method/tc_runtime_method.rb +0 -546
- data/test/unit/core/statement/tc_array_access.rb +0 -63
- data/test/unit/core/statement/tc_block_statement.rb +0 -53
- data/test/unit/core/statement/tc_hack_statement.rb +0 -26
- data/test/unit/core/statement/tc_open_statement.rb +0 -79
- data/test/unit/core/statement/tc_statement.rb +0 -483
- data/test/unit/core/statement/tc_statement_group.rb +0 -35
- data/test/unit/core/statement/tc_statement_replace_variable.rb +0 -61
- data/test/unit/core/statement/tc_theory_statement.rb +0 -53
- data/test/unit/core/syntax/tc_block_container.rb +0 -32
- data/test/unit/core/syntax/tc_if_container.rb +0 -39
- data/test/unit/core/tc_class_method_call.rb +0 -34
- data/test/unit/core/tc_container.rb +0 -41
- data/test/unit/core/tc_ctest_case.rb +0 -25
- data/test/unit/core/tc_instance_call_container.rb +0 -93
- data/test/unit/core/tc_literal.rb +0 -30
- data/test/unit/core/tc_theory_generator.rb +0 -336
- data/test/unit/core/tc_theory_generator_heavy.rb +0 -42
- data/test/unit/core/tracking/tc_history.rb +0 -104
- data/test/unit/core/tracking/tc_step.rb +0 -65
- data/test/unit/core/variable/tc_array_variable.rb +0 -61
- data/test/unit/core/variable/tc_block_variable.rb +0 -17
- data/test/unit/core/variable/tc_fixnum_variable.rb +0 -54
- data/test/unit/core/variable/tc_method_parameter_variable.rb +0 -22
- data/test/unit/core/variable/tc_runtime_method_variable.rb +0 -32
- data/test/unit/core/variable/tc_string_variable.rb +0 -37
- data/test/unit/core/variable/tc_unknown.rb +0 -24
- data/test/unit/core/variable/tc_variable_reference.rb +0 -28
- data/test/unit/ruby_code/tc_array.rb +0 -64
- data/test/unit/ruby_code/tc_fixnum.rb +0 -18
- data/test/unit/ruby_code/tc_hash.rb +0 -41
- data/test/unit/ruby_code/tc_string.rb +0 -38
- data/test/unit/tc_chain.rb +0 -434
- data/test/unit/tc_chain_mapping.rb +0 -62
- data/test/unit/tc_chain_with_case_1.rb +0 -169
- data/test/unit/tc_instance_call.rb +0 -40
- data/test/unit/tc_method_usage.rb +0 -35
- data/test/unit/tc_pot.rb +0 -124
- data/test/unit/tc_runtime_tracking_method.rb +0 -40
- data/test/unit/tc_theory.rb +0 -531
- data/test/unit/tc_variable_declaration.rb +0 -32
- data/test/unit/theory/tc_theory_action.rb +0 -108
- data/test/unit/theory/tc_theory_action_implementation.rb +0 -23
- data/test/unit/theory/tc_theory_chain_validator.rb +0 -340
- data/test/unit/theory/tc_theory_connector.rb +0 -361
- data/test/unit/theory/tc_theory_dependent.rb +0 -153
- data/test/unit/theory/tc_theory_implementation.rb +0 -137
- data/test/unit/theory/tc_theory_result.rb +0 -112
- data/test/unit/theory/tc_theory_variable.rb +0 -45
- data/test/unit/util/tc_method_validation.rb +0 -101
- data/test/unit/util/tc_parser.rb +0 -110
- data/test/unit/util/tc_string_to_theory.rb +0 -300
- data/test/unit/variable/tc_method_usage_variable.rb +0 -25
- data/tmp/runtime_method_evaluation.rb +0 -16
data/lib/ruby_code/Array.rb
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
class Array
|
2
|
-
|
3
|
-
def cauldron_method_calls
|
4
|
-
# TODO Need to follow sexp more for ArrayAccess - I shouldn't need a class to contain the array and value
|
5
|
-
#result = self.length.times.collect {|x| '['+x.to_s+']'}
|
6
|
-
#result = self.length.times.collect {|x| ArrayAccess.new(self.copy,x)}
|
7
|
-
result = ['.length','.any?','[]']
|
8
|
-
return result
|
9
|
-
end
|
10
|
-
|
11
|
-
def to_var(id=nil,unique_id=nil)
|
12
|
-
raise StandardError.new('No to_var method has been created for '+self.class.to_s) unless self.class.to_s == 'Array'
|
13
|
-
# TODO I'm not sure whether it's best to save the literal value or variable value
|
14
|
-
result = []
|
15
|
-
self.each {|x| result.push(x.copy)}
|
16
|
-
replicate = ArrayVariable.new(*result) {{:variable_id => id,:uniq_id=>unique_id}}
|
17
|
-
return replicate
|
18
|
-
end
|
19
|
-
|
20
|
-
# Returns the array as a declaration string
|
21
|
-
# e.g. ['lions','tigers','bears'] becomes "['lion','tigers','bears']"
|
22
|
-
#
|
23
|
-
def to_declaration
|
24
|
-
raise StandardError.new('No to_declaration method has been created for '+self.class.to_s) unless self.class.to_s == 'Array'
|
25
|
-
return LiteralDeclaration.new(self.clone)
|
26
|
-
end
|
27
|
-
|
28
|
-
def write
|
29
|
-
raise StandardError.new('No "write" method has been created for '+self.class.to_s) unless self.class.to_s == 'Array'
|
30
|
-
line = '['
|
31
|
-
self.each do |x|
|
32
|
-
line += x.write
|
33
|
-
unless x.object_id == self.last.object_id then line += ', ' end
|
34
|
-
end
|
35
|
-
line += ']'
|
36
|
-
return line
|
37
|
-
end
|
38
|
-
|
39
|
-
def copy
|
40
|
-
raise StandardError.new('No "copy" method has been created for '+self.class.to_s) unless self.class.to_s == 'Array'
|
41
|
-
result = []
|
42
|
-
self.each {|x| result.push(x.copy) }
|
43
|
-
return result
|
44
|
-
end
|
45
|
-
|
46
|
-
def to_literal
|
47
|
-
return Literal.new(self.copy.collect {|x| x.to_literal})
|
48
|
-
end
|
49
|
-
|
50
|
-
# This is a variation on the 'any?' except if the array contains an array
|
51
|
-
# it continue the search into that array.
|
52
|
-
#
|
53
|
-
# @param &block The block that evaluates if something exists in the array
|
54
|
-
#
|
55
|
-
# TODO This method could probably be cleaned up a bit
|
56
|
-
#
|
57
|
-
def contains?(&block)
|
58
|
-
self.each do |x|
|
59
|
-
if x.respond_to?(:contains?)
|
60
|
-
if x.contains?(&block)
|
61
|
-
return true
|
62
|
-
end
|
63
|
-
end
|
64
|
-
return true if block.call(x)
|
65
|
-
end
|
66
|
-
return false
|
67
|
-
end
|
68
|
-
|
69
|
-
# Returns all the elements that match the selection criteria just
|
70
|
-
# like the select method. However if it contains an array it
|
71
|
-
# will seach the array as well.
|
72
|
-
#
|
73
|
-
# @param results An array of current results that match the requirement
|
74
|
-
# of the block.
|
75
|
-
# @param block .
|
76
|
-
#
|
77
|
-
def select_all(results=[],&block)
|
78
|
-
self.each do |x|
|
79
|
-
if block.call(x)
|
80
|
-
results.push(x)
|
81
|
-
end
|
82
|
-
if x.respond_to?(:select_all)
|
83
|
-
x.select_all(results,&block)
|
84
|
-
end
|
85
|
-
end
|
86
|
-
return results
|
87
|
-
end
|
88
|
-
|
89
|
-
def to_intrinsic
|
90
|
-
# TODO SHould be all? not any?
|
91
|
-
return IntrinsicTestCases.new if self.any? {|x| x.kind_of?(CTestCase)}
|
92
|
-
raise StandardError.new('Can not be converted to intrinsic instance '+self.class.to_s)
|
93
|
-
end
|
94
|
-
|
95
|
-
end
|
data/lib/ruby_code/Fixnum.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
class Fixnum
|
2
|
-
|
3
|
-
def to_var(id=nil,uniq_id=nil)
|
4
|
-
return FixnumVariable.new(self,id) {{:variable_id => id,:uniq_id=>uniq_id}}
|
5
|
-
end
|
6
|
-
|
7
|
-
def copy
|
8
|
-
return self
|
9
|
-
end
|
10
|
-
|
11
|
-
def to_declaration
|
12
|
-
return LiteralDeclaration.new(self)
|
13
|
-
end
|
14
|
-
|
15
|
-
def write
|
16
|
-
return self.to_s
|
17
|
-
end
|
18
|
-
|
19
|
-
def describe
|
20
|
-
write
|
21
|
-
end
|
22
|
-
|
23
|
-
def to_literal
|
24
|
-
return Literal.new(self)
|
25
|
-
end
|
26
|
-
|
27
|
-
def to_literal_string
|
28
|
-
return write
|
29
|
-
end
|
30
|
-
|
31
|
-
def cauldron_method_calls
|
32
|
-
return ['.kind_of?']
|
33
|
-
end
|
34
|
-
|
35
|
-
def to_intrinsic
|
36
|
-
return IntrinsicLiteral.new(self)
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
data/lib/ruby_code/Hash.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
class Hash
|
2
|
-
|
3
|
-
def write
|
4
|
-
#raise StandardError.new('No "write" method has been created for '+self.class.to_s) unless self.class.to_s == 'Hash'
|
5
|
-
line = '{'
|
6
|
-
count = 0
|
7
|
-
self.each do |x,y|
|
8
|
-
line += x.write+'=>'+y.write
|
9
|
-
count += 1
|
10
|
-
next if count == self.length
|
11
|
-
line += ','
|
12
|
-
end
|
13
|
-
line += '}'
|
14
|
-
return line
|
15
|
-
end
|
16
|
-
|
17
|
-
def copy
|
18
|
-
raise StandardError.new('No "copy" method has been created for '+self.class.to_s) unless self.class.to_s == 'Hash'
|
19
|
-
return self.inject({}) do |x,(key,value)|
|
20
|
-
x[key] = value
|
21
|
-
x
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
data/lib/ruby_code/NilClass.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
class NilClass
|
2
|
-
|
3
|
-
def to_var(id=nil)
|
4
|
-
return NilVariable.new(id) {{:variable_id => id,:uniq_id=>nil}}
|
5
|
-
end
|
6
|
-
|
7
|
-
def to_declaration
|
8
|
-
return LiteralDeclaration.new(nil)
|
9
|
-
end
|
10
|
-
|
11
|
-
def write
|
12
|
-
return 'nil'
|
13
|
-
end
|
14
|
-
|
15
|
-
def copy
|
16
|
-
return self
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
data/lib/ruby_code/Object.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
class Object
|
2
|
-
|
3
|
-
# This is a more useful 'public_methods' since it excludes
|
4
|
-
# the standard methods inheritated from the Object super
|
5
|
-
# class.
|
6
|
-
#
|
7
|
-
#def uniq_public_methods
|
8
|
-
# obj = Object.new
|
9
|
-
# return self.public_methods - obj.public_methods
|
10
|
-
#end
|
11
|
-
|
12
|
-
# Use p406
|
13
|
-
# Example.private_instance_methods(false)
|
14
|
-
# Example.public_instance_methods(false)
|
15
|
-
|
16
|
-
def instance_call_structures
|
17
|
-
return []
|
18
|
-
end
|
19
|
-
|
20
|
-
def cauldron_method_calls
|
21
|
-
return []
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
data/lib/ruby_code/String.rb
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
class String
|
2
|
-
|
3
|
-
def copy
|
4
|
-
return self.clone
|
5
|
-
end
|
6
|
-
|
7
|
-
def declaration_statement
|
8
|
-
return Statement.new(self.to_s)
|
9
|
-
end
|
10
|
-
|
11
|
-
def write
|
12
|
-
x = self.escape_single_quotes
|
13
|
-
return '\''+x+'\''
|
14
|
-
end
|
15
|
-
|
16
|
-
def instance_call_structures
|
17
|
-
return [
|
18
|
-
InstanceCallContainerStructure.new(StringVariable,Chop.new),
|
19
|
-
InstanceCallContainerStructure.new(StringVariable,StringLength.new)
|
20
|
-
]
|
21
|
-
end
|
22
|
-
|
23
|
-
#
|
24
|
-
# @param id You can specify the id of the newly created variable
|
25
|
-
#
|
26
|
-
def to_var(var_id=nil,unique_id=nil)
|
27
|
-
return StringVariable.new(self,var_id){{:variable_id => var_id,:uniq_id=>unique_id}}
|
28
|
-
end
|
29
|
-
|
30
|
-
def to_declaration
|
31
|
-
return LiteralDeclaration.new(self.clone)
|
32
|
-
end
|
33
|
-
|
34
|
-
def to_literal_string
|
35
|
-
return write
|
36
|
-
end
|
37
|
-
|
38
|
-
def to_literal
|
39
|
-
return Literal.new(self.clone)
|
40
|
-
end
|
41
|
-
|
42
|
-
# Returns a statement declaring a variable with the value of
|
43
|
-
# this string e.g.
|
44
|
-
#
|
45
|
-
# 'Sparky'.to_declaration_statement -> var_x = 'Sparky'
|
46
|
-
#
|
47
|
-
def to_declared_variable_statement
|
48
|
-
return Statement.new(StringVariable.new(self),Equal.new,self.to_declaration)
|
49
|
-
end
|
50
|
-
|
51
|
-
# http://snippets.dzone.com/posts/show/880
|
52
|
-
# TODO There is a BASH command `quote` and `quote_readline` that
|
53
|
-
# might be more useful here.
|
54
|
-
def escape_single_quotes
|
55
|
-
return self.gsub(/[']/, '\\\\\'')
|
56
|
-
end
|
57
|
-
|
58
|
-
def cauldron_method_calls
|
59
|
-
return ['.length']
|
60
|
-
end
|
61
|
-
|
62
|
-
end
|
63
|
-
|
data/lib/ruby_code/Symbol.rb
DELETED
data/lib/theories.rb
DELETED
@@ -1,166 +0,0 @@
|
|
1
|
-
|
2
|
-
# TODO Not so keen on loading each theory in super - rather do it in the methods
|
3
|
-
# it is needed.
|
4
|
-
|
5
|
-
# TODO Allot of this functionalty should be moved to the rake tasks
|
6
|
-
|
7
|
-
module ContainsTheories
|
8
|
-
|
9
|
-
def setup
|
10
|
-
@theory_1 = Theory.load_theory(1)
|
11
|
-
@theory_2 = Theory.load_theory(2)
|
12
|
-
@theory_3 = theory_3
|
13
|
-
end
|
14
|
-
|
15
|
-
def theory_3
|
16
|
-
|
17
|
-
dependent_one = TheoryDependent.new(
|
18
|
-
StringToTheory.run(
|
19
|
-
"if(var1.realise2(var2[var3][:params]).params[0].value.length == var2[var3][:output])\nreturn true\nend"
|
20
|
-
)
|
21
|
-
)
|
22
|
-
action_one = TheoryAction.new(
|
23
|
-
TheoryStatement.new(
|
24
|
-
StringToTheory.run(
|
25
|
-
'Statement.new(Return.new,InstanceCallContainer.new(var1.params[0],StringLength.new))'
|
26
|
-
)
|
27
|
-
),
|
28
|
-
StringToTheory.run("var1.statement_id")
|
29
|
-
)
|
30
|
-
result_one = TheoryResult.new(
|
31
|
-
StringToTheory.run("if(var1.all_pass?(var2))\nreturn true\nend"),true
|
32
|
-
)
|
33
|
-
Theory.new([dependent_one],action_one,[result_one])
|
34
|
-
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
def load_theory_implementation(implementation_id)
|
39
|
-
directory_path = $LOC+File.join('test','fixtures','theory_implementations',implementation_id.to_s)
|
40
|
-
raise StandardError.new("Theory fixture #{implementation_id} does not exist") unless(File.exists?(directory_path))
|
41
|
-
dump_file = File.open(File.join(directory_path,'dump'),'r')
|
42
|
-
return Marshal.load(dump_file.read)
|
43
|
-
end
|
44
|
-
|
45
|
-
def create_theory_implementation
|
46
|
-
|
47
|
-
theory = Theory.load_theory(6)
|
48
|
-
potential_values = [
|
49
|
-
Parser.run('test_cases[0][:params][0]'),
|
50
|
-
Parser.run('test_cases[0][:params]'),
|
51
|
-
Parser.run('test_cases[0][:output]'),
|
52
|
-
Parser.run('test_cases[0]'),
|
53
|
-
Parser.run('test_cases'),
|
54
|
-
Parser.run('runtime_method')
|
55
|
-
]
|
56
|
-
results = theory.rewrite_permutations(potential_values)
|
57
|
-
# NOTE: Rember use grep -A and -B to match particular cases
|
58
|
-
implemented_theory = results[332]
|
59
|
-
return implemented_theory
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
def save_theory_implementation(implementation_id,theory_id,implementation=nil)
|
64
|
-
StandardLogger.instance.warning("Caution: Creating new theory implementation #{implementation_id}")
|
65
|
-
directory_path = $LOC+File.join('test','fixtures','theory_implementations',implementation_id.to_s)
|
66
|
-
if(File.exists?(directory_path))
|
67
|
-
StandardLogger.instance.warning("Theory Implementation ficture already exists #{theory_id} -cancelling")
|
68
|
-
return
|
69
|
-
else
|
70
|
-
FileUtils.mkdir_p(directory_path)
|
71
|
-
end
|
72
|
-
|
73
|
-
if implementation.nil? then implementation = create_theory_implementation end
|
74
|
-
|
75
|
-
desc_file = File.open(File.join(directory_path,'desc.txt'),'w')
|
76
|
-
desc_file << implementation.describe
|
77
|
-
desc_file.close
|
78
|
-
|
79
|
-
dump_file = File.open(File.join(directory_path,'dump'),'w')
|
80
|
-
data = Marshal.dump(implementation)
|
81
|
-
dump_file << data
|
82
|
-
dump_file.close
|
83
|
-
|
84
|
-
dump_file = File.open(File.join(directory_path,'theory_id'),'w')
|
85
|
-
dump_file << theory_id.to_s
|
86
|
-
dump_file.close
|
87
|
-
|
88
|
-
end
|
89
|
-
|
90
|
-
def load_implementation_result(result_id)
|
91
|
-
directory_path = $LOC+File.join('test','fixtures','implementation_results',result_id.to_s)
|
92
|
-
raise StandardError.new("ImplementationResult fixture #{result_id} does not exist") unless(File.exists?(directory_path))
|
93
|
-
dump_file = File.open(File.join(directory_path,'dump'),'r')
|
94
|
-
return Marshal.load(dump_file)
|
95
|
-
end
|
96
|
-
|
97
|
-
# This method is used on to create a theory fixture for use in the test
|
98
|
-
def create_theory
|
99
|
-
|
100
|
-
theory_id = "16"
|
101
|
-
|
102
|
-
StandardLogger.instance.warning("NOTE: Creating new theory fixture #{theory_id.to_s}")
|
103
|
-
# Does a directory for this theory fixture already exist.
|
104
|
-
directory_path = $LOC+File.join('test','fixtures','theories',theory_id.to_s)
|
105
|
-
if(File.exists?(directory_path))
|
106
|
-
StandardLogger.instance.warning("Theory ficture already exists #{theory_id.to_s} -cancelling")
|
107
|
-
return
|
108
|
-
else
|
109
|
-
|
110
|
-
# Create the directory
|
111
|
-
FileUtils.mkdir_p(directory_path)
|
112
|
-
|
113
|
-
end
|
114
|
-
|
115
|
-
# This is just updated here - nothing fancy
|
116
|
-
declaration = %q!
|
117
|
-
dependent_one = TheoryDependent.new(
|
118
|
-
StringToTheory.run(
|
119
|
-
"if(var1.kind_of?(RuntimeMethod))\nreturn true\nend"
|
120
|
-
)
|
121
|
-
)
|
122
|
-
dependent_two = TheoryDependent.new(
|
123
|
-
StringToTheory.run(
|
124
|
-
"if(var3[var4].kind_of?(CTestCase))\nreturn true\nend"
|
125
|
-
)
|
126
|
-
)
|
127
|
-
action = TheoryAction.new(
|
128
|
-
TheoryStatement.new(
|
129
|
-
StringToTheory.run(
|
130
|
-
'BlockStatement.new(Statement.new(InstanceCallContainer.new(Container.new(InstanceCallContainer.new(var1.params[var2],StringLength.new),Subtract.new,1),Times.new)))'
|
131
|
-
)
|
132
|
-
),
|
133
|
-
StringToTheory.run('var1.statement_id')
|
134
|
-
)
|
135
|
-
result_one = TheoryResult.new(
|
136
|
-
StringToTheory.run(
|
137
|
-
"if(var1.history2(var3[var4]).select {|x| x['statement_id'] == var3.last.statement_id} == var3[var4][:params][var2].length-1)\nreturn true\nend"
|
138
|
-
)
|
139
|
-
)
|
140
|
-
Theory.new(
|
141
|
-
[dependent_one,dependent_two],
|
142
|
-
action,
|
143
|
-
[result_one]
|
144
|
-
)
|
145
|
-
!
|
146
|
-
|
147
|
-
# Save the declaration (incase the theory needs modified
|
148
|
-
declaration_file = File.open(File.join(directory_path,'declaration.txt'),'w+')
|
149
|
-
declaration_file << declaration
|
150
|
-
declaration_file.close
|
151
|
-
|
152
|
-
theory = eval declaration
|
153
|
-
data = Marshal.dump(theory)
|
154
|
-
|
155
|
-
# TODO Shouldn't include colours for this description
|
156
|
-
desc_file = File.open(File.join(directory_path,'desc'),'w+')
|
157
|
-
desc_file << theory.describe
|
158
|
-
desc_file.close
|
159
|
-
|
160
|
-
dump_file = File.open(File.join(directory_path,'dump'),'w+')
|
161
|
-
dump_file << data
|
162
|
-
dump_file.close
|
163
|
-
|
164
|
-
end
|
165
|
-
|
166
|
-
end
|