@@ -433,6 +433,16 @@ test_string_from_format(PyObject *self, PyObject *Py_UNUSED(ignored))
433
433
CHECK_FORMAT_1 ("%05zu" , "00123" , (size_t )123 );
434
434
CHECK_FORMAT_1 ("%05x" , "0007b" , (int )123 );
435
435
436
+ CHECK_FORMAT_1 ("%05d" , "-0123" , (int )-123 );
437
+ CHECK_FORMAT_1 ("%05i" , "-0123" , (int )-123 );
438
+ CHECK_FORMAT_1 ("%05ld" , "-0123" , (long )-123 );
439
+ CHECK_FORMAT_1 ("%05li" , "-0123" , (long )-123 );
440
+ CHECK_FORMAT_1 ("%05lld" , "-0123" , (long long )-123 );
441
+ CHECK_FORMAT_1 ("%05lli" , "-0123" , (long long )-123 );
442
+ CHECK_FORMAT_1 ("%05zd" , "-0123" , (Py_ssize_t )- 123 );
443
+ CHECK_FORMAT_1 ("%05zi" , "-0123" , (Py_ssize_t )- 123 );
444
+ CHECK_FORMAT_1 ("%09x" , "0ffffff85" , (int )-123 );
445
+
436
446
// Integers: precision < length
437
447
CHECK_FORMAT_1 ("%.1d" , "123" , (int )123 );
438
448
CHECK_FORMAT_1 ("%.1i" , "123" , (int )123 );
@@ -473,6 +483,16 @@ test_string_from_format(PyObject *self, PyObject *Py_UNUSED(ignored))
473
483
CHECK_FORMAT_1 ("%.5zu" , "00123" , (size_t )123 );
474
484
CHECK_FORMAT_1 ("%.5x" , "0007b" , (int )123 );
475
485
486
+ CHECK_FORMAT_1 ("%.5d" , "-00123" , (int )-123 );
487
+ CHECK_FORMAT_1 ("%.5i" , "-00123" , (int )-123 );
488
+ CHECK_FORMAT_1 ("%.5ld" , "-00123" , (long )-123 );
489
+ CHECK_FORMAT_1 ("%.5li" , "-00123" , (long )-123 );
490
+ CHECK_FORMAT_1 ("%.5lld" , "-00123" , (long long )-123 );
491
+ CHECK_FORMAT_1 ("%.5lli" , "-00123" , (long long )-123 );
492
+ CHECK_FORMAT_1 ("%.5zd" , "-00123" , (Py_ssize_t )- 123 );
493
+ CHECK_FORMAT_1 ("%.5zi" , "-00123" , (Py_ssize_t )- 123 );
494
+ CHECK_FORMAT_1 ("%.9x" , "0ffffff85" , (int )-123 );
495
+
476
496
// Integers: width > precision > length
477
497
CHECK_FORMAT_1 ("%7.5d" , " 00123" , (int )123 );
478
498
CHECK_FORMAT_1 ("%7.5i" , " 00123" , (int )123 );
@@ -488,6 +508,16 @@ test_string_from_format(PyObject *self, PyObject *Py_UNUSED(ignored))
488
508
CHECK_FORMAT_1 ("%7.5zu" , " 00123" , (size_t )123 );
489
509
CHECK_FORMAT_1 ("%7.5x" , " 0007b" , (int )123 );
490
510
511
+ CHECK_FORMAT_1 ("%7.5d" , " -00123" , (int )-123 );
512
+ CHECK_FORMAT_1 ("%7.5i" , " -00123" , (int )-123 );
513
+ CHECK_FORMAT_1 ("%7.5ld" , " -00123" , (long )-123 );
514
+ CHECK_FORMAT_1 ("%7.5li" , " -00123" , (long )-123 );
515
+ CHECK_FORMAT_1 ("%7.5lld" , " -00123" , (long long )-123 );
516
+ CHECK_FORMAT_1 ("%7.5lli" , " -00123" , (long long )-123 );
517
+ CHECK_FORMAT_1 ("%7.5zd" , " -00123" , (Py_ssize_t )- 123 );
518
+ CHECK_FORMAT_1 ("%7.5zi" , " -00123" , (Py_ssize_t )- 123 );
519
+ CHECK_FORMAT_1 ("%10.9x" , " 0ffffff85" , (int )-123 );
520
+
491
521
// Integers: width > precision > length, 0-flag
492
522
CHECK_FORMAT_1 ("%07.5d" , "0000123" , (int )123 );
493
523
CHECK_FORMAT_1 ("%07.5i" , "0000123" , (int )123 );
@@ -503,6 +533,16 @@ test_string_from_format(PyObject *self, PyObject *Py_UNUSED(ignored))
503
533
CHECK_FORMAT_1 ("%07.5zu" , "0000123" , (size_t )123 );
504
534
CHECK_FORMAT_1 ("%07.5x" , "000007b" , (int )123 );
505
535
536
+ CHECK_FORMAT_1 ("%07.5d" , "-000123" , (int )-123 );
537
+ CHECK_FORMAT_1 ("%07.5i" , "-000123" , (int )-123 );
538
+ CHECK_FORMAT_1 ("%07.5ld" , "-000123" , (long )-123 );
539
+ CHECK_FORMAT_1 ("%07.5li" , "-000123" , (long )-123 );
540
+ CHECK_FORMAT_1 ("%07.5lld" , "-000123" , (long long )-123 );
541
+ CHECK_FORMAT_1 ("%07.5lli" , "-000123" , (long long )-123 );
542
+ CHECK_FORMAT_1 ("%07.5zd" , "-000123" , (Py_ssize_t )- 123 );
543
+ CHECK_FORMAT_1 ("%07.5zi" , "-000123" , (Py_ssize_t )- 123 );
544
+ CHECK_FORMAT_1 ("%010.9x" , "00ffffff85" , (int )-123 );
545
+
506
546
// Integers: precision > width > length
507
547
CHECK_FORMAT_1 ("%5.7d" , "0000123" , (int )123 );
508
548
CHECK_FORMAT_1 ("%5.7i" , "0000123" , (int )123 );
@@ -518,6 +558,16 @@ test_string_from_format(PyObject *self, PyObject *Py_UNUSED(ignored))
518
558
CHECK_FORMAT_1 ("%5.7zu" , "0000123" , (size_t )123 );
519
559
CHECK_FORMAT_1 ("%5.7x" , "000007b" , (int )123 );
520
560
561
+ CHECK_FORMAT_1 ("%5.7d" , "-0000123" , (int )-123 );
562
+ CHECK_FORMAT_1 ("%5.7i" , "-0000123" , (int )-123 );
563
+ CHECK_FORMAT_1 ("%5.7ld" , "-0000123" , (long )-123 );
564
+ CHECK_FORMAT_1 ("%5.7li" , "-0000123" , (long )-123 );
565
+ CHECK_FORMAT_1 ("%5.7lld" , "-0000123" , (long long )-123 );
566
+ CHECK_FORMAT_1 ("%5.7lli" , "-0000123" , (long long )-123 );
567
+ CHECK_FORMAT_1 ("%5.7zd" , "-0000123" , (Py_ssize_t )- 123 );
568
+ CHECK_FORMAT_1 ("%5.7zi" , "-0000123" , (Py_ssize_t )- 123 );
569
+ CHECK_FORMAT_1 ("%9.10x" , "00ffffff85" , (int )-123 );
570
+
521
571
// Integers: precision > width > length, 0-flag
522
572
CHECK_FORMAT_1 ("%05.7d" , "0000123" , (int )123 );
523
573
CHECK_FORMAT_1 ("%05.7i" , "0000123" , (int )123 );
@@ -533,6 +583,16 @@ test_string_from_format(PyObject *self, PyObject *Py_UNUSED(ignored))
533
583
CHECK_FORMAT_1 ("%05.7zu" , "0000123" , (size_t )123 );
534
584
CHECK_FORMAT_1 ("%05.7x" , "000007b" , (int )123 );
535
585
586
+ CHECK_FORMAT_1 ("%05.7d" , "-0000123" , (int )-123 );
587
+ CHECK_FORMAT_1 ("%05.7i" , "-0000123" , (int )-123 );
588
+ CHECK_FORMAT_1 ("%05.7ld" , "-0000123" , (long )-123 );
589
+ CHECK_FORMAT_1 ("%05.7li" , "-0000123" , (long )-123 );
590
+ CHECK_FORMAT_1 ("%05.7lld" , "-0000123" , (long long )-123 );
591
+ CHECK_FORMAT_1 ("%05.7lli" , "-0000123" , (long long )-123 );
592
+ CHECK_FORMAT_1 ("%05.7zd" , "-0000123" , (Py_ssize_t )- 123 );
593
+ CHECK_FORMAT_1 ("%05.7zi" , "-0000123" , (Py_ssize_t )- 123 );
594
+ CHECK_FORMAT_1 ("%09.10x" , "00ffffff85" , (int )-123 );
595
+
536
596
// Integers: precision = 0, arg = 0 (empty string in C)
537
597
CHECK_FORMAT_1 ("%.0d" , "0" , (int )0 );
538
598
CHECK_FORMAT_1 ("%.0i" , "0" , (int )0 );
0 commit comments