Added time parsing
This commit is contained in:
parent
654c1c0b94
commit
12f9ddbb95
3 changed files with 29 additions and 20 deletions
20
parsetime.yy
20
parsetime.yy
|
|
@ -95,7 +95,9 @@ input: date optspace ;
|
|||
|
||||
optspace: /* epsilon */ | TOK_SPACE ;
|
||||
|
||||
date: absdate {
|
||||
date:
|
||||
absdate opttime
|
||||
{
|
||||
if (timeval->tm_gmtoff != -1) {
|
||||
boost::posix_time::ptime::time_duration_type offset;
|
||||
offset = boost::posix_time::seconds(timeval->tm_gmtoff);
|
||||
|
|
@ -193,23 +195,31 @@ absdate:
|
|||
}
|
||||
;
|
||||
|
||||
opttime: /* epsilon */ |
|
||||
TOK_SPACE TOK_TWONUM ':' TOK_TWONUM ':' TOK_TWONUM
|
||||
{
|
||||
timeval->tm_hour = $2.ival;
|
||||
timeval->tm_min = $4.ival;
|
||||
timeval->tm_sec = $6.ival;
|
||||
};
|
||||
|
||||
isodate:
|
||||
year TOK_FOURNUM opttime
|
||||
year TOK_FOURNUM optisotime
|
||||
{
|
||||
timeval->tm_year = $1.ival - 1900;
|
||||
timeval->tm_mon = $2.ival / 100 - 1;
|
||||
timeval->tm_mday = $3.ival % 100;
|
||||
};
|
||||
|
||||
opttime: /* epsilon */ |
|
||||
'T' TOK_FOURNUM TOK_TWONUM optzone
|
||||
optisotime: /* epsilon */ |
|
||||
'T' TOK_FOURNUM TOK_TWONUM optisozone
|
||||
{
|
||||
timeval->tm_hour = $2.ival / 100;
|
||||
timeval->tm_min = $2.ival % 100;
|
||||
timeval->tm_sec = $3.ival;
|
||||
};
|
||||
|
||||
optzone: /* epsilon */ |
|
||||
optisozone: /* epsilon */ |
|
||||
'-' TOK_FOURNUM {
|
||||
timeval->tm_gmtoff = - (($2.ival / 100) * 3600 + ($2.ival % 100) * 60);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,19 +8,14 @@ CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(CommodityTestCase, "numerics");
|
|||
void CommodityTestCase::setUp() {}
|
||||
void CommodityTestCase::tearDown() {}
|
||||
|
||||
void CommodityTestCase::testConstructors()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CommodityTestCase::testPriceHistory()
|
||||
{
|
||||
ptime jan17_07 = boost::posix_time::time_from_string("2007/01/17 00:00:00");
|
||||
ptime feb27_07 = boost::posix_time::time_from_string("2007/02/27 18:00:00");
|
||||
ptime feb28_07 = boost::posix_time::time_from_string("2007/02/28 06:00:00");
|
||||
ptime feb28_07sbm = boost::posix_time::time_from_string("2007/02/28 11:59:59");
|
||||
ptime mar01_07 = boost::posix_time::time_from_string("2007/03/01 00:00:00");
|
||||
ptime apr15_07 = boost::posix_time::time_from_string("2007/04/15 13:00:00");
|
||||
ptime jan17_07 = parse_datetime("2007/01/17 00:00:00");
|
||||
ptime feb27_07 = parse_datetime("2007/02/27 18:00:00");
|
||||
ptime feb28_07 = parse_datetime("2007/02/28 06:00:00");
|
||||
ptime feb28_07sbm = parse_datetime("2007/02/28 11:59:59");
|
||||
ptime mar01_07 = parse_datetime("2007/03/01 00:00:00");
|
||||
ptime apr15_07 = parse_datetime("2007/04/15 13:00:00");
|
||||
|
||||
// jww (2007-04-17): tbd
|
||||
amount_t x1("100.10 AAPL");
|
||||
|
|
@ -29,9 +24,15 @@ void CommodityTestCase::testPriceHistory()
|
|||
// deal of their state depends on how they were seen to be used.
|
||||
commodity_t& aapl(x1.commodity());
|
||||
|
||||
aapl.add_price(now, amount_t("$10.20"));
|
||||
aapl.add_price(jan17_07, amount_t("$10.20"));
|
||||
aapl.add_price(feb27_07, amount_t("$13.40"));
|
||||
aapl.add_price(feb28_07, amount_t("$18.33"));
|
||||
aapl.add_price(feb28_07sbm, amount_t("$18.30"));
|
||||
aapl.add_price(mar01_07, amount_t("$19.50"));
|
||||
aapl.add_price(apr15_07, amount_t("$21.22"));
|
||||
|
||||
assertEqual(amount_t("$1021.02"), x1.value(now));
|
||||
assertEqual(amount_t("$1831.83"), x1.value(feb28_07sbm));
|
||||
assertEqual(amount_t("$2124.12"), x1.value(now));
|
||||
|
||||
assertValid(x1);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ class CommodityTestCase : public CPPUNIT_NS::TestCase
|
|||
{
|
||||
CPPUNIT_TEST_SUITE(CommodityTestCase);
|
||||
|
||||
CPPUNIT_TEST(testConstructors);
|
||||
CPPUNIT_TEST(testPriceHistory);
|
||||
CPPUNIT_TEST(testLots);
|
||||
CPPUNIT_TEST(testScalingBase);
|
||||
|
|
@ -22,7 +21,6 @@ public:
|
|||
virtual void setUp();
|
||||
virtual void tearDown();
|
||||
|
||||
void testConstructors();
|
||||
void testPriceHistory();
|
||||
void testLots();
|
||||
void testScalingBase();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue