From 789bbeedf688e5cfe3a3668901720d77db66af70 Mon Sep 17 00:00:00 2001 From: farley <162782461+farleyrunkel@users.noreply.github.com> Date: Mon, 22 Apr 2024 23:55:42 +0800 Subject: [PATCH] Core: Fix searching model tree does not work for numbers #12723 (#13377) * Fix problem #12723: Searching model tree does not work for numbers - Modify ExpressionTokenizer::perform - Add tests tokenizeCompletion --- src/App/ExpressionTokenizer.cpp | 4 +++- tests/src/App/Expression.cpp | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) 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");