Skip to content

Commit

Permalink
fix a new bug in CPDecimalMakeWithString and remove some test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
Eric Wong committed Aug 5, 2012
1 parent 9f1a8fa commit 175c70d
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 13 deletions.
3 changes: 3 additions & 0 deletions Foundation/CPDecimal.j
Expand Up @@ -142,6 +142,9 @@ function CPDecimalMakeWithString(string, locale)
{
// input is too long, increase exponent and truncate
exponent += inputlength - CPDecimalMaxDigits;
} else if (inputlength === 0)
{
return CPDecimalMakeNaN();
}

if (exponent > CPDecimalMaxExponent || exponent < CPDecimalMinExponent)
Expand Down
12 changes: 3 additions & 9 deletions Tests/Foundation/CPDecimalNumberTest.j
Expand Up @@ -145,20 +145,14 @@
dcmn = [[CPDecimalNumber alloc] initWithString:@"foo"];
[self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 2 overflow should return NaN"];

dcmn = [[CPDecimalNumber alloc] initWithString:@".123"];
[self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 3 overflow should return NaN"];

dcmn = [[CPDecimalNumber alloc] initWithString:@"-.123"];
[self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 4 overflow should return NaN"];

dcmn = [[CPDecimalNumber alloc] initWithString:@"0123"];
[self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 5 overflow should return NaN"];
[self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 3 overflow should return NaN"];

dcmn = [[CPDecimalNumber alloc] initWithString:@"1e200"];
[self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 6 overflow should return NaN"];
[self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 4 overflow should return NaN"];

dcmn = [[CPDecimalNumber alloc] initWithString:@"12312e-23421"];
[self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 7 overflow should return NaN"];
[self assert:CPOrderedSame equals:[dcmn compare:[CPDecimalNumber notANumber]] message:"initWithString: 5 overflow should return NaN"];
}

- (void)testAdd
Expand Down
4 changes: 0 additions & 4 deletions Tests/Foundation/CPDecimalTest.j
Expand Up @@ -99,10 +99,6 @@
[self assertTrue:dcm._isNaN message:"CPDecimalMakeWithString() Ti9: catch of invalid number string. Should return NaN"];
dcm = CPDecimalMakeWithString(@"-0001");
[self assertTrue:dcm._isNaN message:"CPDecimalMakeWithString() Ti10: catch of invalid number string. Should return NaN"];
dcm = CPDecimalMakeWithString(@".123");
[self assertTrue:dcm._isNaN message:"CPDecimalMakeWithString() Ti11: catch of invalid number string. Should return NaN"];
dcm = CPDecimalMakeWithString(@"-.1");
[self assertTrue:dcm._isNaN message:"CPDecimalMakeWithString() Ti12: catch of invalid number string. Should return NaN"];

//test make with parts
dcm = CPDecimalMakeWithParts(10127658,2);
Expand Down

0 comments on commit 175c70d

Please sign in to comment.