Skip to content

Commit 381cfad

Browse files
committed
add tests
1 parent 376b31e commit 381cfad

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

test/testsymboldatabase.cpp

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,8 @@ class TestSymbolDatabase : public TestFixture {
220220
TEST_CASE(VariableValueType4); // smart pointer type
221221
TEST_CASE(VariableValueType5); // smart pointer type
222222
TEST_CASE(VariableValueType6); // smart pointer type
223+
TEST_CASE(VariableValueType7);
224+
TEST_CASE(VariableValueType8);
223225
TEST_CASE(VariableValueTypeReferences);
224226
TEST_CASE(VariableValueTypeTemplate);
225227

@@ -1316,6 +1318,71 @@ class TestSymbolDatabase : public TestFixture {
13161318
ASSERT(check->valueType()->smartPointerTypeToken);
13171319
}
13181320

1321+
void VariableValueType7() {
1322+
GET_SYMBOL_DB("void f() {\n"
1323+
" auto x0 = 0;\n"
1324+
" auto &x1 = x0;\n"
1325+
" auto &x2 {x0};\n"
1326+
" auto &&x3 = 0;\n"
1327+
" auto &&x4 {0};\n"
1328+
"}\n");
1329+
1330+
const Token* x1 = Token::findsimplematch(tokenizer.tokens(), "x1");
1331+
const Token* x2 = Token::findsimplematch(tokenizer.tokens(), "x2");
1332+
const Token* x3 = Token::findsimplematch(tokenizer.tokens(), "x3");
1333+
const Token* x4 = Token::findsimplematch(tokenizer.tokens(), "x4");
1334+
1335+
ASSERT(x1);
1336+
ASSERT(x2);
1337+
ASSERT(x3);
1338+
ASSERT(x4);
1339+
1340+
ASSERT_EQUALS_ENUM(ValueType::INT, x1->valueType()->type);
1341+
ASSERT_EQUALS_ENUM(ValueType::INT, x2->valueType()->type);
1342+
ASSERT_EQUALS_ENUM(ValueType::INT, x3->valueType()->type);
1343+
ASSERT_EQUALS_ENUM(ValueType::INT, x4->valueType()->type);
1344+
1345+
ASSERT_EQUALS_ENUM(Reference::LValue, x1->valueType()->reference);
1346+
ASSERT_EQUALS_ENUM(Reference::LValue, x2->valueType()->reference);
1347+
ASSERT_EQUALS_ENUM(Reference::RValue, x3->valueType()->reference);
1348+
ASSERT_EQUALS_ENUM(Reference::RValue, x4->valueType()->reference);
1349+
}
1350+
1351+
void VariableValueType8() {
1352+
GET_SYMBOL_DB("void f() {\n"
1353+
" char buf[128];\n"
1354+
" const auto *const x0 {buf};\n"
1355+
" auto *const x1 {buf};\n"
1356+
" const auto *x2 {buf};\n"
1357+
" auto x3 {buf};\n"
1358+
"}\n");
1359+
1360+
const Token* x0 = Token::findsimplematch(tokenizer.tokens(), "x0");
1361+
const Token* x1 = Token::findsimplematch(tokenizer.tokens(), "x1");
1362+
const Token* x2 = Token::findsimplematch(tokenizer.tokens(), "x2");
1363+
const Token* x3 = Token::findsimplematch(tokenizer.tokens(), "x3");
1364+
1365+
ASSERT(x0);
1366+
ASSERT(x1);
1367+
ASSERT(x2);
1368+
ASSERT(x3);
1369+
1370+
ASSERT_EQUALS_ENUM(ValueType::CHAR, x0->valueType()->type);
1371+
ASSERT_EQUALS_ENUM(ValueType::CHAR, x1->valueType()->type);
1372+
ASSERT_EQUALS_ENUM(ValueType::CHAR, x2->valueType()->type);
1373+
ASSERT_EQUALS_ENUM(ValueType::CHAR, x3->valueType()->type);
1374+
1375+
ASSERT_EQUALS(3, x0->valueType()->constness);
1376+
ASSERT_EQUALS(1, x1->valueType()->constness);
1377+
ASSERT_EQUALS(2, x2->valueType()->constness);
1378+
ASSERT_EQUALS(0, x3->valueType()->constness);
1379+
1380+
ASSERT_EQUALS(1, x0->valueType()->pointer);
1381+
ASSERT_EQUALS(1, x1->valueType()->pointer);
1382+
ASSERT_EQUALS(1, x2->valueType()->pointer);
1383+
ASSERT_EQUALS(1, x3->valueType()->pointer);
1384+
}
1385+
13191386
void VariableValueTypeReferences() {
13201387
{
13211388
GET_SYMBOL_DB("void foo(int x) {}\n");

0 commit comments

Comments
 (0)