diff --git a/harbour/utils/hbtest/rt_trans.prg b/harbour/utils/hbtest/rt_trans.prg index d9234f14d2..362d074552 100644 --- a/harbour/utils/hbtest/rt_trans.prg +++ b/harbour/utils/hbtest/rt_trans.prg @@ -57,7 +57,7 @@ FUNCTION Main_TRANS() LOCAL cOldDate := Set( _SET_DATEFORMAT ) - + local dt /* TRANSFORM() */ TEST_LINE( Transform( NIL , NIL ) , "E BASE 1122 Argument error TRANSFORM A:2:U:NIL;U:NIL F:S" ) @@ -513,7 +513,266 @@ FUNCTION Main_TRANS() Set( _SET_DATEFORMAT, cOldDate ) - RETURN NIL + TEST_LINE( Transform( "abcd", "@9!*") , "ABCD" ) + TEST_LINE( Transform( "abcd", "@_9!*") , "ABCD" ) + TEST_LINE( Transform( "abcd", "@_9"+chr(9)+"9!9"), "aBc" ) + TEST_LINE( Transform( "abcd", "@!!!" ), "ABCD" ) + TEST_LINE( Transform( "abcd", "@9"), "abcd" ) + TEST_LINE( Transform( 134.24, "99,999.99") , " 134.24" ) + TEST_LINE( Transform( 134.24, "@E 99,999.99") , " 134,24" ) + TEST_LINE( Transform( -134.24,"@E 99,999.99") , " -134,24" ) + TEST_LINE( Transform( 134.24, "@E99,999.99") , " 134,24" ) + TEST_LINE( Transform( -134.24, "@E99,999.99") , " -134,24" ) + + TEST_LINE( Transform(-7, "@X 9999") , " 7 DB") + TEST_LINE( Transform(stod("19920509"), "@E") , "09/05/92") + TEST_LINE( Transform(val("3.10"),"@X") , "3.10") + TEST_LINE( Transform(0.80,".9999") , ".8000" ) + TEST_LINE( Transform(-0.80, ".9999") , ".****" ) + TEST_LINE( Transform(12345.123, "@X99") , " 12345.123") + TEST_LINE( Transform(-12345.123, "@X99") , " 12345.123 DB" ) + TEST_LINE( Transform( 123456.78, "@E"), " 123456,78") + TEST_LINE( Transform(0,"@C 9.99"), "0.00") +#ifdef __HARBOUR__ + dt:=stod("19871231") + set date format to "MM:DD:YYYY" + TEST_LINE( Transform( dt, "@E") , "31:12:1987" ) + set date format to "DD:MM:YYYY" + TEST_LINE( Transform( dt, "@E") , "31:12:1987") + set date format to "YYYY:MM:DD" + TEST_LINE( Transform( dt, "@E") , "31:12:1987") + set date format to "YYYY:DD:MM" + TEST_LINE( Transform( dt, "@E") , "31:12:1987") + set date format to "YY:MM:DD" + TEST_LINE( Transform( dt, "@E") , "31:12:87") + set date format to "MM:DD:YY" + TEST_LINE( Transform( dt, "@E") , "31:12:87") + set date format to "DD:MM:YY" + TEST_LINE( Transform( dt, "@E") , "31:12:87") + set date format to "" + TEST_LINE( Transform( dt, "@E") , "<31:12.87>") + set date format to "|YY|MM|DD|" + TEST_LINE( Transform( dt, "@E") , "|31|12|87|") + set date format to "MM
YY" + TEST_LINE( Transform( dt, "@E") , "31<12>87") + +#endif + + TEST_LINE( Transform( -5, "@(Z $###,##9.99") , "( 5.00)" ) + TEST_LINE( Transform( -10, "@)Z $###,##9.99") , "$ (10.00)" ) + TEST_LINE( Transform( -20, "@Z $###,##9.99") , "$ -20.00" ) + TEST_LINE( Transform(100,"9999.") , " 100.") + TEST_LINE( Transform(1.1,"@B!99.99") , "1.1 ") + TEST_LINE( Transform(12.345,"@R 99/99") , " /12") + TEST_LINE( Transform( "1234567890", "@9") , "1234567890") + TEST_LINE( Transform( 1234567890, "@9") , " 1234567890") + TEST_LINE( Transform( 1234, "9 999") , "1 234" ) + TEST_LINE( Transform( 123.123456, "999.99.99.99") , "123.12.45. " ) + TEST_LINE( Transform( 123.123456, "$$$.$$.$$.$$") , "123.12.45. " ) + TEST_LINE( Transform( 123.123456, "***.**.**.**") , "123.12.45. " ) + TEST_LINE( Transform( 99999, "9.999") , "*.***" ) + TEST_LINE( Transform( 99, "*.***") , "*.***" ) + TEST_LINE( Transform( 12345, "9999.") , "****." ) + + TEST_LINE( Transform(-12345.00, "@(") , "( 12345.00)") + TEST_LINE( Transform(-12345.00, "@)") , " (12345.00)") + TEST_LINE( Transform(-123456789.00, "@(") , "(123456789.00)") + TEST_LINE( Transform(-123456789.00, "@)") , "(123456789.00)") + TEST_LINE( Transform(-1234567890, "@(") , "( 1234567890)") + TEST_LINE( Transform(-1234567890, "@)") , " (1234567890)") + TEST_LINE( Transform(-12345, "@( [999999]") , "( 12345])") + TEST_LINE( Transform(-12345, "@) [999999]") , "[(12345])") + TEST_LINE( Transform(-12345, "@( $999999") , "( 12345)") + TEST_LINE( Transform(-12345, "@) $999999") , "$(12345)") + TEST_LINE( Transform(-12345, "@( #999999") , "( 12345)") + TEST_LINE( Transform(-12345, "@) #999999") , " (12345)") + TEST_LINE( Transform(-12345, "@( $99999") , "(12345)") + TEST_LINE( Transform(-12345, "@) $99999") , "(12345)") + TEST_LINE( Transform(-12345, "@( #99999") , "(12345)") + TEST_LINE( Transform(-12345, "@) #99999") , "(12345)") + TEST_LINE( Transform(-12345, "@( 6798^999") , "(7*8^***)") + TEST_LINE( Transform(-12345, "@( 9798^9999") , "(718^2345)") + + TEST_LINE( Transform( 134.24, "@E99,999.99") , " 134,24" ) + TEST_LINE( Transform( -134.24, "@E99,999.99") , " -134,24" ) + TEST_LINE( Transform(0.80,".9999") , ".8000") + TEST_LINE( Transform(-0.80,".9999") , ".****") + TEST_LINE( Transform(12345.123, "@X99") , " 12345.123") + TEST_LINE( Transform(-12345.123, "@X99") , " 12345.123 DB") + TEST_LINE( Transform( 123456.78, "@E" ) , " 123456,78") + TEST_LINE( Transform(0,"@C 9.99") , "0.00") + TEST_LINE( Transform(1.1,"@B!99.99") , "1.1 ") + TEST_LINE( Transform(-12345, "@) [999999]") , "[(12345])") + TEST_LINE( Transform(-12345, "@) $999999") , "$(12345)") + TEST_LINE( Transform(-12345, "@) *999999") , "*(12345)") + TEST_LINE( Transform(-12345, "@) #999999") , " (12345)") + TEST_LINE( Transform(-12345, "@) *9$9*999]") , "*($12345])") + TEST_LINE( Transform(-12345, "@) *999*999]") , "* (12345])") + TEST_LINE( Transform(-12345, "@) 0999*999]") , "0 (12345])") + TEST_LINE( Transform(-12345, "@) 1999*999]") , "1 (12345])") + TEST_LINE( Transform(-12345, "@) *[99*999]") , "([ 12345])") + TEST_LINE( Transform(-12345, "@) *****999]") , "(**12345])") + TEST_LINE( Transform(-12345, "@) *1***999]") , "(1*12345])") + TEST_LINE( Transform(-12345, "@) * 999999]") , "* (12345])") + TEST_LINE( Transform( -5, "@(Z $###,##9.99") , "( 5.00)" ) + TEST_LINE( Transform( -10, "@)Z $###,##9.99") , "$ (10.00)" ) + TEST_LINE( Transform( -5, "@(Z $999,999.99") , "( 5.00)" ) + TEST_LINE( Transform( -10, "@)Z $999,999.99") , "$ (10.00)" ) + TEST_LINE( Transform( -5, "@(Z 999,999.99") , "( 5.00)" ) + TEST_LINE( Transform( -10, "@)Z 999,999.99") , " (10.00)" ) + TEST_LINE( Transform( -20, "@Z $###,##9.99") , "$ -20.00" ) + TEST_LINE( Transform(0.1,".9") , ".1") + TEST_LINE( Transform(0.0,".9") , ".0") + TEST_LINE( Transform(1,".9") , ".*") + TEST_LINE( Transform(.456,".9") , ".5") + TEST_LINE( Transform(123,"99.-") , "**.-") + + TEST_LINE( Transform(-123.45,"999,999.99") , " -123.45") + TEST_LINE( Transform(-123456.78,"999,999,999.99") , " -123,456.78") + TEST_LINE( Transform(-123456.78,"$$$,$$$,$$$.$$") , "$$ -123,456.78") + TEST_LINE( Transform(-123456.78,"***,***,***.**") , "***-123,456.78") + TEST_LINE( Transform(123456.78,"@E 888,$$$,$$$.$$") , "888.123.456,78") + TEST_LINE( Transform(123456.78,"@E 888x,$$$,$$$.$$") , "888xx123.456,78") + TEST_LINE( Transform(123456.78,"@E 888x,,$$$,$$$.$$") , "888xxx123.456,78") + TEST_LINE( Transform(123456.78,"@E 8,88x,,$$$,$$$.$$") , "8.88xxx123.456,78") + TEST_LINE( Transform(123456.78,"@E 8,88x,,$$$,,$$$.$$") , "8.88xxx123..456,78") + TEST_LINE( Transform(123456.78,"@E 8,88x,,$$$,,$$$.$$77,7") , "8.88xxx123..456,7877,7") + TEST_LINE( Transform(123456,"@E 8,88x,,$$$,,$$$77,7") , "8.88xxx123..45677,7") + TEST_LINE( Transform(123456,"@E -,999,999") , " -123.456") + TEST_LINE( Transform(12345,"@E -,999,999") , " - 12.345") + TEST_LINE( Transform(12345,"@E -,|999,999") , " -| 12.345") + TEST_LINE( Transform(12345,"@E ^-,|999,999") , "^^-| 12.345") + TEST_LINE( Transform(12345,"@E 1-,|999,999") , "11-| 12.345") + TEST_LINE( Transform(12345,"@E |--,|999,999") , "|---| 12.345") + + TEST_LINE( Transform(12.34,"@E 99'99") , " '12") + TEST_LINE( Transform(12.34,"99,99,11") , " 12,11") + TEST_LINE( Transform(12.34,"@E 99,99,11") , " 12,11") + TEST_LINE( Transform(12.34,"@E 99,") , "12,") + TEST_LINE( Transform(12.34,"@E 9,9") , "1.2") + TEST_LINE( Transform(12.34,"@E ab,cd.ef9,9.99,.--") , "abbcd,ef***,* ,.--") + TEST_LINE( Transform(12.34,"@E ab,cd,ef9,9.99,.--") , "abbcddef1.2,34,.--") + TEST_LINE( Transform(12.34,"@E ,ab,cd,ef9,9.99,.--") , ",abbcddef1.2,34,.--") + TEST_LINE( Transform(12.34,"@E ,,,,99,.99,.--") , ",,,,12.,34,.--") + TEST_LINE( Transform(124.4,"@E ,,,,9,9.99,.--") , ",,,,***,**,.--") + TEST_LINE( Transform( 1.2,"@E ,,,,*,*.**,.--") , ",,,,**1,20,.--") + TEST_LINE( Transform(12.34,"@E ,,,,*,*.**,.--") , ",,,,1.2,34,.--") + TEST_LINE( Transform(12.34,"@E ,,,,*,*.**,.--,--") , ",,,,1.2,34,.--,--") + TEST_LINE( Transform(12.34,"@E ,,,,*,*,.,**") , ",,,,1.2.,,34") + TEST_LINE( Transform(12.34,",,,,*,*,.,**") , ",,,,1,2,..34") + TEST_LINE( Transform(12.34,",,,,*,*,.,*|,*") , ",,,,1,2,..3||4") + TEST_LINE( Transform(12.34,",,,,*,*,.,*,*") , ",,,,1,2,..3,4") + TEST_LINE( Transform(123.345678912,"@E 999.99.99,99.99.") , "123,34,67.89, .") +#ifdef __HARBOUR__ + TEST_LINE( Transform( 1234567890123456789, "99999999999999999999") , " 1234567890123456789" ) + TEST_LINE( Transform( -1234567890123456789, "99999999999999999999") , "-1234567890123456789" ) +#else + TEST_LINE( Transform( 1234567890123456789, "99999999999999999999") , " 1234567890123457000" ) + TEST_LINE( Transform( -1234567890123456789, "99999999999999999999") , "-1234567890123457000" ) +#endif + set(_SET_DATEFORMAT,"YYYY/MM/DD") + TEST_LINE( Transform(12345678,"@D") , "1234/56/78") + set(_SET_DATEFORMAT,"YYYY.MM.DD") + TEST_LINE( Transform(1234.56789,"@D") , "1234.56.9 ") + set(_SET_DATEFORMAT,"YYYY.MM:DD") + TEST_LINE( Transform(1234.56789,"@D"), "1234.56:79") + TEST_LINE( Transform(123.345678912,"@D ") , " 123.34:57") + set(_SET_DATEFORMAT,"MM-DD-YYYY") + TEST_LINE( Transform(.t.,"@RE <|,yY#lL,|>") , "99-99-9999T") + TEST_LINE( Transform(.f.,"@RE <|,yY#lL,|>") , "99-99-9999F") + TEST_LINE( Transform(.t.,"@RD <|,yY#lL,|>") , "99-99-9999T") + TEST_LINE( Transform(.f.,"@RD <|,yY#lL,|>") , "99-99-9999F") + TEST_LINE( Transform(.f.,"@DE <|,yY#lL,|>") , "9") + TEST_LINE( Transform("abcdefghij","@S15! ") , "") + TEST_LINE( Transform("abcdefghij","@S0! ") , "") + TEST_LINE( Transform("abcdefghij","@S5! ") , "