sine_axiom_selection_spec.rb revision d1c88b94cae4567bdbd23fc952268a0217e940f7
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenrequire 'spec_helper'
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainendescribe SineAxiomSelection do
8aacc9e7c84f8376822823ec98c2f551d4919b2eTimo Sirainen context "respond to the parent's methods" do
16f816d3f3c32ae3351834253f52ddd0212bcbf3Timo Sirainen let(:sine_axiom_selection) { create :sine_axiom_selection }
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen subject { sine_axiom_selection }
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen %i(goal ontology finished lock_key mark_as_finished!
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen proof_attempt_configurations axioms).each do |method|
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen it method do
463e82bdf0e990f4f2252d2b53ea23a5abe5883cTimo Sirainen expect(subject).to respond_to(method)
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen end
d41573018e85896ec836d897fd554e87126147f5Timo Sirainen end
d41573018e85896ec836d897fd554e87126147f5Timo Sirainen end
d41573018e85896ec836d897fd554e87126147f5Timo Sirainen
d41573018e85896ec836d897fd554e87126147f5Timo Sirainen context 'validations' do
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainen let(:sine_axiom_selection) { create :sine_axiom_selection }
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainen subject { sine_axiom_selection }
2c677e9d339bc91d5b54376ba2986f71476c06abTimo Sirainen
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainen it 'is valid' do
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainen expect(subject).to be_valid
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainen end
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainen
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainen context 'depth_limit' do
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainen context '10' do
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainen before { subject.depth_limit = 10 }
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen it 'is valid' do
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen expect(subject).to be_valid
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen end
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen end
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen context 'less than -1' do
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen before { subject.depth_limit = -2 }
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen it 'is invalid' do
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen expect(subject).to be_invalid
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen end
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen end
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen context 'float' do
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen before { subject.depth_limit = 1.2 }
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen it 'is invalid' do
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen expect(subject).to be_invalid
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen end
2c677e9d339bc91d5b54376ba2986f71476c06abTimo Sirainen end
51795bfe9d05d92fe942cb451aec2b9d16d32a11Timo Sirainen
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainen context 'nil' do
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainen before { subject.depth_limit = nil }
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen it 'is invalid' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen expect(subject).to be_invalid
bbf796c17f02538058d7559bfe96d677e5b55015Timo Sirainen end
e6d7d19c328e7043ad35d5a52c1617bde915a16fTimo Sirainen end
d7095f3a4466fbb78b2d5eb3d322bc15a5b0ab1fTimo Sirainen end
153de7823e64c67678b3fc95719c41a8ec5b864dTimo Sirainen
153de7823e64c67678b3fc95719c41a8ec5b864dTimo Sirainen context 'commonness_threshold' do
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen context 'less than 0' do
b0be0bead3d6963149f7f2a9504b8ab5aced9af5Timo Sirainen before { subject.commonness_threshold = -1 }
bbf796c17f02538058d7559bfe96d677e5b55015Timo Sirainen it 'is invalid' do
e6d7d19c328e7043ad35d5a52c1617bde915a16fTimo Sirainen expect(subject).to be_invalid
8d131435ba4648c8821160ec38d508c97177c715Timo Sirainen end
9315dd69233d554452df0c12bc57002d2042a8f4Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen
538c58fc95200fcc5e91abdda8b912b574a2f968Timo Sirainen context 'float' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen before { subject.commonness_threshold = 1.2 }
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen it 'is invalid' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen expect(subject).to be_invalid
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainen end
bf91bed88d4e294b4577ba2a3b14d87cf35ae135Timo Sirainen end
bf91bed88d4e294b4577ba2a3b14d87cf35ae135Timo Sirainen
bf91bed88d4e294b4577ba2a3b14d87cf35ae135Timo Sirainen context 'nil' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen before { subject.commonness_threshold = nil }
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen it 'is invalid' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen expect(subject).to be_invalid
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
bf91bed88d4e294b4577ba2a3b14d87cf35ae135Timo Sirainen end
bf91bed88d4e294b4577ba2a3b14d87cf35ae135Timo Sirainen
bf91bed88d4e294b4577ba2a3b14d87cf35ae135Timo Sirainen context 'tolerance' do
bf91bed88d4e294b4577ba2a3b14d87cf35ae135Timo Sirainen context 'less than 1' do
bf91bed88d4e294b4577ba2a3b14d87cf35ae135Timo Sirainen before { subject.tolerance = 0 }
bf91bed88d4e294b4577ba2a3b14d87cf35ae135Timo Sirainen it 'is invalid' do
bf91bed88d4e294b4577ba2a3b14d87cf35ae135Timo Sirainen expect(subject).to be_invalid
bf91bed88d4e294b4577ba2a3b14d87cf35ae135Timo Sirainen end
bf91bed88d4e294b4577ba2a3b14d87cf35ae135Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen context 'float' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen before { subject.tolerance = 1.5 }
bf91bed88d4e294b4577ba2a3b14d87cf35ae135Timo Sirainen it 'is valid' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen expect(subject).to be_valid
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
bbf796c17f02538058d7559bfe96d677e5b55015Timo Sirainen end
8aacc9e7c84f8376822823ec98c2f551d4919b2eTimo Sirainen
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen context 'nil' do
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen before { subject.tolerance = nil }
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen it 'is invalid' do
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen expect(subject).to be_invalid
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen end
d482b35af87f5fd872bad007da0475813a401a49Timo Sirainen end
d482b35af87f5fd872bad007da0475813a401a49Timo Sirainen end
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen end
d482b35af87f5fd872bad007da0475813a401a49Timo Sirainen
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen context 'parameter influence' do
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen setup_hets
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen let(:repository) { create :repository }
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen let(:ontology_fixture_file) { %w(prove/Subclass casl) }
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen let(:ontology_filepath) { ontology_fixture_file.join('.') }
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen before { stub_hets_for(ontology_filepath) }
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen let(:parent_ontology_version) do
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen version = version_for_file(repository,
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen ontology_file(*ontology_fixture_file))
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen version.parse
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen version
d482b35af87f5fd872bad007da0475813a401a49Timo Sirainen end
d482b35af87f5fd872bad007da0475813a401a49Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen let(:parent_ontology) { parent_ontology_version.ontology }
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen let(:ontology) do
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen parent_ontology.children.where(name: 'SubclassToleranceOnePointFive').first
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen end
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen let(:theorem) { ontology.theorems.first }
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen let(:proof_attempt) { create :proof_attempt, theorem: theorem }
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen let(:sine_axiom_selection) { create :sine_axiom_selection }
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen subject { sine_axiom_selection }
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen let!(:proof_attempt_configuration) do
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen pac = proof_attempt.proof_attempt_configuration
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen pac.axiom_selection = subject.axiom_selection
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen subject.axiom_selection.proof_attempt_configurations = [pac]
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen pac
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen end
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen context 'commonness threshold' do
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen context '0' do
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen before do
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen subject.commonness_threshold = 0
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen subject.call
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen end
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen it 'selects only transitivity' do
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen expect(subject.axioms.map(&:name)).to match_array(['transitivity'])
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen end
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen end
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen context '2' do
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen before do
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen subject.commonness_threshold = 2
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen subject.call
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen end
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen it 'selects more axioms' do
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen expect(subject.axioms.map(&:name)).
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen to match_array(['guiness < beer', 'not stone < liquid',
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen 'petrol < liquid', 'pilsner < beer',
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen 'transitivity'])
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen context '3' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen before do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen subject.commonness_threshold = 3
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen subject.call
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
9bc6e10d9c6d6ffb4a2ed49a3b3d2a180f2a87a3Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen it 'selects all axioms' do
fa5957ffc9b676bfd649fa9953e63e72ee4ebeb4Timo Sirainen expect(subject.axioms.map(&:name)).
fa5957ffc9b676bfd649fa9953e63e72ee4ebeb4Timo Sirainen to match_array(['beer < beverage', 'beverage < liquid',
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen 'guiness < beer', 'not stone < liquid',
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen 'petrol < liquid', 'pilsner < beer',
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen 'transitivity'])
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen end
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen end
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen end
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen context 'commonness threshold with depth limit 0' do
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen before { subject.depth_limit = 0 }
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen context '0' do
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen before do
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen subject.commonness_threshold = 0
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen subject.call
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen it 'selects nothing' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen expect(subject.axioms.map(&:name)).to match_array([])
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen context '2' do
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen before do
9315dd69233d554452df0c12bc57002d2042a8f4Timo Sirainen subject.commonness_threshold = 2
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen subject.call
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen it 'selects more axioms' do
7889c9f65e23c83fc31cecf304cab4ab070d6aa1Timo Sirainen expect(subject.axioms.map(&:name)).
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen to match_array(['guiness < beer', 'not stone < liquid',
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen 'petrol < liquid', 'pilsner < beer'])
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen context '3' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen before do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen subject.commonness_threshold = 3
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen subject.call
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen
1cad0dd34667548ba39f794ddeb9fc486cf4c666Timo Sirainen it 'selects all axioms but transitivity' do
fa5957ffc9b676bfd649fa9953e63e72ee4ebeb4Timo Sirainen expect(subject.axioms.map(&:name)).
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen to match_array(['beer < beverage', 'beverage < liquid',
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen 'guiness < beer', 'not stone < liquid',
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen 'petrol < liquid', 'pilsner < beer'])
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen context 'depth limit' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen context '0' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen before do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen subject.depth_limit = 0
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen subject.call
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen it 'selects nothing' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen expect(subject.axioms.map(&:name)).to match_array([])
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen context '1' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen before do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen subject.depth_limit = 1
075f90abe6b6b12dc72bca21bfce8086b4b190ecTimo Sirainen subject.call
9bc6e10d9c6d6ffb4a2ed49a3b3d2a180f2a87a3Timo Sirainen end
9bc6e10d9c6d6ffb4a2ed49a3b3d2a180f2a87a3Timo Sirainen
9bc6e10d9c6d6ffb4a2ed49a3b3d2a180f2a87a3Timo Sirainen it 'selects transitivity' do
9bc6e10d9c6d6ffb4a2ed49a3b3d2a180f2a87a3Timo Sirainen expect(subject.axioms.map(&:name)).to match_array(['transitivity'])
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen context '2' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen before do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen subject.depth_limit = 2
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen subject.call
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen it 'selects transitivity' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen expect(subject.axioms.map(&:name)).to match_array(['transitivity'])
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen end
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen context 'depth limit with higher tolerance' do
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen before { subject.tolerance = 1.5 }
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen context '0' do
abfcd9f73b9ad1eeef4fe6e9940383defabf68c3Timo Sirainen before do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen subject.depth_limit = 0
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen subject.call
abfcd9f73b9ad1eeef4fe6e9940383defabf68c3Timo Sirainen end
abfcd9f73b9ad1eeef4fe6e9940383defabf68c3Timo Sirainen
abfcd9f73b9ad1eeef4fe6e9940383defabf68c3Timo Sirainen it 'selects nothing' do
abfcd9f73b9ad1eeef4fe6e9940383defabf68c3Timo Sirainen expect(subject.axioms.map(&:name)).to match_array([])
abfcd9f73b9ad1eeef4fe6e9940383defabf68c3Timo Sirainen end
abfcd9f73b9ad1eeef4fe6e9940383defabf68c3Timo Sirainen end
abfcd9f73b9ad1eeef4fe6e9940383defabf68c3Timo Sirainen
cd5ee8630497fdbd853ef588a858b4ef619a5e03Timo Sirainen context '1' do
cd5ee8630497fdbd853ef588a858b4ef619a5e03Timo Sirainen before do
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen subject.depth_limit = 1
7394389230750c45b105cdefb5850c81cae8cdc0Timo Sirainen subject.call
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen end
7e94cf9d70ce9fdeccb7a85ff400b899e6386f36Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen it 'selects more axioms' do
7e94cf9d70ce9fdeccb7a85ff400b899e6386f36Timo Sirainen expect(subject.axioms.map(&:name)).
1b3bb8d39686ed24730cbc31cc9a33dc62c8c6c3Timo Sirainen to match_array(['beer < beverage', 'beverage < liquid',
9887c39c5ba429169389153ca99de49e084a73f0Timo Sirainen 'transitivity'])
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen end
1b3bb8d39686ed24730cbc31cc9a33dc62c8c6c3Timo Sirainen end
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen context '2' do
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen before do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen subject.depth_limit = 2
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen subject.call
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
bf91bed88d4e294b4577ba2a3b14d87cf35ae135Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen it 'selects the same axioms as with 1' do
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen expect(subject.axioms.map(&:name)).
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen to match_array(['beer < beverage', 'beverage < liquid',
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen 'transitivity'])
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen context 'tolerance' do
5a07b37a9df398b5189c14872a600384208ab74bTimo Sirainen context '1' do
5a07b37a9df398b5189c14872a600384208ab74bTimo Sirainen before do
1b3bb8d39686ed24730cbc31cc9a33dc62c8c6c3Timo Sirainen subject.tolerance = 1
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen subject.call
1b3bb8d39686ed24730cbc31cc9a33dc62c8c6c3Timo Sirainen end
1b3bb8d39686ed24730cbc31cc9a33dc62c8c6c3Timo Sirainen
ace3c14e47a5a865df8aeea2fabc993b609dd163Timo Sirainen it 'selects only transitivity' do
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen expect(subject.axioms.map(&:name)).to match_array(['transitivity'])
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
41bb0aa8e357876bc9a1916a37c9e3e78e5f8185Timo Sirainen
dd8de60250511cc729b67249e61dfc6b4debff11Timo Sirainen context '1.5' do
1b3bb8d39686ed24730cbc31cc9a33dc62c8c6c3Timo Sirainen before do
dd8de60250511cc729b67249e61dfc6b4debff11Timo Sirainen subject.tolerance = 1.5
51920d00fa50edf7b2e9b1019288d64b7abee7f3Timo Sirainen subject.call
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen end
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen it 'selects more axioms' do
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen expect(subject.axioms.map(&:name)).
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen to match_array(['beer < beverage', 'beverage < liquid',
cd5ee8630497fdbd853ef588a858b4ef619a5e03Timo Sirainen 'transitivity'])
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen end
7394389230750c45b105cdefb5850c81cae8cdc0Timo Sirainen end
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen
5a07b37a9df398b5189c14872a600384208ab74bTimo Sirainen context '3' do
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen before do
16c89b1260c9d07c01c83a9219424d3727069b2eTimo Sirainen subject.tolerance = 3
659fe5d24825b160cae512538088020d97a60239Timo Sirainen subject.call
567e57b09a49bbb2a146b13f8617698eb56237feTimo Sirainen end
567e57b09a49bbb2a146b13f8617698eb56237feTimo Sirainen
567e57b09a49bbb2a146b13f8617698eb56237feTimo Sirainen it 'selects all axioms' do
659fe5d24825b160cae512538088020d97a60239Timo Sirainen expect(subject.axioms.map(&:name)).
659fe5d24825b160cae512538088020d97a60239Timo Sirainen to match_array(['beer < beverage', 'beverage < liquid',
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen 'guiness < beer', 'not stone < liquid',
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen 'petrol < liquid', 'pilsner < beer',
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainen 'transitivity'])
41bb0aa8e357876bc9a1916a37c9e3e78e5f8185Timo Sirainen end
1b3bb8d39686ed24730cbc31cc9a33dc62c8c6c3Timo Sirainen end
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen end
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen end
b35f7104715edee0cfac6d46ab0b342033867eb7Timo Sirainenend
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen