diff --git a/cpp-catch2/.gitignore b/cpp-catch2/.gitignore deleted file mode 100644 index 401f2947..00000000 --- a/cpp-catch2/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/build_meson/ -/subprojects/Catch2-*/ -/subprojects/packagecache/ -/cmake-build-*/ diff --git a/cpp-catch2/CMakeLists.txt b/cpp-catch2/CMakeLists.txt deleted file mode 100644 index 0617ad9c..00000000 --- a/cpp-catch2/CMakeLists.txt +++ /dev/null @@ -1,54 +0,0 @@ -cmake_minimum_required(VERSION 3.14..3.16) -set(CMAKE_VERBOSE_MAKEFILE ON) -project(GildedRoseKata VERSION 1.0 - DESCRIPTION "The GildedRose Refactoring kata for an approval testing approach" - LANGUAGES CXX) -include(FetchContent) - -FetchContent_Declare( - catch2 - GIT_REPOSITORY https://github.com/catchorg/Catch2.git - GIT_TAG v2.13.10 -) -FetchContent_MakeAvailable(catch2) -LIST(APPEND CMAKE_MODULE_PATH - ${catch2_SOURCE_DIR}/contrib - ) - -FetchContent_Declare( - approvaltests_ho - URL https://github.com/approvals/ApprovalTests.cpp/releases/download/v.10.13.0/ApprovalTests.v.10.13.0.hpp - DOWNLOAD_NO_EXTRACT TRUE - DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/approvaltests - DOWNLOAD_NAME ApprovalTests.v.10.13.0.hpp -) -FetchContent_GetProperties(approvaltests_ho) -if (NOT approvaltests_ho_POPULATED) - FetchContent_Populate(approvaltests_ho) -endif () -add_library(approvaltests INTERFACE) -target_include_directories(approvaltests - INTERFACE ${CMAKE_CURRENT_BINARY_DIR}/approvaltests - INTERFACE ${catch2_SOURCE_DIR}/single_include/catch2 - ) - -if( MINGW ) - # https://stackoverflow.com/questions/31890021/mingw-too-many-sections-bug-while-compiling-huge-header-file-in-qt - set (CMAKE_CXX_FLAGS "-Wa,-mbig-obj ") -endif() - -add_executable(gildedrose_catch2 - src/GildedRose.h - src/GildedRose.cc - test/gildedrose_catch.cpp - test/main.cpp) -set_target_properties(gildedrose_catch2 PROPERTIES CXX_STANDARD 11) -target_include_directories(gildedrose_catch2 - PUBLIC src) -target_link_libraries(gildedrose_catch2 Catch2::Catch2 approvaltests) - - - -include(CTest) -include(ParseAndAddCatchTests) -ParseAndAddCatchTests(gildedrose_catch2) diff --git a/cpp-catch2/README.md b/cpp-catch2/README.md deleted file mode 100644 index ce8bfb01..00000000 --- a/cpp-catch2/README.md +++ /dev/null @@ -1,21 +0,0 @@ -C++ version of Gilded Rose with Catch 2 and Approvals -====================================================== - -This is a C++ start of the Gilded Rose Refactoring Kata. See -the [top level readme](https://github.com/emilybache/GildedRose-Refactoring-Kata) - for a general description of the exercise. - -There are two (failing) unit tests included here. One uses only the catch2 framework, the other additionally uses [ApprovalTests](https://github.com/approvals/approvaltests.cpp). You should choose one of these tests to work with and delete the other. - -CMake ------ - -CMake is included in CLion from JetBrains. Without CMake files -CLion has a hard time to handle c-projects. - -To install CMake (if you don't use CLion) on macOS using brew - - brew install cmake - -Tested on CMake 3.15.3 (included with CLion 2019.3) on macOS - diff --git a/cpp-catch2/src/GildedRose.cc b/cpp-catch2/src/GildedRose.cc deleted file mode 100644 index 8df23e47..00000000 --- a/cpp-catch2/src/GildedRose.cc +++ /dev/null @@ -1,80 +0,0 @@ -#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/cpp-catch2/src/GildedRose.h b/cpp-catch2/src/GildedRose.h deleted file mode 100644 index 8464f87b..00000000 --- a/cpp-catch2/src/GildedRose.h +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include - -using namespace std; - -class Item -{ -public: - string name; - int sellIn; - int quality; - Item(string name, int sellIn, int quality) : name(name), sellIn(sellIn), quality(quality) - {} -}; - -class GildedRose -{ -public: - vector & items; - GildedRose(vector & items); - - void updateQuality(); -}; - diff --git a/cpp-catch2/test/ApprovalTests.hpp b/cpp-catch2/test/ApprovalTests.hpp deleted file mode 100644 index 5126d99f..00000000 --- a/cpp-catch2/test/ApprovalTests.hpp +++ /dev/null @@ -1 +0,0 @@ -#include "ApprovalTests.v.10.13.0.hpp" diff --git a/cpp-catch2/test/gildedrose_catch.cpp b/cpp-catch2/test/gildedrose_catch.cpp deleted file mode 100644 index af562b40..00000000 --- a/cpp-catch2/test/gildedrose_catch.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include "ApprovalTests.hpp" - -#include "GildedRose.h" - -std::ostream& operator<<(std::ostream& os, const Item& obj) -{ - return os - << "name: " << obj.name - << ", sellIn: " << obj.sellIn - << ", quality: " << obj.quality; -} - -// This is a normal unit test using Catch2 -TEST_CASE("UpdateQuality") { - - vector items; - items.push_back(Item("foo", 0, 0)); - GildedRose app(items); - app.updateQuality(); - REQUIRE("fixme" == app.items[0].name); -} - -// This is an Approval test using https://github.com/approvals/approvaltests.cpp -TEST_CASE("UpdateQualityApprovalTest") { - vector items; - items.push_back(Item("foo", 0, 0)); - GildedRose app(items); - app.updateQuality(); - auto item = app.items[0]; - ApprovalTests::Approvals::verify(item); -} diff --git a/cpp-catch2/test/main.cpp b/cpp-catch2/test/main.cpp deleted file mode 100644 index 94bae37b..00000000 --- a/cpp-catch2/test/main.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define CATCH_CONFIG_MAIN -#define APPROVALS_CATCH - -#include "catch2/catch.hpp" -#include "ApprovalTests.hpp" \ No newline at end of file