From 59aaa89599000f25fdd97582c356c8a495f9b1a0 Mon Sep 17 00:00:00 2001 From: Shylock Hg <33566796+Shylock-Hg@users.noreply.github.com> Date: Mon, 12 Oct 2020 09:58:55 +0800 Subject: [PATCH] Tests/add case for time index bound (#307) * Remove timezone field. * Fix the value to string. * Remove extra blank. * Add more. * Correct the typo. * Add test cases for index bound. * Correct the error. Co-authored-by: dutor <440396+dutor@users.noreply.github.com> --- src/optimizer/test/IndexBoundValueTest.cpp | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/src/optimizer/test/IndexBoundValueTest.cpp b/src/optimizer/test/IndexBoundValueTest.cpp index 810c502d..dad22ee3 100644 --- a/src/optimizer/test/IndexBoundValueTest.cpp +++ b/src/optimizer/test/IndexBoundValueTest.cpp @@ -189,6 +189,70 @@ TEST(IndexBoundValueTest, DateTest) { OptimizerUtils::boundValue(col, OP::LESS_THAN, Value(Date(2019, 1, 1)))); } +TEST(IndexBoundValueTest, TimeTest) { + meta::cpp2::ColumnDef col; + { + meta::cpp2::ColumnTypeDef typeDef; + typeDef.set_type(meta::cpp2::PropertyType::TIME); + col.set_type(std::move(typeDef)); + } + // TODO(shylock) us may limited to 999999 + Time maxT{24, 60, 60, std::numeric_limits<int32_t>::max()}; + + Time minT = Time(); + + EXPECT_EQ(maxT, OptimizerUtils::boundValue(col, OP::MAX, Value(maxT)).getTime()); + EXPECT_EQ(minT, OptimizerUtils::boundValue(col, OP::MIN, Value(maxT)).getTime()); + EXPECT_EQ(maxT, OptimizerUtils::boundValue(col, OP::GREATER_THAN, Value(maxT)).getTime()); + + { + Time actual, expect; + actual.microsec = std::numeric_limits<int32_t>::max(); + actual.sec = 60; + actual.minute = 60; + actual.hour = 22; + + expect.microsec = 1; + expect.sec = 1; + expect.minute = 1; + expect.hour = 23; + EXPECT_EQ(expect, + OptimizerUtils::boundValue(col, OP::GREATER_THAN, Value(actual)).getTime()); + } + { + Time actual, expect; + actual.microsec = std::numeric_limits<int32_t>::max(); + actual.sec = 34; + actual.minute = 60; + actual.hour = 24; + + expect.microsec = 1; + expect.sec = 35; + expect.minute = 60; + expect.hour = 24; + EXPECT_EQ(expect, + OptimizerUtils::boundValue(col, OP::GREATER_THAN, Value(actual)).getTime()); + } + { + Time expect = Time(); + EXPECT_EQ(expect, OptimizerUtils::boundValue(col, OP::LESS_THAN, Value(expect))); + } + { + Time actual, expect; + actual.microsec = std::numeric_limits<int32_t>::max(); + actual.sec = 34; + actual.minute = 60; + actual.hour = 24; + + expect.microsec = std::numeric_limits<int32_t>::max() - 1; + expect.sec = 34; + expect.minute = 60; + expect.hour = 24; + EXPECT_EQ(expect, + OptimizerUtils::boundValue(col, OP::LESS_THAN, Value(actual)).getTime()); + } +} + TEST(IndexBoundValueTest, DateTimeTest) { meta::cpp2::ColumnDef col; { -- GitLab