//#include <benchmark/benchmark.h>

//#include <eedb/widgets/AuthWidget.hpp>

//class AuthWithDifferentSignals final : public eedb::AuthPage {
//    // AuthPage interface
//  public:
//    void setParent(Wt::WContainerWidget * parent) override {}
//    void detachFrom(Wt::WContainerWidget * parent) override {}
//    void processEnvironment() override {}
//    void registerNeedVerification(std::function< void() > f) override {
//        _callbacks[0] = f;
//    }
//    void registerOnUserWeakLogin(std::function< void() > f) override {
//        _callbacks[1] = f;
//    }
//    void registerOnUserStrongLogin(std::function< void() > f) override {
//        _callbacks[2] = f;
//    }
//    void registerOnUserLogout(std::function< void() > f) override {
//        _callbacks[3] = f;
//    }

//    //  protected:
//    void notifyUserStrongLogin() const override {
//        _callbacks[0]();
//    }
//    void notifyUserWeakLogin() const override {
//        _callbacks[1]();
//    }
//    void notifyNeedEmailVerification() const override {
//        _callbacks[0]();
//    }
//    void notifyUserLogout() const override {
//        _callbacks[3]();
//    }

//  private:
//    std::array< std::function< void() >, 4 > _callbacks;
//};

//#include <Wt/Auth/Login>

//static void BoostSignals(benchmark::State & state) {
//    eedb::AuthPageImpl sut;
//    auto callback = []() {};
//    sut.registerNeedVerification(callback);
//    while(state.KeepRunning()) {
//        sut.notifyNeedEmailVerification();
//    }
//}

//static void TableBasedSignals(benchmark::State & state) {
//    AuthWithDifferentSignals sut;
//    auto callback = []() {};
//    sut.registerNeedVerification(callback);
//    while(state.KeepRunning()) {
//        sut.notifyNeedEmailVerification();
//    }
//}
//BENCHMARK(BoostSignals);
//BENCHMARK(TableBasedSignals);
