Sha256: 57b24f2d418670956d947609ef8151e491892b0844186f9e601824ceb409d822
Contents?: true
Size: 1.48 KB
Versions: 1
Compression:
Stored size: 1.48 KB
Contents
require 'spec_helper' describe DpllSolver::Parsers::Transformer do let(:g){ DpllSolver::Parsers::Grammar.new } let(:trans){ DpllSolver::Parsers::Transformer.new } it 'should transform literals' do verum = g.parse('T') falsum = g.parse('F') var = g.parse('x1') expect(trans.apply(verum)).to eql DpllSolver::Formulas::Verum expect(trans.apply(falsum)).to eql DpllSolver::Formulas::Falsum expect(trans.apply(var)).to eql DpllSolver::Formulas::Variable.new('x1') end it 'should transform functions' do not_op = g.parse('-z') or_op = g.parse('(x OR y)') and_op = g.parse('(x AND y)') expect(trans.apply(not_op)).to eql DpllSolver::Formulas::Not.new(DpllSolver::Formulas::Variable.new('z')) expect(trans.apply(or_op)).to eql DpllSolver::Formulas::Or.new(DpllSolver::Formulas::Variable.new('x'), DpllSolver::Formulas::Variable.new('y')) expect(trans.apply(and_op)).to eql DpllSolver::Formulas::And.new(DpllSolver::Formulas::Variable.new('x'), DpllSolver::Formulas::Variable.new('y')) end it 'should transform nested functions' do f = g.parse('-(a OR ((b OR -c) AND d))') parsed = DpllSolver::Formulas::Not.new(DpllSolver::Formulas::Or.new(DpllSolver::Formulas::Variable.new('a'), DpllSolver::Formulas::And.new(DpllSolver::Formulas::Or.new(DpllSolver::Formulas::Variable.new('b'), DpllSolver::Formulas::Not.new(DpllSolver::Formulas::Variable.new('c'))), DpllSolver::Formulas::Variable.new('d')))) expect(trans.apply(f)).to eql parsed end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dpll_solver-0.0.1 | spec/parsers/transformer_spec.rb |