Fix bugs in MatchReal (StrippedQuery)
Reviewers: buda Reviewed By: buda Subscribers: pullbot Differential Revision: https://phabricator.memgraph.io/D546
This commit is contained in:
parent
5c810b6579
commit
26144ee8fd
@ -343,15 +343,17 @@ int StrippedQuery::MatchHexadecimalInt(int start) const {
|
||||
}
|
||||
|
||||
int StrippedQuery::MatchReal(int start) const {
|
||||
enum class State { BEFORE_DOT, DOT, AFTER_DOT, E, E_MINUS, AFTER_E };
|
||||
State state = State::BEFORE_DOT;
|
||||
enum class State { START, BEFORE_DOT, DOT, AFTER_DOT, E, E_MINUS, AFTER_E };
|
||||
State state = State::START;
|
||||
auto i = start;
|
||||
while (i < static_cast<int>(original_.size())) {
|
||||
if (original_[i] == '.') {
|
||||
if (state != State::BEFORE_DOT) break;
|
||||
if (state != State::BEFORE_DOT && state != State::START) break;
|
||||
state = State::DOT;
|
||||
} else if ('0' <= original_[i] && original_[i] <= '9') {
|
||||
if (state == State::DOT) {
|
||||
if (state == State::START) {
|
||||
state = State::BEFORE_DOT;
|
||||
} else if (state == State::DOT) {
|
||||
state = State::AFTER_DOT;
|
||||
} else if (state == State::E || state == State::E_MINUS) {
|
||||
state = State::AFTER_E;
|
||||
|
@ -97,6 +97,12 @@ TEST(QueryStripper, ExponentDecimal4) {
|
||||
EXPECT_EQ(stripped.query(), "return " + kStrippedDoubleToken);
|
||||
}
|
||||
|
||||
TEST(QueryStripper, SymbolicNameStartingWithE) {
|
||||
StrippedQuery stripped("RETURN e1");
|
||||
EXPECT_EQ(stripped.literals().size(), 0);
|
||||
EXPECT_EQ(stripped.query(), "return e1");
|
||||
}
|
||||
|
||||
TEST(QueryStripper, StringLiteral) {
|
||||
StrippedQuery stripped("RETURN 'something'");
|
||||
EXPECT_EQ(stripped.literals().size(), 1);
|
||||
|
Loading…
Reference in New Issue
Block a user