diff --git a/src/App/ExpressionTokenizer.cpp b/src/App/ExpressionTokenizer.cpp index fde06ce208..57e5bea07c 100644 --- a/src/App/ExpressionTokenizer.cpp +++ b/src/App/ExpressionTokenizer.cpp @@ -124,8 +124,10 @@ QString ExpressionTokenizer::perform(const QString& prefix, int pos) if (token != '.' && token != '#' && token != ExpressionParser::IDENTIFIER && + token != ExpressionParser::INTEGER && token != ExpressionParser::STRING && - token != ExpressionParser::UNIT) + token != ExpressionParser::UNIT && + token != ExpressionParser::ONE) break; } ++i; diff --git a/tests/src/App/Expression.cpp b/tests/src/App/Expression.cpp index fb04c5b3cd..8c08e2050b 100644 --- a/tests/src/App/Expression.cpp +++ b/tests/src/App/Expression.cpp @@ -15,6 +15,15 @@ TEST(Expression, tokenize) EXPECT_EQ(App::ExpressionTokenizer().perform(QString::fromUtf8("0.00000 deg"), 11), QString::fromLatin1("deg")); } +TEST(Expression, tokenizeCompletion) +{ + EXPECT_EQ(App::ExpressionTokenizer().perform(QString::fromUtf8("My Cube"), 7), QString::fromUtf8("MyCube")); + EXPECT_EQ(App::ExpressionTokenizer().perform(QString::fromUtf8("My Cube0"), 8), QString::fromUtf8("MyCube0")); + EXPECT_EQ(App::ExpressionTokenizer().perform(QString::fromUtf8("My Cube 0"), 9), QString::fromUtf8("MyCube0")); + EXPECT_EQ(App::ExpressionTokenizer().perform(QString::fromUtf8("My Cube1"), 8), QString::fromUtf8("MyCube1")); + EXPECT_EQ(App::ExpressionTokenizer().perform(QString::fromUtf8("My Cube 1"), 9), QString::fromUtf8("MyCube1")); +} + TEST(Expression, tokenizeQuantity) { auto result = App::ExpressionParser::tokenize("0.00000 deg");