Sha256: 0f4d22533907e88474ef24585bd48711e3de3e9d27c3f2296bc68326cd5a72cd

Contents?: true

Size: 1.64 KB

Versions: 1

Compression:

Stored size: 1.64 KB

Contents

require 'spec_helper'

describe DpllSolver::Formulas::Clause do
  let(:var1) { DpllSolver::Formulas::Variable.new("x1") }
  let(:var2) { DpllSolver::Formulas::Variable.new("x2") }
  let(:lit1) { DpllSolver::Formulas::Literal.new(var1, true) }
  let(:lit1_neg) { DpllSolver::Formulas::Literal.new(var1, false) }
  let(:lit2) { DpllSolver::Formulas::Literal.new(var2, true) }
  let(:c) { DpllSolver::Formulas::Clause.new()}
  let(:c1) { DpllSolver::Formulas::Clause.new(lit1)}
  let(:c2) { DpllSolver::Formulas::Clause.new(lit1, lit2)}

  it 'should test if clause is a unit clause' do
    expect(c1.unit?).to eql true
    expect(c2.unit?).to eql false
  end

  it 'should add and remove literal to clause' do
    expect(c1.add(lit2)).to eql c2
    c2.delete(lit2)
    expect(c2.unit?).to eql true
    expect(c2.delete(DpllSolver::Formulas::Literal.new(var1, true)).empty?).to eql true
  end

  it 'should detect if a clause is empty' do
    expect(c.empty?).to eql true
    expect(c1.empty?).to eql false
  end

  it 'should detect if a clause contains the given literal' do
    expect(c.include?(lit1)).to eql false
    expect(c1.include?(lit1)).to eql true
  end

  it 'should union a clause to an other' do
    c.union(c1)
    expect(c).to eql c1
  end

  it 'should get the unit literal' do
    c2.add(lit1_neg)
    expect(c2.get_unit_literal.nil?).to eql true
    expect(c1.get_unit_literal).to eql lit1
  end

  it 'should compare two clauses' do
    expect(c == c).to eql true
    expect(c1 == DpllSolver::Formulas::Clause.new(lit1)).to eql true
    expect(c1 == c2).to eql false
  end

  it 'should convert clause to string' do
    expect(c2.to_s).to eql "{x1, x2}"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dpll_solver-0.0.1 spec/formulas/clause_spec.rb