pos = s.length();
}
+ // End grouping at the beginning of the digits -- there could be at a sign
+ // before their start.
+ const size_t start = s.find_first_of("0123456789");
+
// We currently group digits by 3 independently of the locale. This is not
// the right thing to do and we should use lconv::grouping (under POSIX)
// and GetLocaleInfo(LOCALE_SGROUPING) (under MSW) to get information about
// wxLocale level first and then used here in the future (TODO).
const size_t GROUP_LEN = 3;
- while ( pos > GROUP_LEN )
+ while ( pos > start + GROUP_LEN )
{
pos -= GROUP_LEN;
s.insert(pos, thousandsSep);
return;
CPPUNIT_ASSERT_EQUAL( "1", wxNumberFormatter::ToString( 1L));
+ CPPUNIT_ASSERT_EQUAL( "-1", wxNumberFormatter::ToString( -1L));
CPPUNIT_ASSERT_EQUAL( "12", wxNumberFormatter::ToString( 12L));
+ CPPUNIT_ASSERT_EQUAL( "-12", wxNumberFormatter::ToString( -12L));
CPPUNIT_ASSERT_EQUAL( "123", wxNumberFormatter::ToString( 123L));
+ CPPUNIT_ASSERT_EQUAL( "-123", wxNumberFormatter::ToString( -123L));
CPPUNIT_ASSERT_EQUAL( "1,234", wxNumberFormatter::ToString( 1234L));
+ CPPUNIT_ASSERT_EQUAL( "-1,234", wxNumberFormatter::ToString( -1234L));
CPPUNIT_ASSERT_EQUAL( "12,345", wxNumberFormatter::ToString( 12345L));
+ CPPUNIT_ASSERT_EQUAL( "-12,345", wxNumberFormatter::ToString( -12345L));
CPPUNIT_ASSERT_EQUAL( "123,456", wxNumberFormatter::ToString( 123456L));
+ CPPUNIT_ASSERT_EQUAL( "-123,456", wxNumberFormatter::ToString( -123456L));
CPPUNIT_ASSERT_EQUAL( "1,234,567", wxNumberFormatter::ToString( 1234567L));
+ CPPUNIT_ASSERT_EQUAL( "-1,234,567", wxNumberFormatter::ToString( -1234567L));
CPPUNIT_ASSERT_EQUAL( "12,345,678", wxNumberFormatter::ToString( 12345678L));
+ CPPUNIT_ASSERT_EQUAL("-12,345,678", wxNumberFormatter::ToString( -12345678L));
CPPUNIT_ASSERT_EQUAL("123,456,789", wxNumberFormatter::ToString( 123456789L));
}