Makes all samples compile with -Wall -Wshadow -Werror.
This commit is contained in:
parent
70eceaf8e7
commit
fe78760959
@ -36,12 +36,12 @@ find_package(Threads)
|
|||||||
# Defines the compiler/linker flags used to build gtest. You can
|
# Defines the compiler/linker flags used to build gtest. You can
|
||||||
# tweak these definitions to suit your need.
|
# tweak these definitions to suit your need.
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
set(cxx_base "${CMAKE_CXX_FLAGS} -GS -W4 -WX -wd4275 -nologo -J
|
set(cxx_base "${CMAKE_CXX_FLAGS} -GS -W4 -WX -wd4275 -nologo -J -Zi
|
||||||
-Zi -D_UNICODE -DUNICODE -DWIN32 -D_WIN32 -DSTRICT
|
-D_UNICODE -DUNICODE -DWIN32 -D_WIN32 -DSTRICT
|
||||||
-DWIN32_LEAN_AND_MEAN")
|
-DWIN32_LEAN_AND_MEAN")
|
||||||
set(cxx_default "${cxx_base} -EHsc -D_HAS_EXCEPTIONS=1")
|
set(cxx_default "${cxx_base} -EHsc -D_HAS_EXCEPTIONS=1")
|
||||||
else()
|
else()
|
||||||
set(cxx_base "${CMAKE_CXX_FLAGS}")
|
set(cxx_base "${CMAKE_CXX_FLAGS} -Wall -Werror -Wshadow")
|
||||||
|
|
||||||
if (CMAKE_USE_PTHREADS_INIT) # The pthreads library is available.
|
if (CMAKE_USE_PTHREADS_INIT) # The pthreads library is available.
|
||||||
set(cxx_base "${cxx_base} -DGTEST_HAS_PTHREAD=1")
|
set(cxx_base "${cxx_base} -DGTEST_HAS_PTHREAD=1")
|
||||||
|
@ -36,21 +36,21 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
// Clones a 0-terminated C string, allocating memory using new.
|
// Clones a 0-terminated C string, allocating memory using new.
|
||||||
const char * MyString::CloneCString(const char * c_string) {
|
const char* MyString::CloneCString(const char* a_c_string) {
|
||||||
if (c_string == NULL) return NULL;
|
if (a_c_string == NULL) return NULL;
|
||||||
|
|
||||||
const size_t len = strlen(c_string);
|
const size_t len = strlen(a_c_string);
|
||||||
char * const clone = new char[ len + 1 ];
|
char* const clone = new char[ len + 1 ];
|
||||||
memcpy(clone, c_string, len + 1);
|
memcpy(clone, a_c_string, len + 1);
|
||||||
|
|
||||||
return clone;
|
return clone;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sets the 0-terminated C string this MyString object
|
// Sets the 0-terminated C string this MyString object
|
||||||
// represents.
|
// represents.
|
||||||
void MyString::Set(const char * c_string) {
|
void MyString::Set(const char* a_c_string) {
|
||||||
// Makes sure this works when c_string == c_string_
|
// Makes sure this works when c_string == c_string_
|
||||||
const char * const temp = MyString::CloneCString(c_string);
|
const char* const temp = MyString::CloneCString(a_c_string);
|
||||||
delete[] c_string_;
|
delete[] c_string_;
|
||||||
c_string_ = temp;
|
c_string_ = temp;
|
||||||
}
|
}
|
||||||
|
@ -40,13 +40,13 @@
|
|||||||
// A simple string class.
|
// A simple string class.
|
||||||
class MyString {
|
class MyString {
|
||||||
private:
|
private:
|
||||||
const char * c_string_;
|
const char* c_string_;
|
||||||
const MyString& operator=(const MyString& rhs);
|
const MyString& operator=(const MyString& rhs);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Clones a 0-terminated C string, allocating memory using new.
|
// Clones a 0-terminated C string, allocating memory using new.
|
||||||
static const char * CloneCString(const char * c_string);
|
static const char* CloneCString(const char* a_c_string);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
@ -56,8 +56,8 @@ class MyString {
|
|||||||
MyString() : c_string_(NULL) {}
|
MyString() : c_string_(NULL) {}
|
||||||
|
|
||||||
// Constructs a MyString by cloning a 0-terminated C string.
|
// Constructs a MyString by cloning a 0-terminated C string.
|
||||||
explicit MyString(const char * c_string) : c_string_(NULL) {
|
explicit MyString(const char* a_c_string) : c_string_(NULL) {
|
||||||
Set(c_string);
|
Set(a_c_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy c'tor
|
// Copy c'tor
|
||||||
@ -72,14 +72,14 @@ class MyString {
|
|||||||
~MyString() { delete[] c_string_; }
|
~MyString() { delete[] c_string_; }
|
||||||
|
|
||||||
// Gets the 0-terminated C string this MyString object represents.
|
// Gets the 0-terminated C string this MyString object represents.
|
||||||
const char * c_string() const { return c_string_; }
|
const char* c_string() const { return c_string_; }
|
||||||
|
|
||||||
size_t Length() const {
|
size_t Length() const {
|
||||||
return c_string_ == NULL ? 0 : strlen(c_string_);
|
return c_string_ == NULL ? 0 : strlen(c_string_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sets the 0-terminated C string this MyString object represents.
|
// Sets the 0-terminated C string this MyString object represents.
|
||||||
void Set(const char * c_string);
|
void Set(const char* c_string);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ TEST(MyString, DefaultConstructor) {
|
|||||||
// </TechnicalDetails>
|
// </TechnicalDetails>
|
||||||
EXPECT_STREQ(NULL, s.c_string());
|
EXPECT_STREQ(NULL, s.c_string());
|
||||||
|
|
||||||
EXPECT_EQ(0, s.Length());
|
EXPECT_EQ(0u, s.Length());
|
||||||
}
|
}
|
||||||
|
|
||||||
const char kHelloString[] = "Hello, world!";
|
const char kHelloString[] = "Hello, world!";
|
||||||
|
@ -51,23 +51,23 @@ class QueueNode {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// Gets the element in this node.
|
// Gets the element in this node.
|
||||||
const E & element() const { return element_; }
|
const E& element() const { return element_; }
|
||||||
|
|
||||||
// Gets the next node in the queue.
|
// Gets the next node in the queue.
|
||||||
QueueNode * next() { return next_; }
|
QueueNode* next() { return next_; }
|
||||||
const QueueNode * next() const { return next_; }
|
const QueueNode* next() const { return next_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Creates a node with a given element value. The next pointer is
|
// Creates a node with a given element value. The next pointer is
|
||||||
// set to NULL.
|
// set to NULL.
|
||||||
QueueNode(const E & element) : element_(element), next_(NULL) {}
|
QueueNode(const E& an_element) : element_(an_element), next_(NULL) {}
|
||||||
|
|
||||||
// We disable the default assignment operator and copy c'tor.
|
// We disable the default assignment operator and copy c'tor.
|
||||||
const QueueNode & operator = (const QueueNode &);
|
const QueueNode& operator = (const QueueNode&);
|
||||||
QueueNode(const QueueNode &);
|
QueueNode(const QueueNode&);
|
||||||
|
|
||||||
E element_;
|
E element_;
|
||||||
QueueNode * next_;
|
QueueNode* next_;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename E> // E is the element type.
|
template <typename E> // E is the element type.
|
||||||
@ -84,8 +84,8 @@ public:
|
|||||||
void Clear() {
|
void Clear() {
|
||||||
if (size_ > 0) {
|
if (size_ > 0) {
|
||||||
// 1. Deletes every node.
|
// 1. Deletes every node.
|
||||||
QueueNode<E> * node = head_;
|
QueueNode<E>* node = head_;
|
||||||
QueueNode<E> * next = node->next();
|
QueueNode<E>* next = node->next();
|
||||||
for (; ;) {
|
for (; ;) {
|
||||||
delete node;
|
delete node;
|
||||||
node = next;
|
node = next;
|
||||||
@ -103,19 +103,19 @@ public:
|
|||||||
size_t Size() const { return size_; }
|
size_t Size() const { return size_; }
|
||||||
|
|
||||||
// Gets the first element of the queue, or NULL if the queue is empty.
|
// Gets the first element of the queue, or NULL if the queue is empty.
|
||||||
QueueNode<E> * Head() { return head_; }
|
QueueNode<E>* Head() { return head_; }
|
||||||
const QueueNode<E> * Head() const { return head_; }
|
const QueueNode<E>* Head() const { return head_; }
|
||||||
|
|
||||||
// Gets the last element of the queue, or NULL if the queue is empty.
|
// Gets the last element of the queue, or NULL if the queue is empty.
|
||||||
QueueNode<E> * Last() { return last_; }
|
QueueNode<E>* Last() { return last_; }
|
||||||
const QueueNode<E> * Last() const { return last_; }
|
const QueueNode<E>* Last() const { return last_; }
|
||||||
|
|
||||||
// Adds an element to the end of the queue. A copy of the element is
|
// Adds an element to the end of the queue. A copy of the element is
|
||||||
// created using the copy constructor, and then stored in the queue.
|
// created using the copy constructor, and then stored in the queue.
|
||||||
// Changes made to the element in the queue doesn't affect the source
|
// Changes made to the element in the queue doesn't affect the source
|
||||||
// object, and vice versa.
|
// object, and vice versa.
|
||||||
void Enqueue(const E & element) {
|
void Enqueue(const E& element) {
|
||||||
QueueNode<E> * new_node = new QueueNode<E>(element);
|
QueueNode<E>* new_node = new QueueNode<E>(element);
|
||||||
|
|
||||||
if (size_ == 0) {
|
if (size_ == 0) {
|
||||||
head_ = last_ = new_node;
|
head_ = last_ = new_node;
|
||||||
@ -129,19 +129,19 @@ public:
|
|||||||
|
|
||||||
// Removes the head of the queue and returns it. Returns NULL if
|
// Removes the head of the queue and returns it. Returns NULL if
|
||||||
// the queue is empty.
|
// the queue is empty.
|
||||||
E * Dequeue() {
|
E* Dequeue() {
|
||||||
if (size_ == 0) {
|
if (size_ == 0) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QueueNode<E> * const old_head = head_;
|
const QueueNode<E>* const old_head = head_;
|
||||||
head_ = head_->next_;
|
head_ = head_->next_;
|
||||||
size_--;
|
size_--;
|
||||||
if (size_ == 0) {
|
if (size_ == 0) {
|
||||||
last_ = NULL;
|
last_ = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
E * element = new E(old_head->element());
|
E* element = new E(old_head->element());
|
||||||
delete old_head;
|
delete old_head;
|
||||||
|
|
||||||
return element;
|
return element;
|
||||||
@ -151,9 +151,9 @@ public:
|
|||||||
// returns the result in a new queue. The original queue is not
|
// returns the result in a new queue. The original queue is not
|
||||||
// affected.
|
// affected.
|
||||||
template <typename F>
|
template <typename F>
|
||||||
Queue * Map(F function) const {
|
Queue* Map(F function) const {
|
||||||
Queue * new_queue = new Queue();
|
Queue* new_queue = new Queue();
|
||||||
for (const QueueNode<E> * node = head_; node != NULL; node = node->next_) {
|
for (const QueueNode<E>* node = head_; node != NULL; node = node->next_) {
|
||||||
new_queue->Enqueue(function(node->element()));
|
new_queue->Enqueue(function(node->element()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,13 +161,13 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QueueNode<E> * head_; // The first node of the queue.
|
QueueNode<E>* head_; // The first node of the queue.
|
||||||
QueueNode<E> * last_; // The last node of the queue.
|
QueueNode<E>* last_; // The last node of the queue.
|
||||||
size_t size_; // The number of elements in the queue.
|
size_t size_; // The number of elements in the queue.
|
||||||
|
|
||||||
// We disallow copying a queue.
|
// We disallow copying a queue.
|
||||||
Queue(const Queue &);
|
Queue(const Queue&);
|
||||||
const Queue & operator = (const Queue &);
|
const Queue& operator = (const Queue&);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GTEST_SAMPLES_SAMPLE3_INL_H_
|
#endif // GTEST_SAMPLES_SAMPLE3_INL_H_
|
||||||
|
@ -122,7 +122,7 @@ class QueueTest : public testing::Test {
|
|||||||
// Tests the default c'tor.
|
// Tests the default c'tor.
|
||||||
TEST_F(QueueTest, DefaultConstructor) {
|
TEST_F(QueueTest, DefaultConstructor) {
|
||||||
// You can access data in the test fixture here.
|
// You can access data in the test fixture here.
|
||||||
EXPECT_EQ(0, q0_.Size());
|
EXPECT_EQ(0u, q0_.Size());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tests Dequeue().
|
// Tests Dequeue().
|
||||||
@ -133,13 +133,13 @@ TEST_F(QueueTest, Dequeue) {
|
|||||||
n = q1_.Dequeue();
|
n = q1_.Dequeue();
|
||||||
ASSERT_TRUE(n != NULL);
|
ASSERT_TRUE(n != NULL);
|
||||||
EXPECT_EQ(1, *n);
|
EXPECT_EQ(1, *n);
|
||||||
EXPECT_EQ(0, q1_.Size());
|
EXPECT_EQ(0u, q1_.Size());
|
||||||
delete n;
|
delete n;
|
||||||
|
|
||||||
n = q2_.Dequeue();
|
n = q2_.Dequeue();
|
||||||
ASSERT_TRUE(n != NULL);
|
ASSERT_TRUE(n != NULL);
|
||||||
EXPECT_EQ(2, *n);
|
EXPECT_EQ(2, *n);
|
||||||
EXPECT_EQ(1, q2_.Size());
|
EXPECT_EQ(1u, q2_.Size());
|
||||||
delete n;
|
delete n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -171,24 +171,24 @@ class QueueTest : public QuickTest {
|
|||||||
|
|
||||||
// Tests the default constructor.
|
// Tests the default constructor.
|
||||||
TEST_F(QueueTest, DefaultConstructor) {
|
TEST_F(QueueTest, DefaultConstructor) {
|
||||||
EXPECT_EQ(0, q0_.Size());
|
EXPECT_EQ(0u, q0_.Size());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tests Dequeue().
|
// Tests Dequeue().
|
||||||
TEST_F(QueueTest, Dequeue) {
|
TEST_F(QueueTest, Dequeue) {
|
||||||
int * n = q0_.Dequeue();
|
int* n = q0_.Dequeue();
|
||||||
EXPECT_TRUE(n == NULL);
|
EXPECT_TRUE(n == NULL);
|
||||||
|
|
||||||
n = q1_.Dequeue();
|
n = q1_.Dequeue();
|
||||||
EXPECT_TRUE(n != NULL);
|
EXPECT_TRUE(n != NULL);
|
||||||
EXPECT_EQ(1, *n);
|
EXPECT_EQ(1, *n);
|
||||||
EXPECT_EQ(0, q1_.Size());
|
EXPECT_EQ(0u, q1_.Size());
|
||||||
delete n;
|
delete n;
|
||||||
|
|
||||||
n = q2_.Dequeue();
|
n = q2_.Dequeue();
|
||||||
EXPECT_TRUE(n != NULL);
|
EXPECT_TRUE(n != NULL);
|
||||||
EXPECT_EQ(2, *n);
|
EXPECT_EQ(2, *n);
|
||||||
EXPECT_EQ(1, q2_.Size());
|
EXPECT_EQ(1u, q2_.Size());
|
||||||
delete n;
|
delete n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user