MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / valueFlowNumber

Method valueFlowNumber

test/testvalueflow.cpp:571–601  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

569 }
570
571 void valueFlowNumber() {
572 ASSERT_EQUALS(123, valueOfTok("x=123;", "123").intvalue);
573 ASSERT_EQUALS_DOUBLE(192.0, valueOfTok("x=0x0.3p10;", "0x0.3p10").floatValue, 1e-5); // 3 * 16^-1 * 2^10 = 192
574 ASSERT(std::fabs(valueOfTok("x=0.5;", "0.5").floatValue - 0.5) < 0.1);
575 ASSERT_EQUALS(10, valueOfTok("enum {A=10,B=15}; x=A+0;", "+").intvalue);
576 ASSERT_EQUALS(0, valueOfTok("x=false;", "false").intvalue);
577 ASSERT_EQUALS(1, valueOfTok("x=true;", "true").intvalue);
578 ASSERT_EQUALS(0, valueOfTok("x(NULL);", "NULL").intvalue);
579 ASSERT_EQUALS(static_cast<int>('a'), valueOfTok("x='a';", "'a'").intvalue);
580 ASSERT_EQUALS(static_cast<int>('\n'), valueOfTok("x='\\n';", "'\\n'").intvalue);
581 TODO_ASSERT_EQUALS(0xFFFFFFFF00000000, 0, valueOfTok("x=0xFFFFFFFF00000000;", "0xFFFFFFFF00000000").intvalue); // #7701
582 ASSERT_EQUALS_DOUBLE(16, valueOfTok("x=(double)16;", "(").floatValue, 1e-5);
583 ASSERT_EQUALS_DOUBLE(0.0625, valueOfTok("x=1/(double)16;", "/").floatValue, 1e-5);
584
585 const Settings settingsC23 = settingsBuilder().c(Standards::C23).build();
586 ASSERT_EQUALS(1, valueOfTok("x=true;", "true", &settingsC23, false).intvalue);
587 ASSERT_EQUALS(0, valueOfTok("x=false;", "false", &settingsC23, false).intvalue);
588
589 const Settings settingsC17 = settingsBuilder().c(Standards::C17).build();
590 ASSERT(!valueOfTok("x=true;", "true", &settingsC17, false).isKnown());
591 ASSERT(!valueOfTok("x=false;", "false", &settingsC17, false).isKnown());
592
593 // scope
594 {
595 const char code[] = "namespace N { enum E {e0,e1}; }\n"
596 "void foo() { x = N::e1; }";
597 ASSERT_EQUALS(1, valueOfTok(code, "::").intvalue);
598 }
599
600 ASSERT_EQUALS(63, valueOfTok("x = 3 * uint32_t{21};", "*").intvalue);
601 }
602
603 void valueFlowString() {
604 const char *code;

Callers

nothing calls this directly

Calls 2

buildMethod · 0.80
isKnownMethod · 0.80

Tested by

no test coverage detected