Skip to content

Commit 078a79e

Browse files
committed
add tests
1 parent 8c14fc7 commit 078a79e

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

@@ -1315,6 +1317,71 @@ class TestSymbolDatabase : public TestFixture {
13151317
ASSERT(check->valueType()->smartPointerTypeToken);
13161318
}
13171319

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

0 commit comments

Comments
 (0)