MCPcopy Index your code
hub / github.com/python/cpython / testFromString

Method testFromString

Lib/test/test_fractions.py:396–498  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

394 self.assertRaises(TypeError, F.from_number, B())
395
396 def testFromString(self):
397 self.assertEqual((5, 1), _components(F("5")))
398 self.assertEqual((5, 1), _components(F("005")))
399 self.assertEqual((3, 2), _components(F("3/2")))
400 self.assertEqual((3, 2), _components(F("3 / 2")))
401 self.assertEqual((3, 2), _components(F(" \n +3/2")))
402 self.assertEqual((-3, 2), _components(F("-3/2 ")))
403 self.assertEqual((13, 2), _components(F(" 0013/002 \n ")))
404 self.assertEqual((16, 5), _components(F(" 3.2 ")))
405 self.assertEqual((16, 5), _components(F("003.2")))
406 self.assertEqual((-16, 5), _components(F(" -3.2 ")))
407 self.assertEqual((-3, 1), _components(F(" -3. ")))
408 self.assertEqual((3, 5), _components(F(" .6 ")))
409 self.assertEqual((1, 3125), _components(F("32.e-5")))
410 self.assertEqual((1000000, 1), _components(F("1E+06")))
411 self.assertEqual((-12300, 1), _components(F("-1.23e4")))
412 self.assertEqual((0, 1), _components(F(" .0e+0\t")))
413 self.assertEqual((0, 1), _components(F("-0.000e0")))
414 self.assertEqual((123, 1), _components(F("1_2_3")))
415 self.assertEqual((41, 107), _components(F("1_2_3/3_2_1")))
416 self.assertEqual((6283, 2000), _components(F("3.14_15")))
417 self.assertEqual((6283, 2*10**13), _components(F("3.14_15e-1_0")))
418 self.assertEqual((101, 100), _components(F("1.01")))
419 self.assertEqual((101, 100), _components(F("1.0_1")))
420
421 self.assertRaisesMessage(
422 ZeroDivisionError, "Fraction(3, 0)",
423 F, "3/0")
424
425 def check_invalid(s):
426 msg = "Invalid literal for Fraction: " + repr(s)
427 self.assertRaisesMessage(ValueError, msg, F, s)
428
429 check_invalid("3/")
430 check_invalid("/2")
431 # Denominators don't need a sign.
432 check_invalid("3/+2")
433 check_invalid("3/-2")
434 # Imitate float's parsing.
435 check_invalid("+ 3/2")
436 check_invalid("- 3/2")
437 # Avoid treating '.' as a regex special character.
438 check_invalid("3a2")
439 # Don't accept combinations of decimals and rationals.
440 check_invalid("3/7.2")
441 check_invalid("3.2/7")
442 # No space around dot.
443 check_invalid("3 .2")
444 check_invalid("3. 2")
445 # No space around e.
446 check_invalid("3.2 e1")
447 check_invalid("3.2e 1")
448 # Fractional part don't need a sign.
449 check_invalid("3.+2")
450 check_invalid("3.-2")
451 # Only accept base 10.
452 check_invalid("0x10")
453 check_invalid("0x10/1")

Callers

nothing calls this directly

Calls 4

assertRaisesMessageMethod · 0.95
_componentsFunction · 0.85
FClass · 0.70
assertEqualMethod · 0.45

Tested by

no test coverage detected