Overview
Comment: | Add -[floatValue] and -[doubleValue]. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
9c59bc9aee79676f324be40770df2ce6 |
User & Date: | js on 2011-03-29 19:03:55 |
Other Links: | manifest | tags |
Context
2011-03-29
| ||
19:22 | Use a value in the -[doubleValue] test that only fits into a double. check-in: b9803c90d0 user: js tags: trunk | |
19:03 | Add -[floatValue] and -[doubleValue]. check-in: 9c59bc9aee user: js tags: trunk | |
18:20 | Ignore leading and trailing whitespaces in -[(hexa)decimalValue]. check-in: e0a8e01190 user: js tags: trunk | |
Changes
Modified src/OFString.h from [5f4a684d91] to [3da081c65e].
︙ | ︙ | |||
456 457 458 459 460 461 462 463 464 465 466 467 468 469 | * If the number is too big to fit into an uintmax_t, an OFOutOfRangeException * is thrown. * * \return A uintmax_t with the value of the string */ - (uintmax_t)hexadecimalValue; /** * Returns the string as an array of of_unichar_t. The result needs to be * free()'d by the caller, as the memory is not marked as belonging to the * object. * * \return The string as an array of Unicode characters */ | > > > > > > > > > > > > > > > > | 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 | * If the number is too big to fit into an uintmax_t, an OFOutOfRangeException * is thrown. * * \return A uintmax_t with the value of the string */ - (uintmax_t)hexadecimalValue; /** * Returns the float value of the string as a float or throws an * OFInvalidEncodingException if the string contains any non-number characters. * * \return A float with the value of the string */ - (float)floatValue; /** * Returns the double value of the string as a float or throws an * OFInvalidEncodingException if the string contains any non-number characters. * * \return A double with the value of the string */ - (double)doubleValue; /** * Returns the string as an array of of_unichar_t. The result needs to be * free()'d by the caller, as the memory is not marked as belonging to the * object. * * \return The string as an array of Unicode characters */ |
︙ | ︙ |
Modified src/OFString.m from [2defafe592] to [bb07f5cc36].
︙ | ︙ | |||
1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 | } if (!gotNumber) @throw [OFInvalidFormatException newWithClass: isa]; return num; } - (of_unichar_t*)unicodeString { of_unichar_t *ret; size_t i, j, len; len = [self length]; | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 | } if (!gotNumber) @throw [OFInvalidFormatException newWithClass: isa]; return num; } - (float)floatValue { const char *str = string; char *endptr; float value; /* Don't depend on isspace and thus the used locale */ while (*str == ' ' || *str == '\t' || *str == '\n' || *str == '\r') str++; value = strtof(str, &endptr); /* Check if there are any invalid chars left */ if (endptr != NULL) { for (; *endptr != '\0'; endptr++) if (*endptr != ' ' && *endptr != '\t' && *endptr != '\n' && *endptr != '\r') @throw [OFInvalidFormatException newWithClass: isa]; } return value; } - (double)doubleValue { const char *str = string; char *endptr; double value; /* Don't depend on isspace and thus the used locale */ while (*str == ' ' || *str == '\t' || *str == '\n' || *str == '\r') str++; value = strtod(str, &endptr); /* Check if there are any invalid chars left */ if (endptr != NULL) { for (; *endptr != '\0'; endptr++) if (*endptr != ' ' && *endptr != '\t' && *endptr != '\n' && *endptr != '\r') @throw [OFInvalidFormatException newWithClass: isa]; } return value; } - (of_unichar_t*)unicodeString { of_unichar_t *ret; size_t i, j, len; len = [self length]; |
︙ | ︙ |
Modified tests/OFStringTests.m from [65c18fe8c4] to [c949c30655].
︙ | ︙ | |||
14 15 16 17 18 19 20 21 22 23 24 25 26 27 | * file. */ #include "config.h" #include <stdlib.h> #include <string.h> #import "OFString.h" #import "OFArray.h" #import "OFURL.h" #import "OFAutoreleasePool.h" #import "OFInvalidArgumentException.h" | > | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | * file. */ #include "config.h" #include <stdlib.h> #include <string.h> #include <math.h> #import "OFString.h" #import "OFArray.h" #import "OFURL.h" #import "OFAutoreleasePool.h" #import "OFInvalidArgumentException.h" |
︙ | ︙ | |||
291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 | [@"123f" hexadecimalValue] == 0x123f && [@"\t\n0xABcd\r" hexadecimalValue] == 0xABCD && [@" xbCDE" hexadecimalValue] == 0xBCDE && [@"$CdEf" hexadecimalValue] == 0xCDEF && [@"\rFeh " hexadecimalValue] == 0xFE && [@"\r\t" hexadecimalValue] == 0) EXPECT_EXCEPTION(@"Detect invalid characters in -[decimalValue] #1", OFInvalidFormatException, [@"abc" decimalValue]) EXPECT_EXCEPTION(@"Detect invalid characters in -[decimalValue] #2", OFInvalidFormatException, [@"0a" decimalValue]) EXPECT_EXCEPTION(@"Detect invalid characters in -[decimalValue] #3", OFInvalidFormatException, [@"0 1" decimalValue]) EXPECT_EXCEPTION(@"Detect invalid chars in -[hexadecimalValue] #1", OFInvalidFormatException, [@"0xABCDEFG" hexadecimalValue]) EXPECT_EXCEPTION(@"Detect invalid chars in -[hexadecimalValue] #2", OFInvalidFormatException, [@"0x" hexadecimalValue]) EXPECT_EXCEPTION(@"Detect invalid chars in -[hexadecimalValue] #3", OFInvalidFormatException, [@"$" hexadecimalValue]) EXPECT_EXCEPTION(@"Detect invalid chars in -[hexadecimalValue] #4", OFInvalidFormatException, [@"$ " hexadecimalValue]) EXPECT_EXCEPTION(@"Detect out of range in -[decimalValue]", OFOutOfRangeException, [@"12345678901234567890123456789012345678901234567890" @"12345678901234567890123456789012345678901234567890" decimalValue]) | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 | [@"123f" hexadecimalValue] == 0x123f && [@"\t\n0xABcd\r" hexadecimalValue] == 0xABCD && [@" xbCDE" hexadecimalValue] == 0xBCDE && [@"$CdEf" hexadecimalValue] == 0xCDEF && [@"\rFeh " hexadecimalValue] == 0xFE && [@"\r\t" hexadecimalValue] == 0) /* * These test numbers can be generated without rounding if we have IEEE * floating point numbers, thus we can use == on then. */ TEST(@"-[floatValue]", [@"\t-0.25 " floatValue] == -0.25 && [@"\r-INFINITY\n" floatValue] == -INFINITY && isnan([@" NAN\t\t" floatValue])) TEST(@"-[doubleValue]", [@"\t-0.000000059604644775390625 " doubleValue] == -0.000000059604644775390625L && [@"\r-INFINITY\n" doubleValue] == -INFINITY && isnan([@" NAN\t\t" doubleValue])) EXPECT_EXCEPTION(@"Detect invalid characters in -[decimalValue] #1", OFInvalidFormatException, [@"abc" decimalValue]) EXPECT_EXCEPTION(@"Detect invalid characters in -[decimalValue] #2", OFInvalidFormatException, [@"0a" decimalValue]) EXPECT_EXCEPTION(@"Detect invalid characters in -[decimalValue] #3", OFInvalidFormatException, [@"0 1" decimalValue]) EXPECT_EXCEPTION(@"Detect invalid chars in -[hexadecimalValue] #1", OFInvalidFormatException, [@"0xABCDEFG" hexadecimalValue]) EXPECT_EXCEPTION(@"Detect invalid chars in -[hexadecimalValue] #2", OFInvalidFormatException, [@"0x" hexadecimalValue]) EXPECT_EXCEPTION(@"Detect invalid chars in -[hexadecimalValue] #3", OFInvalidFormatException, [@"$" hexadecimalValue]) EXPECT_EXCEPTION(@"Detect invalid chars in -[hexadecimalValue] #4", OFInvalidFormatException, [@"$ " hexadecimalValue]) EXPECT_EXCEPTION(@"Detect invalid chars in -[floatValue] #1", OFInvalidFormatException, [@"0,0" floatValue]) EXPECT_EXCEPTION(@"Detect invalid chars in -[floatValue] #2", OFInvalidFormatException, [@"0.0a" floatValue]) EXPECT_EXCEPTION(@"Detect invalid chars in -[floatValue] #3", OFInvalidFormatException, [@"0 0" floatValue]) EXPECT_EXCEPTION(@"Detect invalid chars in -[doubleValue] #1", OFInvalidFormatException, [@"0,0" floatValue]) EXPECT_EXCEPTION(@"Detect invalid chars in -[doubleValue] #2", OFInvalidFormatException, [@"0.0a" floatValue]) EXPECT_EXCEPTION(@"Detect invalid chars in -[doubleValue] #3", OFInvalidFormatException, [@"0 0" floatValue]) EXPECT_EXCEPTION(@"Detect out of range in -[decimalValue]", OFOutOfRangeException, [@"12345678901234567890123456789012345678901234567890" @"12345678901234567890123456789012345678901234567890" decimalValue]) |
︙ | ︙ |