Skip to content

Commit ff2b855

Browse files
committed
add valueflow tests
1 parent cd85f60 commit ff2b855

1 file changed

Lines changed: 45 additions & 0 deletions

File tree

‎test/testvalueflow.cpp‎

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9434,6 +9434,51 @@ class TestValueFlow : public TestFixture {
94349434
" int a[3];\n"
94359435
"};\n";
94369436
ASSERT(tokenValues(code, "* p )").empty());
9437+
9438+
code = "int f(int i) {\n"
9439+
" int j = i;\n"
9440+
" i++;\n"
9441+
" int x = i - 1;\n"
9442+
" return x;\n"
9443+
"}\n";
9444+
ASSERT_EQUALS(true, testValueOfXKnown(code, 5U, "j", 0));
9445+
9446+
code = "int f(int i) {\n"
9447+
" int j = i;\n"
9448+
" i++;\n"
9449+
" int x = i + 2;\n"
9450+
" return x;\n"
9451+
"}\n";
9452+
ASSERT_EQUALS(true, testValueOfXKnown(code, 5U, "j", 3));
9453+
9454+
code = "int f(int i) {\n"
9455+
" int j = i;\n"
9456+
" i++;\n"
9457+
" int x = 2 + i;\n"
9458+
" return x;\n"
9459+
"}\n";
9460+
ASSERT_EQUALS(true, testValueOfXKnown(code, 5U, "j", 3));
9461+
9462+
code = "int *f(int *q) {\n"
9463+
" int *p = q;\n"
9464+
" p += 2;\n"
9465+
" int *x = p - 2;\n"
9466+
" return x;\n"
9467+
"}\n";
9468+
ASSERT_EQUALS(true, testValueOfXKnown(code, 5U, "q", 0));
9469+
9470+
if (sizeof(MathLib::bigint) == 8) {
9471+
code = "long long f(long long i) {\n"
9472+
" long long j = i;\n"
9473+
" i++;\n"
9474+
" long long a = i + 0x7fffffffffffffffLL;\n"
9475+
" long long x = i - 2;\n"
9476+
" return a + x;\n"
9477+
"}\n";
9478+
ASSERT_EQUALS(0U, tokenValues(code, "+ 0x7fffffffffffffffLL").size());
9479+
ASSERT_EQUALS(1U, tokenValues(code, "- 2").size());
9480+
ASSERT_EQUALS(true, testValueOfXKnown(code, 6U, "j", -1));
9481+
}
94379482
}
94389483

94399484
void valueFlowSymbolicIdentity()

0 commit comments

Comments
 (0)