Sha256: 48bf72dc37a3b408f9b275430b4df7043ebd61c59bb0d46c191ec4ce289ab18a
Contents?: true
Size: 1.2 KB
Versions: 3
Compression:
Stored size: 1.2 KB
Contents
RSpec.describe Operations::Negation do subject(:operation) { Operations::Negation.new(is_int) } include_context 'predicates' let(:is_int) { Rule::Predicate.build(int?) } describe '#call' do it 'negates its rule' do expect(operation.('19')).to be_success expect(operation.(17)).to be_failure end context 'double negation' do subject(:double_negation) { Operations::Negation.new(operation) } it 'works as rule' do expect(double_negation.('19')).to be_failure expect(double_negation.(17)).to be_success end end end describe '#to_ast' do it 'returns ast' do expect(operation.to_ast).to eql( [:not, [:predicate, [:int?, [[:input, Undefined]]]]] ) end it 'returns result ast' do expect(operation.(17).to_ast).to eql( [:not, [:predicate, [:int?, [[:input, 17]]]]] ) end it 'returns result ast with an :id' do expect(operation.with(id: :age).(17).to_ast).to eql( [:failure, [:age, [:not, [:predicate, [:int?, [[:input, 17]]]]]]] ) end end describe '#to_s' do it 'returns string representation' do expect(operation.to_s).to eql('not(int?)') end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dry-logic-1.0.0 | spec/unit/operations/negation_spec.rb |
dry-logic-0.6.1 | spec/unit/operations/negation_spec.rb |
dry-logic-0.6.0 | spec/unit/operations/negation_spec.rb |