2020-04-01 10:56:34 +00:00
|
|
|
#include "main.h"
|
|
|
|
#include <cstring>
|
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
TEST_CASE("Plot") {
|
2020-06-16 03:58:43 +00:00
|
|
|
auto nc_ = testing_notcurses();
|
2020-05-17 11:57:21 +00:00
|
|
|
if(!nc_){
|
|
|
|
return;
|
|
|
|
}
|
2020-11-29 04:15:07 +00:00
|
|
|
if(!notcurses_canutf8(nc_)){
|
|
|
|
CHECK(0 == notcurses_stop(nc_));
|
|
|
|
return;
|
|
|
|
}
|
2020-04-23 07:52:07 +00:00
|
|
|
auto n_ = notcurses_stdplane(nc_);
|
2020-04-01 10:56:34 +00:00
|
|
|
REQUIRE(n_);
|
|
|
|
REQUIRE(0 == ncplane_cursor_move_yx(n_, 0, 0));
|
|
|
|
|
2020-04-04 12:56:31 +00:00
|
|
|
// setting miny == maxy with non-zero domain limits is invalid
|
2020-04-03 05:25:49 +00:00
|
|
|
SUBCASE("DetectRangeBadY"){
|
|
|
|
ncplot_options popts{};
|
2020-04-23 07:52:07 +00:00
|
|
|
auto p = ncuplot_create(n_, &popts, -1, -1);
|
2020-04-03 05:25:49 +00:00
|
|
|
CHECK(nullptr == p);
|
2020-04-23 07:52:07 +00:00
|
|
|
p = ncuplot_create(n_, &popts, 1, 1);
|
2020-04-03 05:25:49 +00:00
|
|
|
CHECK(nullptr == p);
|
2020-04-23 07:52:07 +00:00
|
|
|
p = ncuplot_create(n_, &popts, 0, 0);
|
2020-04-04 12:56:31 +00:00
|
|
|
REQUIRE(nullptr != p);
|
2020-04-23 07:52:07 +00:00
|
|
|
ncuplot_destroy(p);
|
2020-04-03 05:25:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// maxy < miny is invalid
|
|
|
|
SUBCASE("RejectMaxyLessMiny"){
|
|
|
|
ncplot_options popts{};
|
2020-04-23 07:52:07 +00:00
|
|
|
auto p = ncuplot_create(n_, &popts, 2, 1);
|
2020-04-03 05:25:49 +00:00
|
|
|
CHECK(nullptr == p);
|
|
|
|
}
|
|
|
|
|
2020-04-01 10:56:34 +00:00
|
|
|
SUBCASE("SimplePlot"){
|
|
|
|
ncplot_options popts{};
|
2020-04-23 07:52:07 +00:00
|
|
|
auto p = ncuplot_create(n_, &popts, 0, 0);
|
2020-04-01 10:56:34 +00:00
|
|
|
REQUIRE(p);
|
2020-04-23 07:52:07 +00:00
|
|
|
CHECK(n_ == ncuplot_plane(p));
|
|
|
|
ncuplot_destroy(p);
|
2020-04-01 10:56:34 +00:00
|
|
|
}
|
|
|
|
|
2020-04-03 08:47:34 +00:00
|
|
|
// 5-ary slot space without any window movement
|
|
|
|
SUBCASE("AugmentSamples5"){
|
|
|
|
ncplot_options popts{};
|
|
|
|
popts.rangex = 5;
|
2020-06-12 04:13:01 +00:00
|
|
|
struct ncuplot* p = ncuplot_create(n_, &popts, 0, 10);
|
|
|
|
uint64_t y;
|
|
|
|
CHECK(0 == ncuplot_sample(p, 0, &y));
|
|
|
|
CHECK(0 == y);
|
|
|
|
CHECK(0 == ncuplot_add_sample(p, (uint64_t)0, (uint64_t)1));
|
|
|
|
CHECK(0 == ncuplot_sample(p, 0, &y));
|
|
|
|
CHECK(1 == y);
|
|
|
|
CHECK(0 == ncuplot_add_sample(p, (uint64_t)0, (uint64_t)1));
|
|
|
|
CHECK(0 == ncuplot_sample(p, 0, &y));
|
|
|
|
CHECK(2 == y);
|
|
|
|
CHECK(-1 == ncuplot_sample(p, 1, &y));
|
|
|
|
CHECK(-1 == ncuplot_sample(p, 2, &y));
|
|
|
|
CHECK(0 == ncuplot_add_sample(p, (uint64_t)2, (uint64_t)3));
|
|
|
|
CHECK(0 == ncuplot_sample(p, 2, &y));
|
|
|
|
CHECK(3 == y);
|
|
|
|
CHECK(0 == ncuplot_set_sample(p, (uint64_t)2, (uint64_t)3));
|
|
|
|
CHECK(0 == ncuplot_sample(p, 2, &y));
|
|
|
|
CHECK(3 == y);
|
|
|
|
CHECK(-1 == ncuplot_sample(p, 3, &y));
|
|
|
|
CHECK(-1 == ncuplot_sample(p, 4, &y));
|
|
|
|
CHECK(0 == ncuplot_add_sample(p, (uint64_t)4, (uint64_t)6));
|
|
|
|
CHECK(0 == ncuplot_sample(p, 4, &y));
|
|
|
|
CHECK(6 == y);
|
|
|
|
CHECK(0 == ncuplot_sample(p, 0, &y));
|
|
|
|
CHECK(2 == y);
|
|
|
|
//CHECK(4 == p->slotx);
|
|
|
|
ncuplot_destroy(p);
|
2020-04-03 08:51:04 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// 2-ary slot space with window movement
|
|
|
|
SUBCASE("AugmentCycle2"){
|
|
|
|
ncplot_options popts{};
|
|
|
|
popts.rangex = 2;
|
2020-06-12 04:13:01 +00:00
|
|
|
struct ncuplot* p = ncuplot_create(n_, &popts, 0, 10);
|
|
|
|
uint64_t y;
|
|
|
|
CHECK(0 == ncuplot_sample(p, 0, &y));
|
|
|
|
CHECK(0 == ncuplot_add_sample(p, (uint64_t)0, (uint64_t)1));
|
|
|
|
CHECK(0 == ncuplot_sample(p, 0, &y));
|
|
|
|
CHECK(1 == y);
|
|
|
|
CHECK(0 == ncuplot_add_sample(p, (uint64_t)0, (uint64_t)1));
|
|
|
|
CHECK(0 == ncuplot_sample(p, 0, &y));
|
|
|
|
CHECK(2 == y);
|
|
|
|
CHECK(0 == ncuplot_set_sample(p, (uint64_t)1, (uint64_t)5));
|
|
|
|
CHECK(0 == ncuplot_sample(p, 1, &y));
|
|
|
|
CHECK(5 == y);
|
|
|
|
CHECK(0 == ncuplot_set_sample(p, (uint64_t)2, (uint64_t)9));
|
|
|
|
CHECK(0 == ncuplot_sample(p, 1, &y));
|
|
|
|
CHECK(5 == y);
|
|
|
|
CHECK(-1 == ncuplot_sample(p, 0, &y));
|
|
|
|
CHECK(0 == ncuplot_add_sample(p, (uint64_t)3, (uint64_t)4));
|
|
|
|
CHECK(-1 == ncuplot_sample(p, 0, &y));
|
|
|
|
CHECK(-1 == ncuplot_sample(p, 1, &y));
|
|
|
|
//CHECK(3 == p->slotx);
|
|
|
|
CHECK(0 == ncuplot_add_sample(p, (uint64_t)5, (uint64_t)1));
|
|
|
|
CHECK(-1 == ncuplot_sample(p, 0, &y));
|
|
|
|
CHECK(-1 == ncuplot_sample(p, 1, &y));
|
|
|
|
//CHECK(5 == p.slotx);
|
|
|
|
ncuplot_destroy(p);
|
2020-04-03 08:47:34 +00:00
|
|
|
}
|
|
|
|
|
2020-04-03 10:15:43 +00:00
|
|
|
// augment past the window, ensuring everything gets zeroed
|
|
|
|
SUBCASE("AugmentLong"){
|
|
|
|
ncplot_options popts{};
|
|
|
|
popts.rangex = 5;
|
2020-06-12 04:13:01 +00:00
|
|
|
struct ncuplot* p = ncuplot_create(n_, &popts, 0, 10);
|
|
|
|
uint64_t y;
|
|
|
|
CHECK(0 == ncuplot_sample(p, 0, &y));
|
|
|
|
for(int x = 1 ; x < 5 ; ++x){
|
|
|
|
CHECK(-1 == ncuplot_sample(p, x, &y));
|
2020-04-03 10:15:43 +00:00
|
|
|
}
|
2020-06-12 04:13:01 +00:00
|
|
|
CHECK(0 == ncuplot_add_sample(p, (uint64_t)4, (uint64_t)4));
|
2020-04-03 10:15:43 +00:00
|
|
|
for(int x = 1 ; x < 4 ; ++x){
|
2020-06-12 04:13:01 +00:00
|
|
|
CHECK(0 == ncuplot_sample(p, x, &y));
|
2020-04-03 10:15:43 +00:00
|
|
|
}
|
2020-06-12 04:13:01 +00:00
|
|
|
CHECK(0 == ncuplot_sample(p, 4, &y));
|
|
|
|
CHECK(4 == y);
|
|
|
|
CHECK(0 == ncuplot_add_sample(p, (uint64_t)10, (uint64_t)5));
|
|
|
|
for(int x = 0 ; x < 4 ; ++x){
|
|
|
|
CHECK(-1 == ncuplot_sample(p, x, &y));
|
2020-04-03 10:15:43 +00:00
|
|
|
}
|
2020-06-12 04:13:01 +00:00
|
|
|
CHECK(0 == ncuplot_add_sample(p, (uint64_t)24, (uint64_t)7));
|
2020-04-03 10:15:43 +00:00
|
|
|
for(int x = 0 ; x < 5 ; ++x){
|
2020-06-12 04:13:01 +00:00
|
|
|
CHECK(-1 == ncuplot_sample(p, x, &y));
|
2020-04-03 10:15:43 +00:00
|
|
|
}
|
2020-06-12 04:13:01 +00:00
|
|
|
CHECK(0 == ncuplot_add_sample(p, (uint64_t)100, (uint64_t)0));
|
|
|
|
for(int x = 0 ; x < 5 ; ++x){
|
|
|
|
CHECK(-1 == ncuplot_sample(p, x, &y));
|
|
|
|
}
|
|
|
|
ncuplot_destroy(p);
|
2020-04-03 10:15:43 +00:00
|
|
|
}
|
|
|
|
|
2020-04-23 07:52:07 +00:00
|
|
|
// FIXME need some high-level rendering tests, one for each geometry
|
|
|
|
|
|
|
|
SUBCASE("SimpleFloatPlot"){
|
|
|
|
ncplot_options popts{};
|
|
|
|
auto p = ncdplot_create(n_, &popts, 0, 0);
|
|
|
|
REQUIRE(p);
|
|
|
|
CHECK(n_ == ncdplot_plane(p));
|
|
|
|
ncdplot_destroy(p);
|
|
|
|
}
|
2020-04-16 09:33:10 +00:00
|
|
|
|
2020-04-01 10:56:34 +00:00
|
|
|
CHECK(0 == notcurses_stop(nc_));
|
|
|
|
}
|