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