unit testing with class and floats

A

Adam Akhtar

Hi there

im learning unit testing and have just recently started using classes
(very basic no superclass etc) and now running into problems.

I have a function which returns a class ojbect that contains float
variables.
The assert_equal is constantly failing. However when it prints out a
summary of the two things i compared in the assert they are exaclty the
same.

So im wondering if its something to do with classes, perhaps i have to
define a method in the class which tells assert how to compare objects
of that class

or its to do with the fact there are floats in the object (i checked
previous posts and google and found out there are issues with floats and
assert)

or perhaps both.
 
A

Adam Akhtar

sorry a (simplified) example

def simpleclass
attr_accessor :big_num #its a float!!!
end

expected = simpleclass.new(105.234)

assert_equal(expected, somefunction(blahblah))

i expect somefunction to return a class with 105.234

in the summary it shows that the function does in fact do that but it
still fails it.
 
F

Farrel Lifson

2008/8/27 Adam Akhtar said:
sorry a (simplified) example

def simpleclass
attr_accessor :big_num #its a float!!!
end

expected = simpleclass.new(105.234)

assert_equal(expected, somefunction(blahblah))

i expect somefunction to return a class with 105.234

in the summary it shows that the function does in fact do that but it
still fails it.

When comparing floats there is a chance that although the floats might
be represented the same on screen there might be differences in their
storage. For instance 1.0 and 1.0000001 might look the same on the
screen but will not be the same if compared with ==.

You should rather use assert_in_delta when comparing two floats.

Farrel
 
A

Adam Akhtar

ahhh i thought you could only use assert_in_delta with only floats
directly. Ill try passing my class objects with it.

Thanks
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top