From 076d26c690e1c64cf5ae2640ab611404e817fd9c Mon Sep 17 00:00:00 2001 From: BezhenarAN Date: Tue, 7 May 2024 23:04:39 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20calculate?= =?UTF-8?q?=5Fbin=5Fheight?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- svg.cpp | 2 +- svg_internal.h | 8 ++++++ unittest_svg.cpp | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 svg_internal.h create mode 100644 unittest_svg.cpp 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); +} + + +