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
This commit is contained in:
farley
2024-04-22 23:55:42 +08:00
committed by GitHub
parent 0be9e68fcd
commit 789bbeedf6
2 changed files with 12 additions and 1 deletions

View File

@@ -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;

View File

@@ -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");