#pragma once

#include "src/adapters/high_brightness_mode.h"
#include "src/adapters/event_loop_handler_registration.h"
#include "src/core/handler_registration.h"
#include "fake_shared.h"

#include <functional>
#include <memory>

namespace repowerd
{
namespace test
{

class FakeHighBrightnessMode : public HighBrightnessMode
{
public:
    FakeHighBrightnessMode();

    void set_enabled(bool enabled) override;
    bool get_enabled() override;
    bool is_supported() const override;
    void set_supported(bool supported);
    void flush_event_loop();

    repowerd::HandlerRegistration register_high_brightness_mode_handler(
        HighBrightnessModeHandler const& handler) override;

private:
    EventLoop event_loop;
    HighBrightnessModeHandler hbm_handler;
    bool enabled;
    bool supported;
};

} // namespace test
} // namespace repowerd
