blob: aa2b8b670b13b767455404e89d3b0cc06d1f73b6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011 ACIN, nxtControl
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Martin Melik Merkumians, Ingo Hegny, Alois Zoitl, Stanislav Meduna - initial API and implementation and/or initial documentation
*******************************************************************************/
#include <boost/test/unit_test.hpp>
#include "../../../src/core/datatypes/forte_time_of_day.h"
BOOST_AUTO_TEST_SUITE(CIEC_TIME_OF_DAY_function_test)
BOOST_AUTO_TEST_CASE(Type_test)
{
CIEC_TIME_OF_DAY nTest;
//check type information
BOOST_CHECK_EQUAL(nTest.getDataTypeID(), CIEC_ANY::e_TIME_OF_DAY);
//check operator bool data type size
BOOST_CHECK_EQUAL(sizeof(nTest.operator TForteUInt64()), sizeof(TForteUInt64));
}
BOOST_AUTO_TEST_CASE(Operator_test)
{
CIEC_TIME_OF_DAY nTest1;
CIEC_TIME_OF_DAY nTest2;
//check if data type is initialized with value of zero
BOOST_CHECK_EQUAL(nTest1,0ULL);
nTest1 = std::numeric_limits<TForteUInt64>::min();
nTest2 = nTest1;
BOOST_CHECK_EQUAL(nTest1, std::numeric_limits<TForteUInt64>::min());
BOOST_CHECK_EQUAL(nTest2, std::numeric_limits<TForteUInt64>::min());
nTest1 = 123894391ULL;
nTest2 = nTest1;
BOOST_CHECK_EQUAL(nTest1, 123894391ULL);
BOOST_CHECK_EQUAL(nTest2, 123894391ULL);
nTest1 = std::numeric_limits<TForteUInt64>::max();
nTest2 = nTest1;
BOOST_CHECK_EQUAL(nTest1, std::numeric_limits<TForteUInt64>::max());
BOOST_CHECK_EQUAL(nTest2, std::numeric_limits<TForteUInt64>::max());
nTest2 = 2145729524ULL;
BOOST_CHECK_EQUAL(nTest1, std::numeric_limits<TForteUInt64>::max());
BOOST_CHECK_EQUAL(nTest2, 2145729524ULL);
++nTest2;
BOOST_CHECK_EQUAL(nTest2, 2145729525ULL);
}
BOOST_AUTO_TEST_CASE(Conversion_test)
{
CIEC_TIME_OF_DAY nTest;
char cBuffer[17];
char cBufferFail[2];
//check cast operator
nTest = 0;
BOOST_CHECK_EQUAL(nTest.operator TForteUInt64(), 0ULL);
nTest = std::numeric_limits<TForteUInt64>::min();
BOOST_CHECK_EQUAL(nTest.operator TForteUInt64(), std::numeric_limits<TForteUInt64>::min());
nTest = -21654147L;
BOOST_CHECK_EQUAL(nTest.operator TForteUInt64(), 18446744073687897469ULL);
nTest = std::numeric_limits<TForteUInt64>::max();
BOOST_CHECK_EQUAL(nTest.operator TForteUInt64(), std::numeric_limits<TForteUInt64>::max());
//check toString and fromString
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("15:36:55.36"), 11);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(nTest.toString(cBufferFail, 2), -1);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "15:36:55.360"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("15:36:55"), 8);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "15:36:55.000"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("15:36:55."), 9);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "15:36:55.000"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("15:36:55.0"), 10);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "15:36:55.000"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("15:36:55.1"), 10);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "15:36:55.100"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("15:36:55.10"), 11);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "15:36:55.100"), 0);
nTest = 0;
strcpy(cBuffer, "");
BOOST_CHECK_EQUAL(nTest.fromString("15:36:55.100"), 12);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "15:36:55.100"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("15:36:55.12"), 11);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "15:36:55.120"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("15:36:55.120"), 12);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "15:36:55.120"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("15:36:55.123"), 12);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "15:36:55.123"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("15:36:55.1234"), 13);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "15:36:55.123"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("TIME_OF_DAY#15:36:55.36"), 23);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(nTest.toString(cBufferFail, 2), -1);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "15:36:55.360"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("time_of_day#15:36:55.36"), 23);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(nTest.toString(cBufferFail, 2), -1);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "15:36:55.360"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("TOD#15:36:55.36"), 15);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(nTest.toString(cBufferFail, 2), -1);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "15:36:55.360"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("tod#15:36:55.36"), 15);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(nTest.toString(cBufferFail, 2), -1);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "15:36:55.360"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("8:6:5.6"), 7);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(nTest.toString(cBufferFail, 2), -1);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "08:06:05.600"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("TIME_OF_DAY#8:6:5.6"), 19);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(nTest.toString(cBufferFail, 2), -1);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "08:06:05.600"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("time_of_day#8:6:5.6"), 19);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(nTest.toString(cBufferFail, 2), -1);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "08:06:05.600"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("TOD#8:6:5.6"), 11);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(nTest.toString(cBufferFail, 2), -1);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "08:06:05.600"), 0);
strcpy(cBuffer, "");
nTest = 0;
BOOST_CHECK_EQUAL(nTest.fromString("tod#8:6:5.6"), 11);
BOOST_CHECK_EQUAL(nTest.toString(cBuffer, 17), 12);
BOOST_CHECK_EQUAL(nTest.toString(cBufferFail, 2), -1);
BOOST_CHECK_EQUAL(strcmp(cBuffer, "08:06:05.600"), 0);
strcpy(cBuffer, "");
}
BOOST_AUTO_TEST_SUITE_END()