def test_number_format():
    setlocale('en')

    td = (
          # w/o grouping
          (("%f", 1024), '1024.000000'),
          (("%f", 102), '102.000000'),
          (("%f", -42), '-42.000000'),
          (("%+f", -42), '-42.000000'),
          (("%20.f", -42), '                 -42'),
          (("%+10.f", -4200), '     -4200'),
          (("%-10.f", 4200),'4200      '),

          # with grouping
          (("%f", 1024, 1), '1,024.000000'),
          (("%f", 102, 1), '102.000000'),
          (("%f", -42, 1), '-42.000000'),
          (("%+f", -42, 1), '-42.000000'),
          (("%20.f", -42, 1), '                 -42'),
          (("%+10.f", -4200, 1), '    -4,200'),
          (("%-10.f", 4200, 1),'4,200     '),
          )
    
    for args, res in td:
        assert format(*args) == res, '%r != %r' % (format(*args), res)
def test_conversion():
    setlocale('en')
    
    # INT
    val = 123456789

    s1 = format("%d", 123456789, 1)
    assert s1 == '123,456,789', '%r != %r' % (val, s1)
    assert val == atoi(s1), '%r != %r' % (val, atoi(s1))

    # FLOAT
    val = 123456789.14
    s1 = str(val)
    s2 = format("%.2f", val, 1)
    assert s2 == '123,456,789.14', '%r != %r' % (val, s2)
    assert val == atof(s1), '%r != %r' % (val, atof(s1))