#include "streamer.h"
TEST_PREFIX("streamer-basic: ", "[streamer-basic]");
TEST("normal") {
AsyncTest test(3000, 1);
auto i = new TestInput(20, 1);
auto o = new TestOutput(2);
StreamerSP s = new Streamer(i, o, 5, test.loop);
s->start();
s->finish_event.add([&](const ErrorCode& err) {
CHECK(!err);
test.happens();
});
test.run();
CHECK(i->stop_reading_cnt == 0);
CHECK(o->bufs.size() == 0);
}
TEST("pause input") {
AsyncTest test(3000, 1);
auto i = new TestInput(100, 20);
auto o = new TestOutput(1);
StreamerSP s = new Streamer(i, o, 30, test.loop);
s->start();
s->finish_event.add([&](const ErrorCode& err) {
CHECK(!err);
test.happens();
});
test.run();
CHECK(i->stop_reading_cnt > 0);
CHECK(o->bufs.size() == 0);
}
TEST("no limit") {
AsyncTest test(3000, 1);
auto i = new TestInput(300, 4);
auto o = new TestOutput(2);
StreamerSP s = new Streamer(i, o, 0, test.loop);
s->start();
s->finish_event.add([&](const ErrorCode& err) {
CHECK(!err);
test.happens();
});
test.run();
CHECK(i->stop_reading_cnt == 0);
CHECK(o->bufs.size() == 0);
}
TEST("stop") {
AsyncTest test(3000, 1);
auto i = new TestInput(300, 4);
auto o = new TestOutput(2);
StreamerSP s = new Streamer(i, o, 0, test.loop);
s->start();
s->finish_event.add([&](const ErrorCode& err) {
CHECK(err & make_error_code(std::errc::operation_canceled));
test.happens();
});
s->stop();
test.run();
}