From b43c2de63ae06547fea737d3409cb1fe11fc7b32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Wed, 11 Feb 2015 06:29:33 +0100 Subject: [PATCH] refactor cfg testing in TestClass --- test/testclass.cpp | 52 +++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/test/testclass.cpp b/test/testclass.cpp index e728ae43c..c1ec6f245 100644 --- a/test/testclass.cpp +++ b/test/testclass.cpp @@ -22,6 +22,7 @@ #include "checkclass.h" #include "testsuite.h" #include +#include extern std::ostringstream errout; @@ -2072,17 +2073,16 @@ private: ASSERT_EQUALS("[test.cpp:3]: (error) Class 'Base' which is inherited by class 'Derived' does not have a virtual destructor.\n", errout.str()); } - void checkNoMemset(const char code[], bool load_std_cfg = false, bool portability = false) { - // Clear the error log - errout.str(""); - + void checkNoMemset(const char code[]) { Settings settings; settings.addEnabled("warning"); - if (portability) - settings.addEnabled("portability"); - if (load_std_cfg) { - LOAD_LIB_2(settings.library, "std.cfg"); - } + settings.addEnabled("portability"); + checkNoMemset(code,settings); + } + + void checkNoMemset(const char code[], const Settings &settings) { + // Clear the error log + errout.str(""); // Tokenize.. Tokenizer tokenizer(&settings, this); @@ -2512,6 +2512,17 @@ private: "[test.cpp:11]: (error) Using 'memset' on struct that contains a 'std::string'.\n" "[test.cpp:12]: (error) Using 'memset' on struct that contains a 'std::string'.\n" "[test.cpp:13]: (error) Using 'memset' on struct that contains a 'std::string'.\n", errout.str()); + } + + void memsetOnStdPodType() { // Ticket #5901 + Settings settings; + const char xmldata[] = "\n" + "\n" + " \n" + ""; + tinyxml2::XMLDocument doc; + doc.Parse(xmldata, sizeof(xmldata)); + settings.library.load(doc); checkNoMemset("class A {\n" " std::array ints;\n" @@ -2519,11 +2530,9 @@ private: "void f() {\n" " A a;\n" " memset(&a, 0, sizeof(A));\n" - "}", true); + "}"); ASSERT_EQUALS("", errout.str()); // std::array is POD (#5481) - } - void memsetOnStdPodType() { // Ticket #5901 checkNoMemset("struct st {\n" " std::uint8_t a;\n" " std::uint8_t b;\n" @@ -2533,7 +2542,7 @@ private: "void f() {\n" " st s;\n" " std::memset(&s, 0, sizeof(st));\n" - "}", true); + "}", settings); ASSERT_EQUALS("", errout.str()); } @@ -2544,7 +2553,7 @@ private: "void f() {\n" " A a;\n" " memset(&a, 0, sizeof(A));\n" - "}", false, true); + "}"); ASSERT_EQUALS("[test.cpp:6]: (portability) Using memset() on struct which contains a floating point number.\n", errout.str()); checkNoMemset("struct A {\n" @@ -2553,7 +2562,7 @@ private: "void f() {\n" " A a;\n" " memset(&a, 0, sizeof(A));\n" - "}", false, true); + "}"); ASSERT_EQUALS("[test.cpp:6]: (portability) Using memset() on struct which contains a floating point number.\n", errout.str()); checkNoMemset("struct A {\n" @@ -2562,7 +2571,7 @@ private: "void f(const A& b) {\n" " A a;\n" " memcpy(&a, &b, sizeof(A));\n" - "}", false, true); + "}"); ASSERT_EQUALS("", errout.str()); checkNoMemset("struct A {\n" @@ -2571,16 +2580,7 @@ private: "void f() {\n" " A a;\n" " memset(&a, 0, sizeof(A));\n" - "}", false, true); - ASSERT_EQUALS("", errout.str()); - - checkNoMemset("struct A {\n" - " float f;\n" - "};\n" - "void f() {\n" - " A a;\n" - " memset(&a, 0, sizeof(A));\n" - "}", false, false); + "}"); ASSERT_EQUALS("", errout.str()); }