#include "lib/test.h"
#include <panda/unievent/backend/uv.h>

TEST_PREFIX("backend: ", "[backend]");

TEST("default backend is UV") {
    CHECK(backend::UV->name() == "uv");
    REQUIRE(default_backend() == backend::UV);
}

TEST("throws on set nullptr") {
    REQUIRE_THROWS( set_default_backend(nullptr) );
}

TEST("change backend before actions") {
    set_default_backend(backend::UV);
    REQUIRE(default_backend() == backend::UV);
}

TEST("change backend before global/default loop created") {
    LoopSP l = new Loop(backend::UV); // create local loop
    set_default_backend(backend::UV);
    REQUIRE(default_backend() == backend::UV);
}

TEST("throws on change backend after global/default loop is created") {
    CHECK(Loop::global_loop());
    CHECK(Loop::default_loop());
    REQUIRE_THROWS(set_default_backend(backend::UV));
}