Сравнить коммиты

..

Ничего общего в коммитах. '82b976e495f3d8e4e7717c6273a831a9263b7b8a' и 'b8ad5f3fa4cfc047d9c0764db88a6dbf7ed9472e' имеют совершенно разные истории.

@ -3,8 +3,6 @@
#include "histogram.h" #include "histogram.h"
#include "text.h" #include "text.h"
#include "svg.h" #include "svg.h"
#include <sstream>
#include <curl/curl.h>
using namespace std; using namespace std;
@ -14,55 +12,20 @@ struct Input {
size_t bin_count{}; size_t bin_count{};
}; };
Input input_data(istream& stream) { Input input_data() {
Input in; Input in;
size_t number_count; size_t number_count;
stream >> number_count; cin >> number_count;
in.numbers.resize(number_count); in.numbers.resize(number_count);
for (size_t i = 0; i < number_count; i++) { for (size_t i = 0; i < number_count; i++) {
stream >> in.numbers[i]; cin >> in.numbers[i];
} }
stream >> in.bin_count; cin >> in.bin_count;
return in; return in;
} }
size_t write_data(void* items, size_t item_size, size_t item_count, void* ctx) { int main() {
size_t data_size = item_size * item_count; Input in = input_data();
stringstream* buffer = reinterpret_cast<stringstream*>(ctx);
buffer->write(reinterpret_cast<const char*>(items), data_size);
return data_size;
}
Input download(const string& address) {
stringstream buffer;
CURL* curl = curl_easy_init();
if (curl) {
CURLcode res;
curl_easy_setopt(curl, CURLOPT_URL, address.c_str());
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
cout << curl_easy_strerror(res);
exit(1);
}
auto data = curl_version_info(CURLVERSION_NOW)->protocols;
for (auto protocol = data; *protocol; ++protocol) {
cerr << *protocol << endl;
} curl_easy_cleanup(curl);
}
return input_data(buffer);
}
int main(int argc, char* argv[]) {
Input in;
if (argc > 1) {
in = download(argv[1]);
} else {
in = input_data(cin);
}
auto bins = make_histogram(in.numbers, in.bin_count); auto bins = make_histogram(in.numbers, in.bin_count);
show_histogram_svg(bins); show_histogram_svg(bins);
return 0; return 0;

@ -22,9 +22,9 @@ void svg_begin(double width, double height) {
} }
void svg_end(double top, ostream& stream) { void svg_end(double top) {
stream << "<line x1='10' y1='" << top << "' x2='" << IMAGE_WIDTH <<"' y2='" << top << "' stroke-dasharray = '10 10' stroke='black'/>\n"; cout << "<line x1='10' y1='" << top << "' x2='" << IMAGE_WIDTH <<"' y2='" << top << "' stroke-dasharray = '10 10' stroke='black'/>\n";
stream << "</svg>\n"; cout << "</svg>\n";
} }
void svg_text(double left, double baseline, string text) { void svg_text(double left, double baseline, string text) {
@ -57,5 +57,5 @@ void show_histogram_svg(const vector<size_t>& bins) {
svg_rect(TEXT_WIDTH, top, bin_width / scale, BIN_HEIGHT); svg_rect(TEXT_WIDTH, top, bin_width / scale, BIN_HEIGHT);
top += BIN_HEIGHT; top += BIN_HEIGHT;
} }
svg_end(top, cout); svg_end(top);
} }

@ -1,4 +0,0 @@
#pragma once
#include <iostream>
void svg_end(double top, std::ostream& stream);

@ -2,9 +2,6 @@
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN #define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include "doctest.h" #include "doctest.h"
#include "histogram_internal.h" #include "histogram_internal.h"
#include "svg_iternal.h"
#include <iostream>
TEST_CASE("distinct positive numbers") { TEST_CASE("distinct positive numbers") {
double min = 0; double min = 0;
@ -14,6 +11,14 @@ TEST_CASE("distinct positive numbers") {
CHECK(max == 2); CHECK(max == 2);
} }
TEST_CASE("empty vector") {
double min = 0;
double max = 0;
find_minmax({ }, min, max);
CHECK(min != 0);
CHECK(max != 0);
}
TEST_CASE("one element") { TEST_CASE("one element") {
double min = 0; double min = 0;
double max = 0; double max = 0;
@ -29,9 +34,3 @@ TEST_CASE("negative elements") {
CHECK(min == -81); CHECK(min == -81);
CHECK(max == 2); CHECK(max == 2);
} }
TEST_CASE("svg_check") {
std::stringstream stream;
svg_end(100, stream);
CHECK(stream.str() == "<line x1='10' y1='100' x2='400' y2='100' stroke-dasharray = '10 10' stroke='black'/>\n</svg>\n");
}

Загрузка…
Отмена
Сохранить