On Tue, 2008-09-30 at 14:20 +0200, Brice Figureau wrote:
> On Mon, 2008-09-29 at 13:09 -0500, Luke Kanies wrote:
> > On Sep 27, 2008, at 4:21 AM, Brice Figureau wrote:
> > > +
> > > + it "should return 3 for 1 + 2" do
> > > + operator =
> > > Puppet::Parser::AST::ArithmeticOperator.new :lval => @one, :operator
> > > => "+", :rval => @two
> > > + operator.evaluate(@scope).should == 3
> > > + end
> >
> > It *might* be better here to just test that the appropriate methods
> > are called on the numbers, rather than test the outcome. Not that the
> > outcome is likely to change, mind you, but our real test is that we're
> > passing through to someone else, not that a specific number shows up.
>
> Unfortunately the following doesn't work:
>
> it "should return 3 for 1 + 2" do
> operator = AST::ArithmeticOperator.new :lval => @one, :operator =>
> "+", :rval => @two
> 1.expects(:+).with(3)
> operator.evaluate(@scope)
> end
>
> It doesn't seem possible to pose expectations on Fixnums.
> I tried every possible ways, like:
> Fixnum.expects(:+)
> or (since that's really send that is called)
> 1.expects(:send)
> or
> Fixnum.expects(:send)
>
> The error message is:
> "no virtual class for Fixnum"
I workarounded (if that word exists) with the following:
it "should call Puppet::Parser::Scope.number?" do
Puppet::Parser::Scope.expects(:number?).with(1).returns(1)
Puppet::Parser::Scope.expects(:number?).with(2).returns(2)
AST::ArithmeticOperator.new(:lval => @one, :operator => "+", :rval =>
@two).evaluate(@scope)
end
%w{ + - * / << >>}.each do |op|
it "should call ruby Numeric '#{op}'" do
one = stub 'one'
two = stub 'two'
operator = AST::ArithmeticOperator.new :lval => @one, :operator =>
op, :rval => @two
Puppet::Parser::Scope.stubs(:number?).with(1).returns(one)
Puppet::Parser::Scope.stubs(:number?).with(2).returns(two)
one.expects(:send).with(op,two)
operator.evaluate(@scope)
end
end
which I don't find really satifying, since it imposes that the test has
knowledge of the inner working of AST::ArithmeticOperator :-(
--
Brice Figureau <[EMAIL PROTECTED]>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Puppet Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/puppet-dev?hl=en
-~----------~----~----~----~------~----~------~--~---