Sha256: 553b553c94a853f82398186dc847f8260a731ec602e52b98d1f4578559722270

Contents?: true

Size: 1.42 KB

Versions: 3

Compression:

Stored size: 1.42 KB

Contents

require_relative '../test-util'

describe 'Pione::Model::Assignment' do
  before do
    @var_x = Variable.new("X")
    @var_y = Variable.new("Y")
    @var_z = Variable.new("Z")
    @a = PioneString.new("a")
    @b = PioneString.new("b")
  end

  it 'should be equal' do
    x1 = Assignment.new(@var_x, @a)
    x2 = Assignment.new(@var_x, @a)
    x1.should.be.equal x2
  end

  it 'should not be equal' do
    x1 = Assignment.new(@var_x, @a)
    x2 = Assignment.new(@var_x, @b)
    y1 = Assignment.new(@var_y, @a)
    y2 = Assignment.new(@var_y, @b)
    x1.should.not.be.equal x2
    x1.should.not.be.equal y1
    x1.should.not.be.equal y2
  end

  it 'should push variable and value into variable table' do
    vtable = VariableTable.new
    Assignment.new(@var_x, @a).eval(vtable).should == @a
    vtable.get(@var_x).should == @a
  end

  it 'should evaluate the value' do
    vtable = VariableTable.new
    Assignment.new(
      @var_x,
      Message.new("as_string", IntegerSequence.new([1.to_pione]))
    ).eval(vtable)
    @var_x.eval(vtable).should == StringSequence.new([PioneString.new("1")])
  end

  it 'should update variable table' do
    vtable = VariableTable.new
    Assignment.new(@var_x, @a).eval(vtable).should == @a
    vtable.get(@var_x).should == @a
    Assignment.new(@var_y, @var_z).eval(vtable).should == @var_z
    vtable.get(@var_y).should == @var_z
    vtable.set(@var_z, @b)
    vtable.get(@var_y).should == @b
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pione-0.2.2 test/model/spec_assignment.rb
pione-0.2.1 test/model/spec_assignment.rb
pione-0.2.0 test/model/spec_assignment.rb