Skip to content

Commit 07a857b

Browse files
committed
Add tests for formatting floating numbers
1 parent 8c96bd6 commit 07a857b

File tree

1 file changed

+107
-0
lines changed

1 file changed

+107
-0
lines changed

extra_tests/snippets/strings.py

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,62 @@ def __repr__(self):
232232
assert "%e" % 0.1 == '1.000000e-01'
233233
assert "%e" % 10 == '1.000000e+01'
234234
assert "%.10e" % 1.2345678901234567890 == '1.2345678901e+00'
235+
assert '%e' % float('nan') == 'nan'
236+
assert '%e' % float('-nan') == 'nan'
237+
assert '%E' % float('nan') == 'NAN'
238+
assert '%e' % float('inf') == 'inf'
239+
assert '%e' % float('-inf') == '-inf'
240+
assert '%E' % float('inf') == 'INF'
241+
assert "%g" % 123456.78901234567890 == '123457'
242+
assert "%.0g" % 123456.78901234567890 == '1e+05'
243+
assert "%.1g" % 123456.78901234567890 == '1e+05'
244+
assert "%.2g" % 123456.78901234567890 == '1.2e+05'
245+
assert "%g" % 1234567.8901234567890 == '1.23457e+06'
246+
assert "%.0g" % 1234567.8901234567890 == '1e+06'
247+
assert "%.1g" % 1234567.8901234567890 == '1e+06'
248+
assert "%.2g" % 1234567.8901234567890 == '1.2e+06'
249+
assert "%.3g" % 1234567.8901234567890 == '1.23e+06'
250+
assert "%.5g" % 1234567.8901234567890 == '1.2346e+06'
251+
assert "%.6g" % 1234567.8901234567890 == '1.23457e+06'
252+
assert "%.7g" % 1234567.8901234567890 == '1234568'
253+
assert "%.8g" % 1234567.8901234567890 == '1234567.9'
254+
assert "%G" % 123456.78901234567890 == '123457'
255+
assert "%.0G" % 123456.78901234567890 == '1E+05'
256+
assert "%.1G" % 123456.78901234567890 == '1E+05'
257+
assert "%.2G" % 123456.78901234567890 == '1.2E+05'
258+
assert "%G" % 1234567.8901234567890 == '1.23457E+06'
259+
assert "%.0G" % 1234567.8901234567890 == '1E+06'
260+
assert "%.1G" % 1234567.8901234567890 == '1E+06'
261+
assert "%.2G" % 1234567.8901234567890 == '1.2E+06'
262+
assert "%.3G" % 1234567.8901234567890 == '1.23E+06'
263+
assert "%.5G" % 1234567.8901234567890 == '1.2346E+06'
264+
assert "%.6G" % 1234567.8901234567890 == '1.23457E+06'
265+
assert "%.7G" % 1234567.8901234567890 == '1234568'
266+
assert "%.8G" % 1234567.8901234567890 == '1234567.9'
267+
assert '%g' % 0.12345678901234567890 == '0.123457'
268+
assert '%g' % 0.12345678901234567890e-1 == '0.0123457'
269+
assert '%g' % 0.12345678901234567890e-2 == '0.00123457'
270+
assert '%g' % 0.12345678901234567890e-3 == '0.000123457'
271+
assert '%g' % 0.12345678901234567890e-4 == '1.23457e-05'
272+
assert '%g' % 0.12345678901234567890e-5 == '1.23457e-06'
273+
assert '%.6g' % 0.12345678901234567890e-5 == '1.23457e-06'
274+
assert '%.10g' % 0.12345678901234567890e-5 == '1.23456789e-06'
275+
assert '%.20g' % 0.12345678901234567890e-5 == '1.2345678901234567384e-06'
276+
assert '%G' % 0.12345678901234567890 == '0.123457'
277+
assert '%G' % 0.12345678901234567890E-1 == '0.0123457'
278+
assert '%G' % 0.12345678901234567890E-2 == '0.00123457'
279+
assert '%G' % 0.12345678901234567890E-3 == '0.000123457'
280+
assert '%G' % 0.12345678901234567890E-4 == '1.23457E-05'
281+
assert '%G' % 0.12345678901234567890E-5 == '1.23457E-06'
282+
assert '%.6G' % 0.12345678901234567890E-5 == '1.23457E-06'
283+
assert '%.10G' % 0.12345678901234567890E-5 == '1.23456789E-06'
284+
assert '%.20G' % 0.12345678901234567890E-5 == '1.2345678901234567384E-06'
285+
assert '%g' % float('nan') == 'nan'
286+
assert '%g' % float('-nan') == 'nan'
287+
assert '%G' % float('nan') == 'NAN'
288+
assert '%g' % float('inf') == 'inf'
289+
assert '%g' % float('-inf') == '-inf'
290+
assert '%G' % float('inf') == 'INF'
235291

236292
assert_raises(TypeError, lambda: "My name is %s and I'm %(age)d years old" % ("Foo", 25), _msg='format requires a mapping')
237293
assert_raises(TypeError, lambda: "My name is %(name)s" % "Foo", _msg='format requires a mapping')
@@ -477,6 +533,57 @@ def try_mutate_str():
477533
assert '{:e}'.format(float('-inf')) == '-inf'
478534
assert '{:E}'.format(float('inf')) == 'INF'
479535

536+
# Test g & G formatting
537+
assert '{:g}'.format(123456.78901234567890) == '123457'
538+
assert '{:.0g}'.format(123456.78901234567890) == '1e+05'
539+
assert '{:.1g}'.format(123456.78901234567890) == '1e+05'
540+
assert '{:.2g}'.format(123456.78901234567890) == '1.2e+05'
541+
assert '{:g}'.format(1234567.8901234567890) == '1.23457e+06'
542+
assert '{:.0g}'.format(1234567.8901234567890) == '1e+06'
543+
assert '{:.1g}'.format(1234567.8901234567890) == '1e+06'
544+
assert '{:.2g}'.format(1234567.8901234567890) == '1.2e+06'
545+
assert '{:.3g}'.format(1234567.8901234567890) == '1.23e+06'
546+
assert '{:.5g}'.format(1234567.8901234567890) == '1.2346e+06'
547+
assert '{:.6g}'.format(1234567.8901234567890) == '1.23457e+06'
548+
assert '{:.7g}'.format(1234567.8901234567890) == '1234568'
549+
assert '{:.8g}'.format(1234567.8901234567890) == '1234567.9'
550+
assert '{:G}'.format(123456.78901234567890) == '123457'
551+
assert '{:.0G}'.format(123456.78901234567890) == '1E+05'
552+
assert '{:.1G}'.format(123456.78901234567890) == '1E+05'
553+
assert '{:.2G}'.format(123456.78901234567890) == '1.2E+05'
554+
assert '{:G}'.format(1234567.8901234567890) == '1.23457E+06'
555+
assert '{:.0G}'.format(1234567.8901234567890) == '1E+06'
556+
assert '{:.1G}'.format(1234567.8901234567890) == '1E+06'
557+
assert '{:.2G}'.format(1234567.8901234567890) == '1.2E+06'
558+
assert '{:.3G}'.format(1234567.8901234567890) == '1.23E+06'
559+
assert '{:.5G}'.format(1234567.8901234567890) == '1.2346E+06'
560+
assert '{:.6G}'.format(1234567.8901234567890) == '1.23457E+06'
561+
assert '{:.7G}'.format(1234567.8901234567890) == '1234568'
562+
assert '{:.8G}'.format(1234567.8901234567890) == '1234567.9'
563+
assert '{:g}'.format(0.12345678901234567890) == '0.123457'
564+
assert '{:g}'.format(0.12345678901234567890e-1) == '0.0123457'
565+
assert '{:g}'.format(0.12345678901234567890e-2) == '0.00123457'
566+
assert '{:g}'.format(0.12345678901234567890e-3) == '0.000123457'
567+
assert '{:g}'.format(0.12345678901234567890e-4) == '1.23457e-05'
568+
assert '{:g}'.format(0.12345678901234567890e-5) == '1.23457e-06'
569+
assert '{:.6g}'.format(0.12345678901234567890e-5) == '1.23457e-06'
570+
assert '{:.10g}'.format(0.12345678901234567890e-5) == '1.23456789e-06'
571+
assert '{:.20g}'.format(0.12345678901234567890e-5) == '1.2345678901234567384e-06'
572+
assert '{:G}'.format(0.12345678901234567890) == '0.123457'
573+
assert '{:G}'.format(0.12345678901234567890E-1) == '0.0123457'
574+
assert '{:G}'.format(0.12345678901234567890E-2) == '0.00123457'
575+
assert '{:G}'.format(0.12345678901234567890E-3) == '0.000123457'
576+
assert '{:G}'.format(0.12345678901234567890E-4) == '1.23457E-05'
577+
assert '{:G}'.format(0.12345678901234567890E-5) == '1.23457E-06'
578+
assert '{:.6G}'.format(0.12345678901234567890E-5) == '1.23457E-06'
579+
assert '{:.10G}'.format(0.12345678901234567890E-5) == '1.23456789E-06'
580+
assert '{:.20G}'.format(0.12345678901234567890E-5) == '1.2345678901234567384E-06'
581+
assert '{:g}'.format(float('nan')) == 'nan'
582+
assert '{:g}'.format(float('-nan')) == 'nan'
583+
assert '{:G}'.format(float('nan')) == 'NAN'
584+
assert '{:g}'.format(float('inf')) == 'inf'
585+
assert '{:g}'.format(float('-inf')) == '-inf'
586+
assert '{:G}'.format(float('inf')) == 'INF'
480587

481588
# remove*fix test
482589
def test_removeprefix():

0 commit comments

Comments
 (0)