summaryrefslogtreecommitdiffstats
path: root/spec/unit/parser/ast/astarray_spec.rb
diff options
context:
space:
mode:
authorMarkus Roberts <Markus@reality.com>2010-06-28 17:10:20 -0700
committerMarkus Roberts <Markus@reality.com>2010-06-28 17:10:20 -0700
commitfdc8c3509b5ac5bc170c54d72b2c2bafb58409f2 (patch)
tree6ed2204d72c6924e867a1320d3b7e6728035f1a1 /spec/unit/parser/ast/astarray_spec.rb
parent9a94ee274c39c261cd49e688a7bd7ea0eb73af50 (diff)
downloadpuppet-fdc8c3509b5ac5bc170c54d72b2c2bafb58409f2.tar.gz
puppet-fdc8c3509b5ac5bc170c54d72b2c2bafb58409f2.tar.xz
puppet-fdc8c3509b5ac5bc170c54d72b2c2bafb58409f2.zip
[#3994-part 3] rename spec tests from *_spec_spec to *_spec.rb
Part 2 re-did the change on the spec files, which it shouldn't have.
Diffstat (limited to 'spec/unit/parser/ast/astarray_spec.rb')
-rwxr-xr-xspec/unit/parser/ast/astarray_spec.rb72
1 files changed, 72 insertions, 0 deletions
diff --git a/spec/unit/parser/ast/astarray_spec.rb b/spec/unit/parser/ast/astarray_spec.rb
new file mode 100755
index 000000000..1791c711c
--- /dev/null
+++ b/spec/unit/parser/ast/astarray_spec.rb
@@ -0,0 +1,72 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+describe Puppet::Parser::AST::ASTArray do
+ before :each do
+ @scope = Puppet::Parser::Scope.new()
+ end
+
+ it "should have a [] accessor" do
+ array = Puppet::Parser::AST::ASTArray.new :children => []
+ array.should respond_to(:[])
+ end
+
+ it "should evaluate all its children" do
+ item1 = stub "item1", :is_a? => true
+ item2 = stub "item2", :is_a? => true
+
+ item1.expects(:safeevaluate).with(@scope).returns(123)
+ item2.expects(:safeevaluate).with(@scope).returns(246)
+
+ operator = Puppet::Parser::AST::ASTArray.new :children => [item1,item2]
+ operator.evaluate(@scope)
+ end
+
+ it "should evaluate childrens of type ASTArray" do
+ item1 = stub "item1", :is_a? => true
+ item2 = stub "item2"
+ item2.stubs(:is_a?).with(Puppet::Parser::AST).returns(true)
+ item2.stubs(:instance_of?).with(Puppet::Parser::AST::ASTArray).returns(true)
+ item2.stubs(:each).yields(item1)
+
+ item1.expects(:safeevaluate).with(@scope).returns(123)
+
+ operator = Puppet::Parser::AST::ASTArray.new :children => [item2]
+ operator.evaluate(@scope).should == [123]
+ end
+
+ it "should flatten children coming from children ASTArray" do
+ item1 = stub "item1", :is_a? => true
+ item2 = stub "item2"
+ item2.stubs(:is_a?).with(Puppet::Parser::AST).returns(true)
+ item2.stubs(:instance_of?).with(Puppet::Parser::AST::ASTArray).returns(true)
+ item2.stubs(:each).yields([item1])
+
+ item1.expects(:safeevaluate).with(@scope).returns(123)
+
+ operator = Puppet::Parser::AST::ASTArray.new :children => [item2]
+ operator.evaluate(@scope).should == [123]
+ end
+
+ it "should not flatten the results of children evaluation" do
+ item1 = stub "item1", :is_a? => true
+ item2 = stub "item2"
+ item2.stubs(:is_a?).with(Puppet::Parser::AST).returns(true)
+ item2.stubs(:instance_of?).with(Puppet::Parser::AST::ASTArray).returns(true)
+ item2.stubs(:each).yields([item1])
+
+ item1.expects(:safeevaluate).with(@scope).returns([123])
+
+ operator = Puppet::Parser::AST::ASTArray.new :children => [item2]
+ operator.evaluate(@scope).should == [[123]]
+ end
+
+ it "should return a valid string with to_s" do
+ a = stub 'a', :is_a? => true, :to_s => "a"
+ b = stub 'b', :is_a? => true, :to_s => "b"
+ array = Puppet::Parser::AST::ASTArray.new :children => [a,b]
+
+ array.to_s.should == "[a, b]"
+ end
+end