Unittest для индивидуального задания вариант 4

master
Dmitriy (BerezhkovDA) 12 месяцев назад
Родитель 99404971c0
Сommit 604455042f

@ -137,7 +137,6 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="histogram.h" /> <ClInclude Include="histogram.h" />
<ClInclude Include="histogram_internal.h" />
<ClInclude Include="show_histogram.h" /> <ClInclude Include="show_histogram.h" />
<ClInclude Include="svg.h" /> <ClInclude Include="svg.h" />
</ItemGroup> </ItemGroup>

@ -35,13 +35,10 @@
<ClInclude Include="histogram.h"> <ClInclude Include="histogram.h">
<Filter>Файлы заголовков</Filter> <Filter>Файлы заголовков</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="show_histogram.h"> <ClInclude Include="svg.h">
<Filter>Файлы заголовков</Filter>
</ClInclude>
<ClInclude Include="histogram_internal.h">
<Filter>Файлы заголовков</Filter> <Filter>Файлы заголовков</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="svg.h"> <ClInclude Include="show_histogram.h">
<Filter>Файлы заголовков</Filter> <Filter>Файлы заголовков</Filter>
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>

@ -21,6 +21,13 @@ void svg_rect(double x, double y, double width, double height,string stroke = "b
{ {
cout << "<rect x='" << x << "' y='" << y << "' width='" << width << "' height='" << height << "' fill='" << fill << "' stroke='" << stroke << "' />"; cout << "<rect x='" << x << "' y='" << y << "' width='" << width << "' height='" << height << "' fill='" << fill << "' stroke='" << stroke << "' />";
} }
int GetProc(int number_cnt, int bin)
{
if (number_cnt <= 0) return 0;
if (bin < 0) return 0;
return 100.0 * bin / number_cnt;
}
void show_histogram_svg(const vector<double>& bins, int number_cnt) { void show_histogram_svg(const vector<double>& bins, int number_cnt) {
const auto IMAGE_WIDTH = 400; const auto IMAGE_WIDTH = 400;
const auto IMAGE_HEIGHT = 300; const auto IMAGE_HEIGHT = 300;
@ -40,7 +47,7 @@ void show_histogram_svg(const vector<double>& bins, int number_cnt) {
for (size_t bin : bins) { for (size_t bin : bins) {
const double bin_width = k * bin; const double bin_width = k * bin;
svg_text(TEXT_LEFT, top + TEXT_BASELINE, to_string(bin)); svg_text(TEXT_LEFT, top + TEXT_BASELINE, to_string(bin));
svg_text(IMAGE_WIDTH - TEXT_WIDTH + TEXT_LEFT, top + TEXT_BASELINE, to_string((int)((100.0 / (double)number_cnt) * (double)bin)) + "%"); svg_text(IMAGE_WIDTH - TEXT_WIDTH + TEXT_LEFT, top + TEXT_BASELINE, to_string(GetProc(number_cnt,bin)) + "%");
svg_rect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT,"black",colors[color_ptr]); svg_rect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT,"black",colors[color_ptr]);
top += BIN_HEIGHT; top += BIN_HEIGHT;
color_ptr++; color_ptr++;

@ -0,0 +1,2 @@
#pragma once
int GetProc(int number_cnt, int bin);

@ -4,7 +4,8 @@
#define DOCTEST_CONFIG_NO_MULTITHREADING #define DOCTEST_CONFIG_NO_MULTITHREADING
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN #define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include "doctest.h" #include "doctest.h"
#include "../sem2_lab1/histogram_internal.h" #include "histogram_internal.h"
#include "svg_internal.h"
TEST_CASE("distinct positive numbers") { TEST_CASE("distinct positive numbers") {
double min = 0; double min = 0;
@ -44,6 +45,35 @@ TEST_CASE("equal items") {
CHECK(max == -6); CHECK(max == -6);
} }
TEST_CASE("Test SVG normal") {
int numb_cnt = 100;
int bin = 44;
int Proc = GetProc(numb_cnt, bin);
CHECK(Proc == 44);
}
TEST_CASE("Test SVG zero") {
int numb_cnt = 0;
int bin = 33;
int Proc = GetProc(numb_cnt, bin);
CHECK(Proc == 0);
}
TEST_CASE("Test SVG less zero 1") {
int numb_cnt = -23;
int bin = 55;
int Proc = GetProc(numb_cnt, bin);
CHECK(Proc == 0);
}
TEST_CASE("Test SVG less zero 2") {
int numb_cnt = 100;
int bin = -23;
int Proc = GetProc(numb_cnt, bin);
CHECK(Proc == 0);
}
// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки" // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку" // Отладка программы: F5 или меню "Отладка" > "Запустить отладку"

@ -128,11 +128,13 @@
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\sem2_lab1\histogram.cpp" /> <ClCompile Include="..\sem2_lab1\histogram.cpp" />
<ClCompile Include="..\sem2_lab1\svg.cpp" />
<ClCompile Include="unittest.cpp" /> <ClCompile Include="unittest.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\sem2_lab1\histogram_internal.h" />
<ClInclude Include="doctest.h" /> <ClInclude Include="doctest.h" />
<ClInclude Include="histogram_internal.h" />
<ClInclude Include="svg_internal.h" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">

@ -21,12 +21,18 @@
<ClCompile Include="..\sem2_lab1\histogram.cpp"> <ClCompile Include="..\sem2_lab1\histogram.cpp">
<Filter>Исходные файлы</Filter> <Filter>Исходные файлы</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\sem2_lab1\svg.cpp">
<Filter>Исходные файлы</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\sem2_lab1\histogram_internal.h"> <ClInclude Include="doctest.h">
<Filter>Файлы заголовков</Filter> <Filter>Файлы заголовков</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="doctest.h"> <ClInclude Include="svg_internal.h">
<Filter>Файлы заголовков</Filter>
</ClInclude>
<ClInclude Include="histogram_internal.h">
<Filter>Файлы заголовков</Filter> <Filter>Файлы заголовков</Filter>
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>

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