Sha256: 2229a44bd4225cdb021e3ee6992cfc0f23d6c46d7b38e400e24719509d69b494

Contents?: true

Size: 1.78 KB

Versions: 20

Compression:

Stored size: 1.78 KB

Contents

#! /usr/bin/env ruby
require 'spec_helper'
require 'puppet/pops'
require 'puppet/pops/pn'

module Puppet::Pops
module Model

describe 'Puppet::Pops::Model::PNTransformer' do
  def call(name, *elements)
    PN::Call.new(name, *elements.map { |e| lit(e) })
  end

  context 'transforms the expression' do
    it '"\'hello\'" into the corresponding literal' do
      x = Factory.literal('hello')
      expect(Puppet::Pops::Model::PNTransformer.transform(x.model)).to eq(lit('hello'))
    end

    it '"32" into into the corresponding literal' do
      x = Factory.literal(32)
      expect(Puppet::Pops::Model::PNTransformer.transform(x.model)).to eq(lit(32))
    end

    it '"true" into into the corresponding literal' do
      x = Factory.literal(true)
      expect(Puppet::Pops::Model::PNTransformer.transform(x.model)).to eq(lit(true))
    end

    it '"10 + 20" into (+ 10 20)' do
      x = Factory.literal(10) + Factory.literal(20)
      expect(Puppet::Pops::Model::PNTransformer.transform(x.model)).to eq(call('+', 10, 20))
    end

    it '"[10, 20]" into into (array 10 20)' do
      x = Factory.literal([10, 20])
      expect(Puppet::Pops::Model::PNTransformer.transform(x.model)).to eq(call('array', 10, 20))
    end

    it '"{a => 1, b => 2}" into into (hash (=> ("a" 1)) (=> ("b" 2)))' do
      x = Factory.HASH([Factory.KEY_ENTRY(Factory.literal('a'), Factory.literal(1)), Factory.KEY_ENTRY(Factory.literal('b'), Factory.literal(2))])
      expect(Puppet::Pops::Model::PNTransformer.transform(x.model)).to eq(
        call('hash', call('=>', 'a', 1), call('=>', 'b', 2)))
    end

    it 'replaces empty/nil body with a Nop' do
      expect(Puppet::Pops::Model::PNTransformer.transform(nil)).to eq(call('nop'))
    end
  end

  def lit(value)
    value.is_a?(PN) ? value : PN::Literal.new(value)
  end
end
end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
puppet-6.4.0 spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.4.0-x86-mingw32 spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.4.0-x64-mingw32 spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.4.0-universal-darwin spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.0.7 spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.0.7-x86-mingw32 spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.0.7-x64-mingw32 spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.0.7-universal-darwin spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.3.0 spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.3.0-x86-mingw32 spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.3.0-x64-mingw32 spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.3.0-universal-darwin spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.2.0 spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.2.0-x86-mingw32 spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.2.0-x64-mingw32 spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.2.0-universal-darwin spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.0.5 spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.0.5-x86-mingw32 spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.0.5-x64-mingw32 spec/unit/pops/model/pn_transformer_spec.rb
puppet-6.0.5-universal-darwin spec/unit/pops/model/pn_transformer_spec.rb