From e8cfd96ccf8ab90afd457b98800511537f3ac731 Mon Sep 17 00:00:00 2001 From: Jonas Granquist Date: Sat, 25 Feb 2012 08:50:42 +0100 Subject: [PATCH 1/6] Move the code into a header file --- GildedRose/cpp/{GildedRose.cc => GildedRose.h} | 0 GildedRose/cpp/Makefile | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) rename GildedRose/cpp/{GildedRose.cc => GildedRose.h} (100%) diff --git a/GildedRose/cpp/GildedRose.cc b/GildedRose/cpp/GildedRose.h similarity index 100% rename from GildedRose/cpp/GildedRose.cc rename to GildedRose/cpp/GildedRose.h diff --git a/GildedRose/cpp/Makefile b/GildedRose/cpp/Makefile index e5e1d3e9..460e959d 100644 --- a/GildedRose/cpp/Makefile +++ b/GildedRose/cpp/Makefile @@ -12,7 +12,7 @@ # Points to the root of Google Test, relative to where this file is. # Remember to tweak this if you move this file. -GTEST_DIR = gtest +GTEST_DIR = ../../../googletest # Where to find user code. USER_DIR = . @@ -67,9 +67,9 @@ gtest_main.a : gtest-all.o gtest_main.o # gtest_main.a, depending on whether it defines its own main() # function. -GildedRose.o : $(USER_DIR)/GildedRose.cc \ - $(GTEST_HEADERS) - $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/GildedRose.cc +#GildedRose.o : $(USER_DIR)/GildedRose.h \ +# $(GTEST_HEADERS) +# $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/GildedRose.h -GildedRose : GildedRose.o gtest_main.a - $(CXX) $(CPPFLAGS) $(CXXFLAGS) -pthread $^ -o $@ +GildedRose : GildedRose.h gtest_main.a + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(USER_DIR)/GildedRose.h -pthread $^ -o $@ From b6553ce2f19a770260f38de30f0e3290b8791536 Mon Sep 17 00:00:00 2001 From: Jonas Granquist Date: Sat, 25 Feb 2012 08:59:26 +0100 Subject: [PATCH 2/6] Moved gtest to a new file --- GildedRose/cpp/GildedRose.h | 10 ---------- GildedRose/cpp/GildedRoseUnitTests.cc | 12 ++++++++++++ GildedRose/cpp/Makefile | 4 ++-- 3 files changed, 14 insertions(+), 12 deletions(-) create mode 100644 GildedRose/cpp/GildedRoseUnitTests.cc diff --git a/GildedRose/cpp/GildedRose.h b/GildedRose/cpp/GildedRose.h index c3ebb814..0cb1bbf9 100644 --- a/GildedRose/cpp/GildedRose.h +++ b/GildedRose/cpp/GildedRose.h @@ -1,5 +1,3 @@ -#include - #include using namespace std; @@ -113,11 +111,3 @@ void example() } -TEST(GildedRoseTest, Foo) { - vector items; - items.push_back(Item("Foo", 0, 0)); - GildedRose app(items); - app.updateQuality(); - EXPECT_EQ("fixme", app.items[0].name); -} - diff --git a/GildedRose/cpp/GildedRoseUnitTests.cc b/GildedRose/cpp/GildedRoseUnitTests.cc new file mode 100644 index 00000000..000cc6b5 --- /dev/null +++ b/GildedRose/cpp/GildedRoseUnitTests.cc @@ -0,0 +1,12 @@ +#include + +#include "GildedRose.h" + +TEST(GildedRoseTest, Foo) { + vector items; + items.push_back(Item("Foo", 0, 0)); + GildedRose app(items); + app.updateQuality(); + EXPECT_EQ("fixme", app.items[0].name); +} + diff --git a/GildedRose/cpp/Makefile b/GildedRose/cpp/Makefile index 460e959d..56b3f6c3 100644 --- a/GildedRose/cpp/Makefile +++ b/GildedRose/cpp/Makefile @@ -71,5 +71,5 @@ gtest_main.a : gtest-all.o gtest_main.o # $(GTEST_HEADERS) # $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/GildedRose.h -GildedRose : GildedRose.h gtest_main.a - $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(USER_DIR)/GildedRose.h -pthread $^ -o $@ +GildedRose : GildedRoseUnitTests.cc gtest_main.a + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -pthread $^ -o $@ From c56f013f1d58fd66c2a4fa37b5bfa95d7bb93eed Mon Sep 17 00:00:00 2001 From: Jonas Granquist Date: Sat, 25 Feb 2012 09:14:10 +0100 Subject: [PATCH 3/6] Moved GildedRose implementation to new file GildedRose.cc --- GildedRose/cpp/GildedRose.cc | 80 ++++++++++++++++++++++ GildedRose/cpp/GildedRose.h | 95 +-------------------------- GildedRose/cpp/GildedRoseUnitTests.cc | 12 ++++ GildedRose/cpp/Makefile | 11 ++-- 4 files changed, 102 insertions(+), 96 deletions(-) create mode 100644 GildedRose/cpp/GildedRose.cc diff --git a/GildedRose/cpp/GildedRose.cc b/GildedRose/cpp/GildedRose.cc new file mode 100644 index 00000000..dd570b1a --- /dev/null +++ b/GildedRose/cpp/GildedRose.cc @@ -0,0 +1,80 @@ +#include "GildedRose.h" + +GildedRose::GildedRose(vector items) : items(items) +{} + +void GildedRose::updateQuality() +{ + for (int i = 0; i < items.size(); i++) + { + if (items[i].name != "Aged Brie" && items[i].name != "Backstage passes to a TAFKAL80ETC concert") + { + if (items[i].quality > 0) + { + if (items[i].name != "Sulfuras, Hand of Ragnaros") + { + items[i].quality = items[i].quality - 1; + } + } + } + else + { + if (items[i].quality < 50) + { + items[i].quality = items[i].quality + 1; + + if (items[i].name == "Backstage passes to a TAFKAL80ETC concert") + { + if (items[i].sellIn < 11) + { + if (items[i].quality < 50) + { + items[i].quality = items[i].quality + 1; + } + } + + if (items[i].sellIn < 6) + { + if (items[i].quality < 50) + { + items[i].quality = items[i].quality + 1; + } + } + } + } + } + + if (items[i].name != "Sulfuras, Hand of Ragnaros") + { + items[i].sellIn = items[i].sellIn - 1; + } + + if (items[i].sellIn < 0) + { + if (items[i].name != "Aged Brie") + { + if (items[i].name != "Backstage passes to a TAFKAL80ETC concert") + { + if (items[i].quality > 0) + { + if (items[i].name != "Sulfuras, Hand of Ragnaros") + { + items[i].quality = items[i].quality - 1; + } + } + } + else + { + items[i].quality = items[i].quality - items[i].quality; + } + } + else + { + if (items[i].quality < 50) + { + items[i].quality = items[i].quality + 1; + } + } + } + } +} diff --git a/GildedRose/cpp/GildedRose.h b/GildedRose/cpp/GildedRose.h index 0cb1bbf9..8d236457 100644 --- a/GildedRose/cpp/GildedRose.h +++ b/GildedRose/cpp/GildedRose.h @@ -1,4 +1,5 @@ #include +#include using namespace std; @@ -16,98 +17,8 @@ class GildedRose { public: vector items; - GildedRose(vector items) : items (items) - {} + GildedRose(vector items); - void updateQuality() - { - for (int i = 0; i < items.size(); i++) - { - if (items[i].name != "Aged Brie" && items[i].name != "Backstage passes to a TAFKAL80ETC concert") - { - if (items[i].quality > 0) - { - if (items[i].name != "Sulfuras, Hand of Ragnaros") - { - items[i].quality = items[i].quality - 1; - } - } - } - else - { - if (items[i].quality < 50) - { - items[i].quality = items[i].quality + 1; - - if (items[i].name == "Backstage passes to a TAFKAL80ETC concert") - { - if (items[i].sellIn < 11) - { - if (items[i].quality < 50) - { - items[i].quality = items[i].quality + 1; - } - } - - if (items[i].sellIn < 6) - { - if (items[i].quality < 50) - { - items[i].quality = items[i].quality + 1; - } - } - } - } - } - - if (items[i].name != "Sulfuras, Hand of Ragnaros") - { - items[i].sellIn = items[i].sellIn - 1; - } - - if (items[i].sellIn < 0) - { - if (items[i].name != "Aged Brie") - { - if (items[i].name != "Backstage passes to a TAFKAL80ETC concert") - { - if (items[i].quality > 0) - { - if (items[i].name != "Sulfuras, Hand of Ragnaros") - { - items[i].quality = items[i].quality - 1; - } - } - } - else - { - items[i].quality = items[i].quality - items[i].quality; - } - } - else - { - if (items[i].quality < 50) - { - items[i].quality = items[i].quality + 1; - } - } - } - } - } + void updateQuality(); }; - -void example() -{ - vector items; - items.push_back(Item("+5 Dexterity Vest", 10, 20)); - items.push_back(Item("Aged Brie", 2, 0)); - items.push_back(Item("Elixir of the Mongoose", 5, 7)); - items.push_back(Item("Sulfuras, Hand of Ragnaros", 0, 80)); - items.push_back(Item("Backstage passes to a TAFKAL80ETC concert", 15, 20)); - items.push_back(Item("Conjured Mana Cake", 3, 6)); - GildedRose app(items); - app.updateQuality(); -} - - diff --git a/GildedRose/cpp/GildedRoseUnitTests.cc b/GildedRose/cpp/GildedRoseUnitTests.cc index 000cc6b5..7e72d830 100644 --- a/GildedRose/cpp/GildedRoseUnitTests.cc +++ b/GildedRose/cpp/GildedRoseUnitTests.cc @@ -10,3 +10,15 @@ TEST(GildedRoseTest, Foo) { EXPECT_EQ("fixme", app.items[0].name); } +void example() +{ + vector items; + items.push_back(Item("+5 Dexterity Vest", 10, 20)); + items.push_back(Item("Aged Brie", 2, 0)); + items.push_back(Item("Elixir of the Mongoose", 5, 7)); + items.push_back(Item("Sulfuras, Hand of Ragnaros", 0, 80)); + items.push_back(Item("Backstage passes to a TAFKAL80ETC concert", 15, 20)); + items.push_back(Item("Conjured Mana Cake", 3, 6)); + GildedRose app(items); + app.updateQuality(); +} diff --git a/GildedRose/cpp/Makefile b/GildedRose/cpp/Makefile index 56b3f6c3..46c1eb6f 100644 --- a/GildedRose/cpp/Makefile +++ b/GildedRose/cpp/Makefile @@ -67,9 +67,12 @@ gtest_main.a : gtest-all.o gtest_main.o # gtest_main.a, depending on whether it defines its own main() # function. -#GildedRose.o : $(USER_DIR)/GildedRose.h \ -# $(GTEST_HEADERS) -# $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/GildedRose.h +GildedRose.o : $(USER_DIR)/GildedRose.cc + $(CXX) -c $^ -GildedRose : GildedRoseUnitTests.cc gtest_main.a +GildedRoseUnitTests.o : $(USER_DIR)/GildedRoseUnitTests.cc \ + $(GTEST_HEADERS) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/GildedRoseUnitTests.cc + +GildedRose : GildedRoseUnitTests.o GildedRose.o gtest_main.a $(CXX) $(CPPFLAGS) $(CXXFLAGS) -pthread $^ -o $@ From 975c5edd7fdf129e5b37161b5657bda071efc85e Mon Sep 17 00:00:00 2001 From: Jonas Granquist Date: Sat, 25 Feb 2012 09:21:31 +0100 Subject: [PATCH 4/6] Added texttest --- GildedRose/cpp/GildedRoseTextTests.cc | 38 +++++++++++++++++++++++++++ GildedRose/cpp/Makefile | 12 +++++++-- 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 GildedRose/cpp/GildedRoseTextTests.cc diff --git a/GildedRose/cpp/GildedRoseTextTests.cc b/GildedRose/cpp/GildedRoseTextTests.cc new file mode 100644 index 00000000..6a1366ed --- /dev/null +++ b/GildedRose/cpp/GildedRoseTextTests.cc @@ -0,0 +1,38 @@ +#include "GildedRose.h" + +#include + +using namespace std; + +ostream& operator<<(ostream& s, Item& item) +{ + s << item.name << ", " << item.sellIn << ", " << item.quality; + return s; +} + +int main() +{ + vector items; + items.push_back(Item("+5 Dexterity Vest", 10, 20)); + items.push_back(Item("Aged Brie", 2, 0)); + items.push_back(Item("Elixir of the Mongoose", 5, 7)); + items.push_back(Item("Sulfuras, Hand of Ragnaros", 0, 80)); + items.push_back(Item("Backstage passes to a TAFKAL80ETC concert", 15, 20)); + items.push_back(Item("Conjured Mana Cake", 3, 6)); + GildedRose app(items); + + cout << "OMGHAI!" << endl; + + for (int day = 0; day <= 30; day++) + { + cout << "-------- day " << day << " --------" << endl; + cout << "name, sellIn, quality" << endl; + for (vector::iterator i = items.begin(); i != items.end(); i++) + { + cout << *i << endl; + } + cout << endl; + + app.updateQuality(); + } +} diff --git a/GildedRose/cpp/Makefile b/GildedRose/cpp/Makefile index 46c1eb6f..d68fc1c6 100644 --- a/GildedRose/cpp/Makefile +++ b/GildedRose/cpp/Makefile @@ -27,6 +27,8 @@ CXXFLAGS += -g -Wall -Wextra # created to the list. TESTS = GildedRose +TEXTTESTS = GildedRoseTextTests + # All Google Test headers. Usually you shouldn't change this # definition. GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \ @@ -34,10 +36,10 @@ GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \ # House-keeping build targets. -all : $(TESTS) +all : $(TESTS) $(TEXTTESTS) clean : - rm -f $(TESTS) gtest.a gtest_main.a *.o + rm -f $(TESTS) $(TEXTTESTS) gtest.a gtest_main.a *.o # Builds gtest.a and gtest_main.a. @@ -76,3 +78,9 @@ GildedRoseUnitTests.o : $(USER_DIR)/GildedRoseUnitTests.cc \ GildedRose : GildedRoseUnitTests.o GildedRose.o gtest_main.a $(CXX) $(CPPFLAGS) $(CXXFLAGS) -pthread $^ -o $@ + +GildedRoseTextTests.o : $(USER_DIR)/GildedRoseTextTests.cc + $(CXX) -c $(USER_DIR)/GildedRoseTextTests.cc + +GildedRoseTextTests : GildedRoseTextTests.o GildedRose.o + $(CXX) -pthread $^ -o $@ From 072c37dd89d5556eb8e33910febed7cf9506386e Mon Sep 17 00:00:00 2001 From: Jonas Granquist Date: Sat, 25 Feb 2012 09:24:52 +0100 Subject: [PATCH 5/6] GildedRose class takes reference to items vector --- GildedRose/cpp/GildedRose.cc | 2 +- GildedRose/cpp/GildedRose.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/GildedRose/cpp/GildedRose.cc b/GildedRose/cpp/GildedRose.cc index dd570b1a..8df23e47 100644 --- a/GildedRose/cpp/GildedRose.cc +++ b/GildedRose/cpp/GildedRose.cc @@ -1,6 +1,6 @@ #include "GildedRose.h" -GildedRose::GildedRose(vector items) : items(items) +GildedRose::GildedRose(vector & items) : items(items) {} void GildedRose::updateQuality() diff --git a/GildedRose/cpp/GildedRose.h b/GildedRose/cpp/GildedRose.h index 8d236457..8464f87b 100644 --- a/GildedRose/cpp/GildedRose.h +++ b/GildedRose/cpp/GildedRose.h @@ -16,8 +16,8 @@ public: class GildedRose { public: - vector items; - GildedRose(vector items); + vector & items; + GildedRose(vector & items); void updateQuality(); }; From 5e873aeefdc6f437502a963d5a15ba1f30712d44 Mon Sep 17 00:00:00 2001 From: Jonas Granquist Date: Sat, 25 Feb 2012 10:18:01 +0100 Subject: [PATCH 6/6] Changed back to original googletest path --- GildedRose/cpp/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GildedRose/cpp/Makefile b/GildedRose/cpp/Makefile index d68fc1c6..5ebc68d9 100644 --- a/GildedRose/cpp/Makefile +++ b/GildedRose/cpp/Makefile @@ -12,7 +12,7 @@ # Points to the root of Google Test, relative to where this file is. # Remember to tweak this if you move this file. -GTEST_DIR = ../../../googletest +GTEST_DIR = gtest # Where to find user code. USER_DIR = . @@ -80,7 +80,7 @@ GildedRose : GildedRoseUnitTests.o GildedRose.o gtest_main.a $(CXX) $(CPPFLAGS) $(CXXFLAGS) -pthread $^ -o $@ GildedRoseTextTests.o : $(USER_DIR)/GildedRoseTextTests.cc - $(CXX) -c $(USER_DIR)/GildedRoseTextTests.cc + $(CXX) -c $^ GildedRoseTextTests : GildedRoseTextTests.o GildedRose.o $(CXX) -pthread $^ -o $@