Skip to content

Commit

Permalink
Platform: fixed result of min_value()/signedCharMin() [skip ci]
Browse files Browse the repository at this point in the history
  • Loading branch information
firewave committed Sep 8, 2023
1 parent f02c911 commit d09b79d
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
2 changes: 1 addition & 1 deletion lib/platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ namespace cppcheck {
static long long min_value(int bit) {
if (bit >= 64)
return LLONG_MIN;
return -(1LL << (bit-1));
return -(1LL << (bit-1)) + 1LL;
}

static long long max_value(int bit) {
Expand Down
12 changes: 10 additions & 2 deletions test/testplatform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ class TestPlatform : public TestFixture {
TEST_CASE(empty_elements);
TEST_CASE(default_platform);
TEST_CASE(defines);
TEST_CASE(charMinMax);
}

static bool readPlatform(cppcheck::Platform& platform, const char* xmldata) {
Expand Down Expand Up @@ -402,15 +403,22 @@ class TestPlatform : public TestFixture {

void defines () {
cppcheck::Platform platform;
const std::string defs = "CHAR_BIT=8;SCHAR_MIN=-128;SCHAR_MAX=127;UCHAR_MAX=255;CHAR_MIN=0;CHAR_MAX=127;SHRT_MIN=-32768;SHRT_MAX=32767;USHRT_MAX=65535;INT_MIN=-2147483648;INT_MAX=2147483647;UINT_MAX=4294967295;LONG_MIN=-9223372036854775808;LONG_MAX=9223372036854775807;ULONG_MAX=9223372036854775807";
const std::string defs_c99 = "CHAR_BIT=8;SCHAR_MIN=-128;SCHAR_MAX=127;UCHAR_MAX=255;CHAR_MIN=0;CHAR_MAX=127;SHRT_MIN=-32768;SHRT_MAX=32767;USHRT_MAX=65535;INT_MIN=-2147483648;INT_MAX=2147483647;UINT_MAX=4294967295;LONG_MIN=-9223372036854775808;LONG_MAX=9223372036854775807;ULONG_MAX=9223372036854775807;LLONG_MIN=-9223372036854775808;LLONG_MAX=9223372036854775807;ULLONG_MAX=9223372036854775807";
const std::string defs = "CHAR_BIT=8;SCHAR_MIN=-127;SCHAR_MAX=127;UCHAR_MAX=255;CHAR_MIN=0;CHAR_MAX=127;SHRT_MIN=-32767;SHRT_MAX=32767;USHRT_MAX=65535;INT_MIN=-2147483647;INT_MAX=2147483647;UINT_MAX=4294967295;LONG_MIN=-9223372036854775808;LONG_MAX=9223372036854775807;ULONG_MAX=9223372036854775807";
const std::string defs_c99 = "CHAR_BIT=8;SCHAR_MIN=-127;SCHAR_MAX=127;UCHAR_MAX=255;CHAR_MIN=0;CHAR_MAX=127;SHRT_MIN=-32767;SHRT_MAX=32767;USHRT_MAX=65535;INT_MIN=-2147483647;INT_MAX=2147483647;UINT_MAX=4294967295;LONG_MIN=-9223372036854775808;LONG_MAX=9223372036854775807;ULONG_MAX=9223372036854775807;LLONG_MIN=-9223372036854775808;LLONG_MAX=9223372036854775807;ULLONG_MAX=9223372036854775807";
ASSERT_EQUALS(defs, platform.getLimitDefines(Standards::cstd_t::C89));
ASSERT_EQUALS(defs_c99, platform.getLimitDefines(Standards::cstd_t::C99));
ASSERT_EQUALS(defs_c99, platform.getLimitDefines(Standards::cstd_t::CLatest));
ASSERT_EQUALS(defs, platform.getLimitDefines(Standards::cppstd_t::CPP03));
ASSERT_EQUALS(defs_c99, platform.getLimitDefines(Standards::cppstd_t::CPP11));
ASSERT_EQUALS(defs_c99, platform.getLimitDefines(Standards::cppstd_t::CPPLatest));
}

void charMinMax() {
cppcheck::Platform platform;
ASSERT_EQUALS(255, platform.unsignedCharMax());
ASSERT_EQUALS(127, platform.signedCharMax());
ASSERT_EQUALS(-127, platform.signedCharMin());
}
};

REGISTER_TEST(TestPlatform)

0 comments on commit d09b79d

Please sign in to comment.