Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
296 changes: 155 additions & 141 deletions tests/string/format.bas
Original file line number Diff line number Diff line change
@@ -1,147 +1,158 @@
#include "fbcunit.bi"
# include "vbcompat.bi"

'' tests marked with "BUG" might be bugged on some platforms
#if ENABLE_CHECK_BUGS
#define BUG 1
#else
#if defined(__FB_WIN32__) and defined(__FB_64BIT__)
#define BUG 0
#else
#define BUG 1
#endif
#endif

tests_num:
data 0.1236, "", ".1236"
data 1, 0.1236, "", ".1236"
' The following example now works because FORMAT now restricts the precision
' to 11 when no format specifier was given.
data 4578.1236, "", "4578.1236"
data 4578.125, "", "4578.125"
data 1234.0, "", "1234"

data 0.1236, "##0.00%", "12.36%"
data 123, !"\"asd\\\"", !"asd\\"
data 0, "###", "0"
data 123, "###", "123"
data 123, "###00000", "00123"
data 123, "00000###", "00000123"
data 123.5, "0", "123"
data 123.51, "0", "124"
data 123.6, "0", "124"
data 1.23, "###.###", "1.23"
data 0.123, "###.###", ".123"
data 0.1234, "###.###", ".123"
data 0.1235, "###.###", ".123"
data 0.12351, "###.###", ".124"
data 0.1236, "###.###", ".124"
data 123, "###.###", "123."
data 123, "#", "123"
data 123, "#.##e-000", "1.23e002"
data 123, "#.##e+000", "1.23e+002"
data 0.123, "#.##e-000", "1.23e-001"
data 0.1234, "#.##e-000", "1.23e-001"
data 0.1235, "#.##e-000", "1.23e-001"
data 0.12351, "#.##e-000", "1.24e-001"
data 0.1236, "#.##e-000", "1.24e-001"
data 0.000000000125, "#.##e-0", "1.25e-10"
data 0.999999, "#.00e+000", "1.00e+000"
data 9.9e+20, "#", "990000000000000000000"
data 4.9e-324, "#.#e+#", "4.9e-324"
data 9.9e-100, "###################e+#", "9900000000000000000e-118"

data -0.1236, "##0.00%", "-12.36%"
data -123, !"\"asd\\\"", !"asd\\"
data -0, "###", "0"
data -123, "###", "-123"
data -123, "###00000", "-00123"
data -123, "00000###", "-00000123"
data -123.5, "0", "-123"
data -123.51, "0", "-124"
data -123.6, "0", "-124"
data -1.23, "###.###", "-1.23"
data -0.123, "###.###", "-.123"
data -0.1234, "###.###", "-.123"
data -0.1235, "###.###", "-.123"
data -0.12351, "###.###", "-.124"
data -0.1236, "###.###", "-.124"
data -123, "###.###", "-123."
data -123, "#", "-123"
data -123, "#.##e-000", "-1.23e002"
data -123, "#.##e+000", "-1.23e+002"
data -0.123, "#.##e-000", "-1.23e-001"
data -0.1234, "#.##e-000", "-1.23e-001"
data -0.1235, "#.##e-000", "-1.23e-001"
data -0.12351, "#.##e-000", "-1.24e-001"
data -0.1236, "#.##e-000", "-1.24e-001"
data -0.000000000125, "#.##e-0", "-1.25e-10"
data -0.999999, "#.00e+000", "-1.00e+000"
data -9.9e+20, "#", "-990000000000000000000"
data -4.9e-324, "#.#e+#", "-4.9e-324"
data -9.9e-100, "###################e+#", "-9900000000000000000e-118"

data -0.1236, "##0.00%-", "12.36%-"
data -123, !"\"asd\\\"", !"asd\\"
data -0, "###-", "0"
data -123, "###-", "123-"
data -123, "###00000-", "00123-"
data -123, "00000###-", "00000123-"
data -123.5, "0-", "123-"
data -123.51, "0-", "124-"
data -123.6, "0-", "124-"
data -1.23, "###.###-", "1.23-"
data -0.123, "###.###-", ".123-"
data -0.1234, "###.###-", ".123-"
data -0.1235, "###.###-", ".123-"
data -0.12351, "###.###-", ".124-"
data -0.1236, "###.###-", ".124-"
data -123, "###.###-", "123.-"
data -123, "#-", "123-"
data -123, "#.##e-000-", "1.23e002-"
data -123, "#.##e+000-", "1.23e+002-"
data -0.123, "#.##e-000-", "1.23e-001-"
data -0.1234, "#.##e-000-", "1.23e-001-"
data -0.1235, "#.##e-000-", "1.23e-001-"
data -0.12351, "#.##e-000-", "1.24e-001-"
data -0.1236, "#.##e-000-", "1.24e-001-"
data -0.000000000125, "#.##e-0-", "1.25e-10-"
data -0.999999, "#.00e+000-", "1.00e+000-"
data -9.9e+20, "#-", "990000000000000000000-"
data -4.9e-324, "#.#e+#-", "4.9e-324-"
data -9.9e-100, "###################e+#-", "9900000000000000000e-118-"

data 0.1236, "##0.00%-", "12.36%"
data 123, !"\"asd\\\"", !"asd\\"
data 0, "###-", "0"
data 123, "###-", "123"
data 123, "###00000-", "00123"
data 123, "00000###-", "00000123"
data 123.5, "0-", "123"
data 123.51, "0-", "124"
data 123.6, "0-", "124"
data 1.23, "###.###-", "1.23"
data 0.123, "###.###-", ".123"
data 0.1234, "###.###-", ".123"
data 0.1235, "###.###-", ".123"
data 0.12351, "###.###-", ".124"
data 0.1236, "###.###-", ".124"
data 123, "###.###-", "123."
data 123, "#-", "123"
data 123, "#.##e-000-", "1.23e002"
data 123, "#.##e+000-", "1.23e+002"
data 0.123, "#.##e-000-", "1.23e-001"
data 0.1234, "#.##e-000-", "1.23e-001"
data 0.1235, "#.##e-000-", "1.23e-001"
data 0.12351, "#.##e-000-", "1.24e-001"
data 0.1236, "#.##e-000-", "1.24e-001"
data 0.000000000125, "#.##e-0-", "1.25e-10"
data 0.999999, "#.00e+000-", "1.00e+000"
data 9.9e+20, "#-", "990000000000000000000"
data 4.9e-324, "#.#e+#-", "4.9e-324"
data 9.9e-100, "###################e+#-", "9900000000000000000e-118"

data 1234, "###,0.00", "1,234.00"
data 1234567, "#,#,#,0.00", "1,234,567.00"
data 1234, "###,,0.00", "0.00"
data 1234567, "###,,0.00", "1.23"
data 1234567, "###0,,.00", "1.23"
data 1234, "###0,.00", "1.23"
data 1234, "#########,0.00", "1,234.00"
data 123456, "#######,##0.00", "123,456.00"
data 12345678, "#######,##0.00", "12,345,678.00"
data 123, "#########,0.00", "123.00"
data 100000, "#,##0.00", "100,000.00"

data "."
data 1, 4578.1236, "", "4578.1236"
data 1, 4578.125, "", "4578.125"
data 1, 1234.0, "", "1234"

data 1, 0.1236, "##0.00%", "12.36%"
data 1, 123, !"\"asd\\\"", !"asd\\"
data 1, 0, "###", "0"
data 1, 123, "###", "123"
data 1, 123, "###00000", "00123"
data 1, 123, "00000###", "00000123"
data 1, 123.5, "0", "123"
data 1, 123.51, "0", "124"
data 1, 123.6, "0", "124"
data 1, 1.23, "###.###", "1.23"
data 1, 0.123, "###.###", ".123"
data 1, 0.1234, "###.###", ".123"
data 1, 0.1235, "###.###", ".123"
data 1, 0.12351, "###.###", ".124"
data 1, 0.1236, "###.###", ".124"
data 1, 123, "###.###", "123."
data 1, 123, "#", "123"
data 1, 123, "#.##e-000", "1.23e002"
data 1, 123, "#.##e+000", "1.23e+002"
data 1, 0.123, "#.##e-000", "1.23e-001"
data 1, 0.1234, "#.##e-000", "1.23e-001"
data 1, 0.1235, "#.##e-000", "1.23e-001"
data 1, 0.12351, "#.##e-000", "1.24e-001"
data 1, 0.1236, "#.##e-000", "1.24e-001"
data 1, 0.000000000125, "#.##e-0", "1.25e-10"
data 1, 0.999999, "#.00e+000", "1.00e+000"
data BUG, 9.9e+20, "#", "990000000000000000000"
data 1, 4.9e-324, "#.#e+#", "4.9e-324"
data BUG, 9.9e-100, "###################e+#", "9900000000000000000e-118"

data 1, -0.1236, "##0.00%", "-12.36%"
data 1, -123, !"\"asd\\\"", !"asd\\"
data 1, -0, "###", "0"
data 1, -123, "###", "-123"
data 1, -123, "###00000", "-00123"
data 1, -123, "00000###", "-00000123"
data 1, -123.5, "0", "-123"
data 1, -123.51, "0", "-124"
data 1, -123.6, "0", "-124"
data 1, -1.23, "###.###", "-1.23"
data 1, -0.123, "###.###", "-.123"
data 1, -0.1234, "###.###", "-.123"
data 1, -0.1235, "###.###", "-.123"
data 1, -0.12351, "###.###", "-.124"
data 1, -0.1236, "###.###", "-.124"
data 1, -123, "###.###", "-123."
data 1, -123, "#", "-123"
data 1, -123, "#.##e-000", "-1.23e002"
data 1, -123, "#.##e+000", "-1.23e+002"
data 1, -0.123, "#.##e-000", "-1.23e-001"
data 1, -0.1234, "#.##e-000", "-1.23e-001"
data 1, -0.1235, "#.##e-000", "-1.23e-001"
data 1, -0.12351, "#.##e-000", "-1.24e-001"
data 1, -0.1236, "#.##e-000", "-1.24e-001"
data 1, -0.000000000125, "#.##e-0", "-1.25e-10"
data 1, -0.999999, "#.00e+000", "-1.00e+000"
data BUG, -9.9e+20, "#", "-990000000000000000000"
data 1, -4.9e-324, "#.#e+#", "-4.9e-324"
data BUG, -9.9e-100, "###################e+#", "-9900000000000000000e-118"

data 1, -0.1236, "##0.00%-", "12.36%-"
data 1, -123, !"\"asd\\\"", !"asd\\"
data 1, -0, "###-", "0"
data 1, -123, "###-", "123-"
data 1, -123, "###00000-", "00123-"
data 1, -123, "00000###-", "00000123-"
data 1, -123.5, "0-", "123-"
data 1, -123.51, "0-", "124-"
data 1, -123.6, "0-", "124-"
data 1, -1.23, "###.###-", "1.23-"
data 1, -0.123, "###.###-", ".123-"
data 1, -0.1234, "###.###-", ".123-"
data 1, -0.1235, "###.###-", ".123-"
data 1, -0.12351, "###.###-", ".124-"
data 1, -0.1236, "###.###-", ".124-"
data 1, -123, "###.###-", "123.-"
data 1, -123, "#-", "123-"
data 1, -123, "#.##e-000-", "1.23e002-"
data 1, -123, "#.##e+000-", "1.23e+002-"
data 1, -0.123, "#.##e-000-", "1.23e-001-"
data 1, -0.1234, "#.##e-000-", "1.23e-001-"
data 1, -0.1235, "#.##e-000-", "1.23e-001-"
data 1, -0.12351, "#.##e-000-", "1.24e-001-"
data 1, -0.1236, "#.##e-000-", "1.24e-001-"
data 1, -0.000000000125, "#.##e-0-", "1.25e-10-"
data 1, -0.999999, "#.00e+000-", "1.00e+000-"
data BUG, -9.9e+20, "#-", "990000000000000000000-"
data 1, -4.9e-324, "#.#e+#-", "4.9e-324-"
data BUG, -9.9e-100, "###################e+#-", "9900000000000000000e-118-"

data 1, 0.1236, "##0.00%-", "12.36%"
data 1, 123, !"\"asd\\\"", !"asd\\"
data 1, 0, "###-", "0"
data 1, 123, "###-", "123"
data 1, 123, "###00000-", "00123"
data 1, 123, "00000###-", "00000123"
data 1, 123.5, "0-", "123"
data 1, 123.51, "0-", "124"
data 1, 123.6, "0-", "124"
data 1, 1.23, "###.###-", "1.23"
data 1, 0.123, "###.###-", ".123"
data 1, 0.1234, "###.###-", ".123"
data 1, 0.1235, "###.###-", ".123"
data 1, 0.12351, "###.###-", ".124"
data 1, 0.1236, "###.###-", ".124"
data 1, 123, "###.###-", "123."
data 1, 123, "#-", "123"
data 1, 123, "#.##e-000-", "1.23e002"
data 1, 123, "#.##e+000-", "1.23e+002"
data 1, 0.123, "#.##e-000-", "1.23e-001"
data 1, 0.1234, "#.##e-000-", "1.23e-001"
data 1, 0.1235, "#.##e-000-", "1.23e-001"
data 1, 0.12351, "#.##e-000-", "1.24e-001"
data 1, 0.1236, "#.##e-000-", "1.24e-001"
data 1, 0.000000000125, "#.##e-0-", "1.25e-10"
data 1, 0.999999, "#.00e+000-", "1.00e+000"
data BUG, 9.9e+20, "#-", "990000000000000000000"
data 1, 4.9e-324, "#.#e+#-", "4.9e-324"
data BUG, 9.9e-100, "###################e+#-", "9900000000000000000e-118"

data 1, 1234, "###,0.00", "1,234.00"
data 1, 1234567, "#,#,#,0.00", "1,234,567.00"
data 1, 1234, "###,,0.00", "0.00"
data 1, 1234567, "###,,0.00", "1.23"
data 1, 1234567, "###0,,.00", "1.23"
data 1, 1234, "###0,.00", "1.23"
data 1, 1234, "#########,0.00", "1,234.00"
data 1, 123456, "#######,##0.00", "123,456.00"
data 1, 12345678, "#######,##0.00", "12,345,678.00"
data 1, 123, "#########,0.00", "123.00"
data 1, 100000, "#,##0.00", "100,000.00"

data 1, "."

tests_dt:
data "Jun 1, 2005", "yyyy-mm-dd", "2005-06-01"
Expand Down Expand Up @@ -170,17 +181,20 @@ SUITE( fbc_tests.string_.format_ )
TEST( numberFormatTest )
dim as string sValue, sMask, sWanted, sResult
dim as double dblValue
dim as integer bTest

restore tests_num
read sValue
read bTest, sValue
while sValue<>"."
dblValue = val(sValue)
read sMask, sWanted
' print sWanted,
sResult = Format(dblValue, sMask)
' print sResult
CU_ASSERT_EQUAL( sWanted, sResult )
read sValue
if( bTest ) then
CU_ASSERT_EQUAL( sWanted, sResult )
end if
read bTest, sValue
wend

END_TEST
Expand Down