• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Getting a handle on inf
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Getting a handle on inf


  • Subject: Re: Getting a handle on inf
  • From: Greg Parker <email@hidden>
  • Date: Mon, 26 Oct 2009 12:27:33 -0700


On Oct 26, 2009, at 12:11 PM, Ian Piper wrote:

On 26 Oct 2009, at 18:45, Greg Parker wrote:

On Oct 26, 2009, at 11:26 AM, Ian Piper wrote:
So I am guessing that when I get a float displayed as "inf" this is not the string it seems to be. Also, it looks like the string value of whatever is coming back is not something that I can use. Can anyone suggest how I might handle a test case like this?

As Kyle noted, -stringValue returns an NSString, not a char*. You'd need to compare to @"inf" and print with %@.

Kyle, Greg,

Thanks for that. I tried it out:

- (void)testVeryLargeNumberShouldReturnInf {
testConverter = Converter.new;
[testConverter setValue:[NSNumber numberWithFloat: 1000000000000000000000000000000000000000.0] forKey:@"originalTemp"];
NSNumber *newTemperatureInF = [NSNumber numberWithFloat:(float) [testConverter convertCToF]];
STAssertEquals(@"inf", [newTemperatureInF stringValue], @"Expecting inf; we got %@", [newTemperatureInF stringValue]);
[testConverter release];
}


...and I still get a failed build with this message:

Expecting inf; we got inf

Which seems odd. When I look at the transcript for the test result it looks like this:

TCTests.m:58: error: -[TCTests testVeryLargeNumberShouldReturnInf] : '<28810c00 01000000>' should be equal to '<c08a1800 01000000>': Expecting inf; we got inf

So I am still not comparing apples with apples...

STAssertEquals() uses the moral equivalent of `==` to compare the values. Your test should use STAssertEqualObjects(), which compares the values with -isEqual:.



A better way to check for floating-point +infinity and -infinity is to use the isinf() macro.

  if (isinf([number floatValue])) {
      NSLog(@"number is +inf or -inf");
  }

That macro isn't part of OCUnit is it? I don't see it in the Documentation.

It's part of the standard C library. For OCUnit you'd use something like `STAssertTrue(isinf([number floatValue]), ...)`.



-- Greg Parker email@hidden Runtime Wrangler


_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >Getting a handle on inf (From: Ian Piper <email@hidden>)
 >Re: Getting a handle on inf (From: Greg Parker <email@hidden>)
 >Re: Getting a handle on inf (From: Ian Piper <email@hidden>)

  • Prev by Date: Re: Getting a handle on inf
  • Next by Date: Re: Getting a handle on inf
  • Previous by thread: Re: Getting a handle on inf
  • Next by thread: Re: Getting a handle on inf
  • Index(es):
    • Date
    • Thread