localdatetimetest.cpp

来自「C++ class libraries for network-centric,」· C++ 代码 · 共 392 行

CPP
392
字号
//// LocalDateTimeTest.cpp//// $Id: //poco/1.2/Foundation/testsuite/src/LocalDateTimeTest.cpp#1 $//// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.// and Contributors.//// Permission is hereby granted, free of charge, to any person or organization// obtaining a copy of the software and accompanying documentation covered by// this license (the "Software") to use, reproduce, display, distribute,// execute, and transmit the Software, and to prepare derivative works of the// Software, and to permit third-parties to whom the Software is furnished to// do so, all subject to the following:// // The copyright notices in the Software and this entire statement, including// the above license grant, this restriction and the following disclaimer,// must be included in all copies of the Software, in whole or in part, and// all derivative works of the Software, unless such copies or derivative// works are solely in the form of machine-executable object code generated by// a source language processor.// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER// DEALINGS IN THE SOFTWARE.//#include "LocalDateTimeTest.h"#include "CppUnit/TestCaller.h"#include "CppUnit/TestSuite.h"#include "Poco/LocalDateTime.h"#include "Poco/DateTime.h"#include "Poco/Timestamp.h"#include "Poco/Timespan.h"#include "Poco/Timezone.h"using Poco::LocalDateTime;using Poco::DateTime;using Poco::Timestamp;using Poco::Timespan;using Poco::Timezone;LocalDateTimeTest::LocalDateTimeTest(const std::string& name): CppUnit::TestCase(name){}LocalDateTimeTest::~LocalDateTimeTest(){}void LocalDateTimeTest::testGregorian1(){	LocalDateTime dt(1970, 1, 1);	assert (dt.year() == 1970);	assert (dt.month() == 1);	assert (dt.day() == 1);	assert (dt.hour() == 0);	assert (dt.minute() == 0);	assert (dt.second() == 0);	assert (dt.millisecond() == 0);	assert (dt.dayOfWeek() == 4);	assert (dt.tzd() == Timezone::tzd());	assert (dt.julianDay() == 2440587.5);		dt.assign(2001, 9, 9, 1, 46, 40);	assert (dt.year() == 2001);	assert (dt.month() == 9);	assert (dt.day() == 9);	assert (dt.hour() == 1);	assert (dt.minute() == 46);	assert (dt.second() == 40);	assert (dt.millisecond() == 0);	assert (dt.dayOfWeek() == 0);	assert (dt.tzd() == Timezone::tzd());	assertEqualDelta (dt.julianDay(), 2452161.574074, 0.000001);}void LocalDateTimeTest::testGregorian2(){	LocalDateTime dt(2*3600, 1970, 1, 1, 0, 0, 0, 0, 0);	assert (dt.year() == 1970);	assert (dt.month() == 1);	assert (dt.day() == 1);	assert (dt.hour() == 0);	assert (dt.minute() == 0);	assert (dt.second() == 0);	assert (dt.millisecond() == 0);	assert (dt.dayOfWeek() == 4);	assert (dt.tzd() == 2*3600);		dt.assign(-7*3600, 2001, 9, 9, 1, 46, 40, 0, 0);	assert (dt.year() == 2001);	assert (dt.month() == 9);	assert (dt.day() == 9);	assert (dt.hour() == 1);	assert (dt.minute() == 46);	assert (dt.second() == 40);	assert (dt.millisecond() == 0);	assert (dt.dayOfWeek() == 0);	assert (dt.tzd() == -7*3600);}void LocalDateTimeTest::testConversions(){	LocalDateTime dt1(2*3600, 2005, 1, 28, 14, 24, 44, 234, 0);	LocalDateTime dt2(dt1.tzd(), dt1.utc());	LocalDateTime dt3;	dt3 = dt1;	LocalDateTime dt4(dt2);	LocalDateTime dt5(-4*3600, dt1.utc());	assert (dt2.year() == 2005);	assert (dt2.month() == 1);	assert (dt2.day() == 28);	assert (dt2.hour() == 14);	assert (dt2.minute() == 24);	assert (dt2.second() == 44);	assert (dt2.millisecond() == 234);	assert (dt2.dayOfWeek() == 5);	assert (dt2.tzd() == 2*3600);	assert (dt5.year() == 2005);	assert (dt5.month() == 1);	assert (dt5.day() == 28);	assert (dt5.hour() == 8);	assert (dt5.minute() == 24);	assert (dt5.second() == 44);	assert (dt5.millisecond() == 234);	assert (dt5.dayOfWeek() == 5);	assert (dt5.tzd() == -4*3600);}void LocalDateTimeTest::testCalcs(){	LocalDateTime dt1(2005, 1, 1);	assert (dt1.dayOfYear() == 1);	assert (dt1.week(DateTime::MONDAY) == 0);	dt1.assign(2005, 1, 3);	assert (dt1.dayOfYear() == 3);	assert (dt1.week(DateTime::MONDAY) == 1);	dt1.assign(2005, 1, 9);	assert (dt1.dayOfYear() == 9);	assert (dt1.week(DateTime::MONDAY) == 1);	dt1.assign(2005, 1, 10);	assert (dt1.dayOfYear() == 10);	assert (dt1.week(DateTime::MONDAY) == 2);	dt1.assign(2005, 2, 1);	assert (dt1.dayOfYear() == 32);	assert (dt1.week(DateTime::MONDAY) == 5);	dt1.assign(2005, 12, 31);	assert (dt1.week(DateTime::MONDAY) == 52);	dt1.assign(2007, 1, 1);	assert (dt1.week(DateTime::MONDAY) == 1);	dt1.assign(2007, 12, 31);	assert (dt1.week(DateTime::MONDAY) == 53);		// Jan 1 is Mon	dt1.assign(2001, 1, 1);  	assert (dt1.week() == 1);	dt1.assign(2001, 1, 7);	assert (dt1.week() == 1);	dt1.assign(2001, 1, 8);	assert (dt1.week() == 2);	dt1.assign(2001, 1, 21);	assert (dt1.week() == 3);	dt1.assign(2001, 1, 22);	assert (dt1.week() == 4);	// Jan 1 is Tue	dt1.assign(2002, 1, 1);	assert (dt1.week() == 1);	dt1.assign(2002, 1, 6);	assert (dt1.week() == 1);	dt1.assign(2002, 1, 7);	assert (dt1.week() == 2);	dt1.assign(2002, 1, 20);	assert (dt1.week() == 3);	dt1.assign(2002, 1, 21);	assert (dt1.week() == 4);	// Jan 1 is Wed	dt1.assign(2003, 1, 1);	assert (dt1.week() == 1);	dt1.assign(2003, 1, 5);	assert (dt1.week() == 1);	dt1.assign(2003, 1, 6);	assert (dt1.week() == 2);	dt1.assign(2003, 1, 19);	assert (dt1.week() == 3);	dt1.assign(2003, 1, 20);	assert (dt1.week() == 4);		// Jan 1 is Thu	dt1.assign(2004, 1, 1);	assert (dt1.week() == 1);	dt1.assign(2004, 1, 4);	assert (dt1.week() == 1);	dt1.assign(2004, 1, 5);	assert (dt1.week() == 2);	dt1.assign(2004, 1, 18);	assert (dt1.week() == 3);	dt1.assign(2004, 1, 19);	assert (dt1.week() == 4);	// Jan 1 is Fri	dt1.assign(1999, 1, 1);	assert (dt1.week() == 0);	dt1.assign(1999, 1, 3);	assert (dt1.week() == 0);	dt1.assign(1999, 1, 4);	assert (dt1.week() == 1);	dt1.assign(1999, 1, 17);	assert (dt1.week() == 2);	dt1.assign(1999, 1, 18);	assert (dt1.week() == 3);	// Jan 1 is Sat	dt1.assign(2000, 1, 1);	assert (dt1.week() == 0);	dt1.assign(2000, 1, 2);	assert (dt1.week() == 0);	dt1.assign(2000, 1, 3);	assert (dt1.week() == 1);	dt1.assign(2000, 1, 16);	assert (dt1.week() == 2);	dt1.assign(2000, 1, 17);	assert (dt1.week() == 3);		// Jan 1 is Sun	dt1.assign(1995, 1, 1);	assert (dt1.week() == 0);	dt1.assign(1995, 1, 2);	assert (dt1.week() == 1);	dt1.assign(1995, 1, 3);	assert (dt1.week() == 1);	dt1.assign(1995, 1, 15);	assert (dt1.week() == 2);	dt1.assign(1995, 1, 16);	assert (dt1.week() == 3);}void LocalDateTimeTest::testAMPM(){	LocalDateTime dt1(2005, 1, 1, 0, 15, 30);	assert (dt1.isAM());	assert (!dt1.isPM());	assert (dt1.hourAMPM() == 12);		dt1.assign(2005, 1, 1, 12, 15, 30);	assert (!dt1.isAM());	assert (dt1.isPM());	assert (dt1.hourAMPM() == 12);	dt1.assign(2005, 1, 1, 13, 15, 30);	assert (!dt1.isAM());	assert (dt1.isPM());	assert (dt1.hourAMPM() == 1);}void LocalDateTimeTest::testRelational1(){	LocalDateTime dt1(2005, 1, 1, 0, 15, 30);	LocalDateTime dt2(2005, 1, 2, 0, 15, 30);	LocalDateTime dt3(dt1);		assert (dt1 < dt2);	assert (dt1 <= dt2);	assert (dt2 > dt1);	assert (dt2 >= dt1);	assert (dt1 != dt2);	assert (!(dt1 == dt2));		assert (dt1 == dt3);	assert (!(dt1 != dt3));	assert (dt1 >= dt3);	assert (dt1 <= dt3);	assert (!(dt1 > dt3));	assert (!(dt1 < dt3));}void LocalDateTimeTest::testRelational2(){	LocalDateTime dt1(2*3600, 2005, 1, 1, 15, 30, 0, 0, 0);	LocalDateTime dt2(2*3600, 2005, 1, 1, 17, 30, 0, 0, 0);	LocalDateTime dt3(5*3600, 2005, 1, 1, 18, 30, 0, 0, 0);	assert (dt1 < dt2);	assert (dt1 <= dt2);	assert (dt2 > dt1);	assert (dt2 >= dt1);	assert (dt1 != dt2);	assert (!(dt1 == dt2));		assert (dt1 == dt3);	assert (!(dt1 != dt3));	assert (dt1 >= dt3);	assert (dt1 <= dt3);	assert (!(dt1 > dt3));	assert (!(dt1 < dt3));}void LocalDateTimeTest::testArithmetics1(){	LocalDateTime dt1(2005, 1, 1, 0, 15, 30);	LocalDateTime dt2(2005, 1, 2, 0, 15, 30);		Timespan s = dt2 - dt1;	assert (s.days() == 1);		LocalDateTime dt3 = dt1 + s;	assert (dt3 == dt2);		dt3 -= s;	assert (dt3 == dt1);	dt1 += s;	assert (dt1 == dt2);}void LocalDateTimeTest::testArithmetics2(){	LocalDateTime dt1(2*3600, 2005, 1, 1, 15, 30, 0, 0, 0);	LocalDateTime dt2(5*3600, 2005, 1, 2, 18, 30, 0, 0, 0);		Timespan s = dt2 - dt1;	assert (s.days() == 1);		LocalDateTime dt3 = dt1 + s;	assert (dt3 == dt2);		dt3 -= s;	assert (dt3 == dt1);	dt1 += s;	assert (dt1 == dt2);}void LocalDateTimeTest::testSwap(){	LocalDateTime dt1(2005, 1, 1, 0, 15, 30);	LocalDateTime dt2(2005, 1, 2, 0, 15, 30);		assert (dt1 < dt2);	dt1.swap(dt2);	assert (dt2 < dt1);}void LocalDateTimeTest::setUp(){}void LocalDateTimeTest::tearDown(){}CppUnit::Test* LocalDateTimeTest::suite(){	CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("LocalDateTimeTest");	CppUnit_addTest(pSuite, LocalDateTimeTest, testGregorian1);	CppUnit_addTest(pSuite, LocalDateTimeTest, testGregorian2);	CppUnit_addTest(pSuite, LocalDateTimeTest, testConversions);	CppUnit_addTest(pSuite, LocalDateTimeTest, testCalcs);	CppUnit_addTest(pSuite, LocalDateTimeTest, testAMPM);	CppUnit_addTest(pSuite, LocalDateTimeTest, testRelational1);	CppUnit_addTest(pSuite, LocalDateTimeTest, testRelational2);	CppUnit_addTest(pSuite, LocalDateTimeTest, testArithmetics1);	CppUnit_addTest(pSuite, LocalDateTimeTest, testArithmetics2);	CppUnit_addTest(pSuite, LocalDateTimeTest, testSwap);	return pSuite;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?