diff --git a/svg.cpp b/svg.cpp index 2241da6..f0ea4ab 100644 --- a/svg.cpp +++ b/svg.cpp @@ -53,7 +53,7 @@ double calculate_bin_height (const std::vector& bins, double USER_B } void -show_histogram_svg(const std::vector& bins, std::size_t USER_BIN_HEIGHT) { +show_histogram_svg(const std::vector& bins, double USER_BIN_HEIGHT) { const auto IMAGE_WIDTH = 400; const auto IMAGE_HEIGHT = 700; diff --git a/svg_internal.h b/svg_internal.h new file mode 100644 index 0000000..fab5839 --- /dev/null +++ b/svg_internal.h @@ -0,0 +1,8 @@ +#ifndef SVG_INTERNAL_H_INCLUDED +#define SVG_INTERNAL_H_INCLUDED + +#include + +double calculate_bin_height (const std::vector& bins, double USER_BIN_HEIGHT, double IMAGE_HEIGHT); + +#endif // SVG_INTERNAL_H_INCLUDED diff --git a/unittest_svg.cpp b/unittest_svg.cpp new file mode 100644 index 0000000..92c476c --- /dev/null +++ b/unittest_svg.cpp @@ -0,0 +1,72 @@ +#define DOCTEST_CONFIG_NO_MULTITHREADING +#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN +#include "doctest.h" +#include "svg_internal.h" + + +TEST_CASE("User height is zero") { + double IMAGE_HEIGHT = 700; + double USER_BIN_HEIGHT = 0; + auto BIN_HEIGHT = calculate_bin_height ({1,2}, USER_BIN_HEIGHT, IMAGE_HEIGHT); + CHECK(BIN_HEIGHT == 0); +} + +TEST_CASE("empty array") { + std::vector bins; + double IMAGE_HEIGHT = 700; + double USER_BIN_HEIGHT = 50; + auto BIN_HEIGHT = calculate_bin_height (bins, USER_BIN_HEIGHT, IMAGE_HEIGHT); + CHECK(BIN_HEIGHT == 50); +} + +TEST_CASE("User height is over image_height") { + double IMAGE_HEIGHT = 700; + double USER_BIN_HEIGHT = 800; + auto BIN_HEIGHT = calculate_bin_height ({1,2}, USER_BIN_HEIGHT, IMAGE_HEIGHT); + CHECK(BIN_HEIGHT == 350); +} + +TEST_CASE("User height is irrational") { + double IMAGE_HEIGHT = 700; + double USER_BIN_HEIGHT = 0.5; + auto BIN_HEIGHT = calculate_bin_height ({1,2}, USER_BIN_HEIGHT, IMAGE_HEIGHT); + CHECK(BIN_HEIGHT == 0.5); +} + +TEST_CASE("User height is BIG irrational") { + double IMAGE_HEIGHT = 700; + double USER_BIN_HEIGHT = 1000.5; + auto BIN_HEIGHT = calculate_bin_height ({1,2}, USER_BIN_HEIGHT, IMAGE_HEIGHT); + CHECK(BIN_HEIGHT == 350); +} + +TEST_CASE("negative numbers") { + double IMAGE_HEIGHT = 700; + double USER_BIN_HEIGHT = -5; + auto BIN_HEIGHT = calculate_bin_height ({1,2}, USER_BIN_HEIGHT, IMAGE_HEIGHT); + CHECK(BIN_HEIGHT == 0); +} + +TEST_CASE("negative irrational numbers") { + double IMAGE_HEIGHT = 700; + double USER_BIN_HEIGHT = -0.5; + auto BIN_HEIGHT = calculate_bin_height ({1,2}, USER_BIN_HEIGHT, IMAGE_HEIGHT); + CHECK(BIN_HEIGHT == 0); +} + +TEST_CASE("negative numbers") { + double IMAGE_HEIGHT = 700; + double USER_BIN_HEIGHT = 0; + auto BIN_HEIGHT = calculate_bin_height ({1,2}, USER_BIN_HEIGHT, IMAGE_HEIGHT); + CHECK(BIN_HEIGHT == 0); +} +TEST_CASE("big array") { + std::vector bins(1000); + double IMAGE_HEIGHT = 700; + double USER_BIN_HEIGHT = 50; + auto BIN_HEIGHT = calculate_bin_height (bins, USER_BIN_HEIGHT, IMAGE_HEIGHT); + CHECK(BIN_HEIGHT == 0.7); +} + + +