From c894a7cdd8686ea695602a23a511a3f1b0d047be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Mon, 14 Aug 2023 21:07:46 +0200 Subject: New upstream version 4.1.4 --- src/tests/xb_test_date.cpp | 214 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 214 insertions(+) create mode 100755 src/tests/xb_test_date.cpp (limited to 'src/tests/xb_test_date.cpp') diff --git a/src/tests/xb_test_date.cpp b/src/tests/xb_test_date.cpp new file mode 100755 index 0000000..0efe102 --- /dev/null +++ b/src/tests/xb_test_date.cpp @@ -0,0 +1,214 @@ +/* xb_test_date.cpp + +XBase64 Software Library + +Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel + +The xb64 software library is covered under the terms of the GPL Version 3, 2007 license. + +Email Contact: + + XDB-devel@lists.sourceforge.net + XDB-users@lists.sourceforge.net + +*/ + +// This program tests the date class xbDate + +// usage: xb_test_date QUITE|NORMAL|VERBOSE + + +#include "xbase.h" + +using namespace xb; + +#include "tstfuncs.cpp" + + +int main( int argCnt, char **av ) +{ + int iRc = 0; + xbInt16 po = 1; /* print option */ + /* 0 - QUIET */ + /* 1 - NORMAL */ + /* 2 - VERBOSE */ + + if( argCnt > 1 ) { + if( av[1][0] == 'Q' ) + po = 0; + else if( av[1][0] == 'V' ) + po = 2; + } + + xbXBase x; + #ifdef XB_LOGGING_SUPPORT + x.SetLogDirectory( PROJECT_LOG_DIR ); + x.EnableMsgLogging(); + if( po ){ + std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl; + } + xbString sMsg; + sMsg.Sprintf( "Program [%s] initializing...", av[0] ); + x.WriteLogMessage( sMsg ); + #endif + InitTime(); + + xbDate d1; +#ifdef XB_DEBUG_SUPPORT + if( po > 0 ) + d1.DumpDateTables(); +#endif + + xbDate d2( "19890209" ); + xbString s3 = "20120709"; + xbDate d3( s3 ); + xbString s4; + xbString sFmt = ""; + xbString sOutDate; + xbString s; + + iRc += TestMethod( po, "FormatDate( '', sOutDate ) (sys default format)", d3.FormatDate( sFmt, sOutDate ), 0 ); + iRc += TestMethod( po, "FormatDate( '', sOutDate ) (sys default format)", sOutDate, "07/09/12", 8 ); + + + iRc += TestMethod( po, "CenturyOf()" , d3.CenturyOf(), 20 ); + iRc += TestMethod( po, "YearOf()", d3.YearOf(), 2012 ); + iRc += TestMethod( po, "MonthOf()", d3.MonthOf(), 7 ); + + iRc += TestMethod( po, "DayOf( XB_FMT_DAY )", d3.DayOf( XB_FMT_WEEK ), 2 ); + iRc += TestMethod( po, "DayOf( XB_FMT_MONTH )", d3.DayOf( XB_FMT_MONTH ), 9 ); + iRc += TestMethod( po, "DayOf( XB_FMT_YEAR )", d3.DayOf( XB_FMT_YEAR ), 191 ); + + iRc += TestMethod( po, "DateIsValid( '12345678' )", d3.DateIsValid( "12345678" ), 0 ); + iRc += TestMethod( po, "d3.DateIsValid( '20120708' )", d3.DateIsValid( "20120708" ), 1 ); + iRc += TestMethod( po, "d3.IsLeapYear()", d3.IsLeapYear(), 1 ); + iRc += TestMethod( po, "d2.IsLeapYear()", d2.IsLeapYear(), 0 ); + + d1.Set( "20010102" ); + iRc += TestMethod( po, "d1.Set('20010102')", d1.Str(), "20010102", 8 ); + + iRc += TestMethod( po, "d1.CalcRollingCenturyForYear(10)", d1.CalcRollingCenturyForYear( 10 ), 20 ); + iRc += TestMethod( po, "d1.JulianDays()", d1.JulianDays(), 2451912 ); + iRc += TestMethod( po, "d1.Set( '20140709' )", d1.Set( "20140709" ) , 0 ); + + d1.CharDayOf( s ); + iRc += TestMethod( po, "d1.CharDayOf(s)", s, "Wednesday", 9 ); + + d1.CharMonthOf( s ); + iRc += TestMethod( po, "d1.CharMonthOf()", s, "July", 4 ); + + iRc += TestMethod( po, "d1.JulToDate8( 2451913 )", d1.JulToDate8( 2451912 ), 0 ); + iRc += TestMethod( po, "d1.JulToDate8( 2451913 )", d1.Str(), "20010102", 8 ); + iRc += TestMethod( po, "d1.LastDayOfMonth()", d1.LastDayOfMonth(), 0 ); + iRc += TestMethod( po, "d1.LastDayOfMonth()", d1.Str(), "20010131", 8 ); + + iRc += TestMethod( po, "d1.CTOD( '12/01/02' )", d1.CTOD( "12/01/02" ), 0 ); + iRc += TestMethod( po, "d1.CTOD( '12/01/02' )", d1.Str(), "20021201", 8 ); + + xbString s1, s2; + s1 = "MM-DD-YY"; + d1 = "20130402"; + iRc+= TestMethod( po, "d1.FormatDate( s1, sOutDate )", d1.FormatDate( s1, sOutDate ), 0 ); + iRc+= TestMethod( po, "d1.FormatDate( s1, sOutDate )", sOutDate, "04-02-13", 8 ); + + d1 = "20120203"; + iRc += TestMethod( po, "d1=20120203", d1.Str(), "20120203", 8 ); + + s1 = "20130405"; + d1 = s1; + iRc += TestMethod( po, "d1=s1", d1.Str(), "20130405", 8 ); + + d2 = d1; + iRc += TestMethod( po, "d2=d1", d2.Str(), "20130405", 8 ); + + d2+=5; + iRc += TestMethod( po, "d2+=5", d2.Str(), "20130410", 8 ); + + d2-=7; + iRc += TestMethod( po, "d2-=5", d2.Str(), "20130403", 8 ); + + d2++; + iRc += TestMethod( po, "d2++", d2.Str(), "20130404", 8 ); + + d2--; + iRc+= TestMethod( po, "d2--", d2.Str(), "20130403", 8 ); + iRc+= TestMethod( po, "d2-d1", d1-d2, 2 ); + iRc+= TestMethod( po, "d1+2", d1+2, "20130407", 8 ); + iRc+= TestMethod( po, "d1-5", d1-5, "20130402", 8 ); + + //d1.Dump( "d1" ); + //d2.Dump( "d2" ); + + iRc+= TestMethod( po, "d1==d2", d1==d2, 0 ); + d2 = d1; + iRc+= TestMethod( po, "d1==d2", d1==d2, 1 ); + iRc+= TestMethod( po, "d1>=d2", d1>=d2, 1 ); + iRc+= TestMethod( po, "d1<=d2", d1<=d2, 1 ); + iRc+= TestMethod( po, "d1!=d2", d1!=d2, 0 ); + d2++; + iRc+= TestMethod( po, "d1!=d2", d1!=d2, 1 ); + + iRc+= TestMethod( po, "d1>d2", d1>d2, 0 ); + iRc+= TestMethod( po, "d1>=d2", d1>=d2, 0 ); + iRc+= TestMethod( po, "d1d2", d1>d2, 1 ); + iRc+= TestMethod( po, "d1>=d2", d1>=d2, 1 ); + iRc+= TestMethod( po, "d1 d2", dtNull1 > d2, 0 ); + iRc+= TestMethod( po, "dtNull1 <= d2", dtNull1 <= d2, 1 ); + iRc+= TestMethod( po, "dtNull1 >= d2", dtNull1 >= d2, 0 ); + + iRc+= TestMethod( po, "d2 < dtNull1", d2 < dtNull1, 0 ); + iRc+= TestMethod( po, "d2 > dtNull1", d2 > dtNull1, 1 ); + iRc+= TestMethod( po, "d2 <= dtNull1", d2 <= dtNull1, 0 ); + iRc+= TestMethod( po, "d2 >= dtNull1", d2 >= dtNull1, 1 ); + + +/* + xbDate d4( "20171015" ); + std::cout << "day of [" << d4.Str() << "][" << d4.DayOf( XB_FMT_WEEK ) << "]\n"; + d4++; + std::cout << "day of [" << d4.Str() << "][" << d4.DayOf( XB_FMT_WEEK ) << "]\n"; + d4++; + std::cout << "day of [" << d4.Str() << "][" << d4.DayOf( XB_FMT_WEEK ) << "]\n"; + d4++; + std::cout << "day of [" << d4.Str() << "][" << d4.DayOf( XB_FMT_WEEK ) << "]\n"; + d4++; + std::cout << "day of [" << d4.Str() << "][" << d4.DayOf( XB_FMT_WEEK ) << "]\n"; + d4++; + std::cout << "day of [" << d4.Str() << "][" << d4.DayOf( XB_FMT_WEEK ) << "]\n"; + d4++; + std::cout << "day of [" << d4.Str() << "][" << d4.DayOf( XB_FMT_WEEK ) << "]\n"; + d4++; + std::cout << "day of [" << d4.Str() << "][" << d4.DayOf( XB_FMT_WEEK ) << "]\n"; +*/ + + if( po > 0 || iRc < 0 ) + fprintf( stdout, "Total Errors = %d\n", iRc * -1 ); + +#ifdef XB_LOGGING_SUPPORT + sMsg.Sprintf( "Program [%s] terminating with [%d] errors...", av[0], iRc * -1 ); + x.WriteLogMessage( sMsg ); +#endif + + return iRc; +} -- cgit v1.2.3