Skip to content

Commit

Permalink
fix datetime format
Browse files Browse the repository at this point in the history
  • Loading branch information
caton-hpg committed Aug 17, 2022
1 parent 0f75120 commit 43c988a
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 55 deletions.
25 changes: 1 addition & 24 deletions src/common/time/parser/datetime_parser.yy
Original file line number Diff line number Diff line change
Expand Up @@ -108,22 +108,6 @@ date
throw DatetimeParser::syntax_error(@1, result.toString());
}
}
| INTEGER NEGATIVE INTEGER {
$$ = new nebula::Date($1, $3, 1);
auto result = nebula::time::TimeUtils::validateDate(*$$);
if (!result.ok()) {
delete $$;
throw DatetimeParser::syntax_error(@1, result.toString());
}
}
| INTEGER {
$$ = new nebula::Date($1, 1, 1);
auto result = nebula::time::TimeUtils::validateDate(*$$);
if (!result.ok()) {
delete $$;
throw DatetimeParser::syntax_error(@1, result.toString());
}
}
;

time
Expand Down Expand Up @@ -153,14 +137,6 @@ time
throw DatetimeParser::syntax_error(@1, result.toString());
}
}
| INTEGER {
$$ = new nebula::Time($1, 0, 0, 0);
auto result = nebula::time::TimeUtils::validateTime(*$$);
if (!result.ok()) {
delete $$;
throw DatetimeParser::syntax_error(@1, result.toString());
}
}
;

opt_time_zone
Expand Down Expand Up @@ -258,3 +234,4 @@ static int yylex(nebula::time::DatetimeParser::semantic_type* yylval,
return token;
}


54 changes: 23 additions & 31 deletions src/common/time/parser/test/DateTimeParserTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,60 +18,64 @@ TEST(DatetimeReader, DateTime) {
ASSERT_TRUE(result.ok()) << result.status();
EXPECT_EQ(nebula::DateTime(2019, 1, 3, 22, 22, 3, 233300), result.value());
}

// with offset
{
auto parser = time::DatetimeReader();
auto result = parser.readDatetime("2019-01-03T22:22:3.2333+02:30");
ASSERT_TRUE(result.ok()) << result.status();
EXPECT_EQ(nebula::DateTime(2019, 1, 3, 19, 52, 3, 233300), result.value());
}

// lack day
{
auto parser = time::DatetimeReader();
auto result = parser.readDatetime("2019-01T22:22:3.2333");
ASSERT_TRUE(result.ok()) << result.status();
EXPECT_EQ(nebula::DateTime(2019, 1, 1, 22, 22, 3, 233300), result.value());
ASSERT_FALSE(result.ok()) << result.status();
}

// lack month
{
auto parser = time::DatetimeReader();
auto result = parser.readDatetime("2019T22:22:3.2333");
ASSERT_TRUE(result.ok()) << result.status();
EXPECT_EQ(nebula::DateTime(2019, 1, 1, 22, 22, 3, 233300), result.value());
ASSERT_FALSE(result.ok()) << result.status();
}
{
auto parser = time::DatetimeReader();
auto result = parser.readDatetime("2019T22:22");
ASSERT_TRUE(result.ok()) << result.status();
EXPECT_EQ(nebula::DateTime(2019, 1, 1, 22, 22, 0, 0), result.value());
ASSERT_FALSE(result.ok()) << result.status();
}

// lack month and day
{
auto parser = time::DatetimeReader();
auto result = parser.readDatetime("2019T22");
ASSERT_TRUE(result.ok()) << result.status();
EXPECT_EQ(nebula::DateTime(2019, 1, 1, 22, 0, 0, 0), result.value());
auto result = parser.readDatetime("2019T22:22");
ASSERT_FALSE(result.ok()) << result.status();
}

// lack us
{
auto parser = time::DatetimeReader();
auto result = parser.readDatetime("2019-1T22:22:3");
auto result = parser.readDatetime("2019-1-1T22:22:3");
ASSERT_TRUE(result.ok()) << result.status();
EXPECT_EQ(nebula::DateTime(2019, 1, 1, 22, 22, 3, 0), result.value());
}

// lack second
{
auto parser = time::DatetimeReader();
auto result = parser.readDatetime("2019-1T22:22");
auto result = parser.readDatetime("2019-1-1T22:22");
ASSERT_TRUE(result.ok()) << result.status();
EXPECT_EQ(nebula::DateTime(2019, 1, 1, 22, 22, 0, 0), result.value());
}

// lack minute
{
auto parser = time::DatetimeReader();
auto result = parser.readDatetime("2019-1T22");
ASSERT_TRUE(result.ok()) << result.status();
EXPECT_EQ(nebula::DateTime(2019, 1, 1, 22, 0, 0, 0), result.value());
auto result = parser.readDatetime("2019-1-1T22");
ASSERT_FALSE(result.ok()) << result.status();
}

// datetime just include date
{
auto parser = time::DatetimeReader();
Expand All @@ -82,14 +86,12 @@ TEST(DatetimeReader, DateTime) {
{
auto parser = time::DatetimeReader();
auto result = parser.readDatetime("2019-1");
ASSERT_TRUE(result.ok()) << result.status();
EXPECT_EQ(nebula::DateTime(2019, 1, 1, 0, 0, 0, 0), result.value());
ASSERT_FALSE(result.ok()) << result.status();
}
{
auto parser = time::DatetimeReader();
auto result = parser.readDatetime("2019");
ASSERT_TRUE(result.ok()) << result.status();
EXPECT_EQ(nebula::DateTime(2019, 1, 1, 0, 0, 0, 0), result.value());
ASSERT_FALSE(result.ok()) << result.status();
}
}

Expand Down Expand Up @@ -163,22 +165,13 @@ TEST(DatetimeReader, Date) {
{
auto parser = time::DatetimeReader();
auto result = parser.readDate("2019-01");
ASSERT_TRUE(result.ok()) << result.status();
EXPECT_EQ(nebula::Date(2019, 1, 1), result.value());
ASSERT_FALSE(result.ok()) << result.status();
}
// lack month and day
{
auto parser = time::DatetimeReader();
auto result = parser.readDate("2019");
ASSERT_TRUE(result.ok()) << result.status();
EXPECT_EQ(nebula::Date(2019, 1, 1), result.value());
}
// lack month
{
auto parser = time::DatetimeReader();
auto result = parser.readDate("2019");
ASSERT_TRUE(result.ok()) << result.status();
EXPECT_EQ(nebula::Date(2019, 1, 1), result.value());
ASSERT_FALSE(result.ok()) << result.status();
}
}

Expand Down Expand Up @@ -268,8 +261,7 @@ TEST(DatetimeReader, Time) {
{
auto parser = time::DatetimeReader();
auto result = parser.readTime("22");
ASSERT_TRUE(result.ok()) << result.status();
EXPECT_EQ(nebula::Time(22, 0, 0, 0), result.value());
ASSERT_FALSE(result.ok()) << result.status();
}
}

Expand Down

0 comments on commit 43c988a

Please sign in to comment.