Logan Capaldo
8/29/2006 9:05:00 PM
On Aug 29, 2006, at 4:50 PM, dkmd_nielsen@hotmail.com wrote:
> I have test case that is failing.
>
> ===============================================================
> 1) Failure: testProj(TestProject) [---------\TestProject.rb:26]:
> <"068906"> expected but was <"68906">.
> 1 tests, 1 assertions, 1 failures, 0 errors
> ===============================================================
>
> In the assignment of the class variable value, the first assert_equal
> test case appears to be comparing the expected value to the input of
> the class variable assignment...not the value returned by the
> assigment. The two asserts that follow the first yield the correct
> result, so I know the assignment of the class variable is correct.
> Any
> suggestions as to what I might be doing wrong in the first assert?
>
> ===============================================================
> Given the following in my test case:
> ===============================================================
>
> class TestProject < Test::Unit::TestCase
> def setup
> @prj=Project.new # new project
> end
>
> def testProj
> assert_equal('068906',@prj.proj='68906')
> assert_equal(true,@prj.proj=='068906')
> assert_equal(false,@prj.proj=='68906')
> end
> end
>
> ===============================================================
> And given the following function being called to assign the value of
> the class variable.
> ===============================================================
>
> # Set the project number. # Project number gets tranlated to the
> # format "nnnnnn", and is zero filled. Note: while zero filling is
> # the proper display of the project number, it does cause problems
> # when trying to find folder names.
> def proj=(num)
> if num.class == String
> raise ArgumentError,"Project number #{num} must be in the
> form
> <#>nnnnnn" if num !~/#*(\d{1,6})/
> n = $1.to_i
> elsif num.class == Fixnum
> n = num
> elsif num.class == Float
> n = num.to_i
> else
> raise ArgumentError,"Project number #{num} is in an
> unrecognizable format"
> end
> @proj = sprintf("%06d",n)
> end
>
> ===============================================================
> The following test case does work
> 1 tests, 2 assertions, 0 failures, 0 errors
> ===============================================================
> def testProj
> @prj.proj='68906'
> # assert_equal("068906",@prj.proj='68906')
> assert_equal(true,@prj.proj=='068906')
> assert_equal(false,@prj.proj=='68906')
> end
>
>
> Your time, as always, is appreciated...
> dvn
>
>
obj.meth = x always returns x, regardless of what the method would
return in normal circumstances. You should test like this:
@prj.proj = '68906'
assert_equal( '068906', @prj.proj )
% cat assigns.rb
class A
def f=(x)
false
end
end
a = A.new
p a
p( a.f = 22 )
% ruby assigns.rb
#<A:0x1e9328>
22