diff --git a/histogram.cpp b/histogram.cpp index e43d6aa..7bcedcf 100644 --- a/histogram.cpp +++ b/histogram.cpp @@ -5,18 +5,29 @@ #include "histogram.h" using namespace std; -void -find_minmax(vector numbers, double &min, double &max) +bool find_minmax(vector numbers, double& min, double& max) { - min = numbers[0]; - max = numbers[0]; - for (size_t i = 1; i < numbers.size(); i++) - { - if (min > numbers[i]) - min = numbers[i]; - if (max < numbers[i]) - max = numbers[i]; + if (numbers.empty()) + { + return true; + } + else + { + min = numbers[0]; + for (auto i = 0; i < numbers.size(); i++) { + if (numbers[i] < min) { + min = numbers[i]; + } } + + max = numbers[0]; + for (auto i = 0; i < numbers.size(); i++) { + if (numbers[i] > max) { + max = numbers[i]; + } + } + } + return false; } vector make_histogramm(vectornumbers, size_t bin_count) diff --git a/main.cpp b/main.cpp index eeb8002..38851b7 100644 --- a/main.cpp +++ b/main.cpp @@ -45,8 +45,8 @@ size_t write_data(void* items, size_t item_size, size_t item_count, void* ctx) { size_t data_size = item_size * item_count; stringstream* buffer = reinterpret_cast(ctx); - buffer->write(static_cast(items), data_size); - return 0; + buffer->write(reinterpret_cast(items), data_size); + return data_size; } @@ -59,18 +59,19 @@ download(const string& address) if(curl) { CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, address); + curl_easy_setopt(curl, CURLOPT_URL, address.c_str()); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer); res = curl_easy_perform(curl); curl_easy_cleanup(curl); if (res != CURLE_OK) { - cout << curl_easy_strerror; + fprintf(stderr, "curl_easy_perform() failed: %s\n",curl_easy_strerror(res)); exit(1); } } - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); + curl_easy_cleanup(curl); return input_data(buffer, false); } diff --git a/unitest.cpp b/unitest.cpp index b33aece..a569c4f 100644 --- a/unitest.cpp +++ b/unitest.cpp @@ -1,18 +1,56 @@ + #define DOCTEST_CONFIG_NO_MULTITHREADING #define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN #include "doctest.h" #include "histogram_internal.h" #include #include +#define DOCTEST_CONFIG_NO_MULTITHREADING +#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN +#include "doctest.h" +#include "histogram_internal.h" + TEST_CASE("distinct positive numbers") { double min = 0; double max = 0; - std::vectorv{1}; - CHECK(v.size() != 0); - CHECK(v.size() != 1); - find_minmax(v, min, max); + find_minmax({1, 2}, min, max); + CHECK(min == 1); + CHECK(max == 2); +} + +TEST_CASE("vector with one element") +{ + double min = 0; + double max = 0; + find_minmax({1}, min, max); CHECK(min == 1); + CHECK(max == 1); +} + +TEST_CASE("vector with same elements") +{ + double min = 0; + double max = 0; + find_minmax({2,2,2}, min, max); + CHECK(min == 2); CHECK(max == 2); - CHECK(min != max); +} + +TEST_CASE("void vector") +{ + double min = 3; + double max = 2; + std::vector numbers {}; + bool check = find_minmax(numbers, min, max); + CHECK(check == true); +} + +TEST_CASE ("distinct negative numbers") +{ + double min = 0; + double max = 0; + find_minmax({-1, -2}, min, max); + CHECK(min == -2); + CHECK(max == -1); } diff --git a/unitest.depend b/unitest.depend index 9543488..4075be4 100644 --- a/unitest.depend +++ b/unitest.depend @@ -1,9 +1,11 @@ # depslib dependency file v1.0 -1682340687 source:c:\users\dell_latitude_e7440\desktop\lab34\unitest.cpp +1685969210 source:c:\users\dell_latitude_e7440\desktop\lab34\unitest.cpp "doctest.h" "histogram_internal.h" + "doctest.h" + "histogram_internal.h" 1682337424 c:\users\dell_latitude_e7440\desktop\lab34\doctest.h @@ -50,10 +52,10 @@ -1682340272 c:\users\dell_latitude_e7440\desktop\lab34\histogram_internal.h +1685969301 c:\users\dell_latitude_e7440\desktop\lab34\histogram_internal.h -1682341053 source:c:\users\dell_latitude_e7440\desktop\lab34\histogram.cpp +1685969551 source:c:\users\dell_latitude_e7440\desktop\lab34\histogram.cpp