dispatch: Add simple test
This commit is contained in:
parent
464bedb33c
commit
8fcd514168
@ -251,6 +251,14 @@ void renderer::begin(xcb_rectangle_t rect) {
|
|||||||
void renderer::end() {
|
void renderer::end() {
|
||||||
m_log.trace_x("renderer: end");
|
m_log.trace_x("renderer: end");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Finalize the positions of the action blocks.
|
||||||
|
* Up until this point, the positions were relative to the start of the
|
||||||
|
* alignment block the action was located in.
|
||||||
|
* Here we add the start position of the block as well as the start position
|
||||||
|
* of the bar itself (without borders or tray) to create positions relative to
|
||||||
|
* the bar window.
|
||||||
|
*/
|
||||||
for (auto& a : m_action_ctxt.get_blocks()) {
|
for (auto& a : m_action_ctxt.get_blocks()) {
|
||||||
a.start_x += block_x(a.align) + m_rect.x;
|
a.start_x += block_x(a.align) + m_rect.x;
|
||||||
a.end_x += block_x(a.align) + m_rect.x;
|
a.end_x += block_x(a.align) + m_rect.x;
|
||||||
|
@ -63,6 +63,7 @@ add_unit_test(drawtypes/label)
|
|||||||
add_unit_test(drawtypes/ramp)
|
add_unit_test(drawtypes/ramp)
|
||||||
add_unit_test(drawtypes/iconset)
|
add_unit_test(drawtypes/iconset)
|
||||||
add_unit_test(tags/parser)
|
add_unit_test(tags/parser)
|
||||||
|
add_unit_test(tags/dispatch)
|
||||||
|
|
||||||
# Run make check to build and run all unit tests
|
# Run make check to build and run all unit tests
|
||||||
add_custom_target(check
|
add_custom_target(check
|
||||||
|
47
tests/unit_tests/tags/dispatch.cpp
Normal file
47
tests/unit_tests/tags/dispatch.cpp
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#include "tags/dispatch.hpp"
|
||||||
|
|
||||||
|
#include "common/test.hpp"
|
||||||
|
#include "components/logger.hpp"
|
||||||
|
#include "gmock/gmock.h"
|
||||||
|
|
||||||
|
using namespace polybar;
|
||||||
|
using namespace std;
|
||||||
|
using namespace tags;
|
||||||
|
|
||||||
|
using ::testing::InSequence;
|
||||||
|
using ::testing::_;
|
||||||
|
|
||||||
|
class MockRenderer : public renderer_interface {
|
||||||
|
public:
|
||||||
|
MockRenderer(action_context& action_ctxt) : renderer_interface(action_ctxt){};
|
||||||
|
|
||||||
|
MOCK_METHOD(void, render_offset, (const context& ctxt, int pixels), (override));
|
||||||
|
MOCK_METHOD(void, render_text, (const context& ctxt, const string&& str), (override));
|
||||||
|
MOCK_METHOD(void, change_alignment, (const context& ctxt), (override));
|
||||||
|
MOCK_METHOD(void, action_open, (const context& ctxt, mousebtn btn, action_t id), (override));
|
||||||
|
MOCK_METHOD(void, action_close, (const context& ctxt, action_t id), (override));
|
||||||
|
};
|
||||||
|
|
||||||
|
class TestableDispatch : public dispatch {};
|
||||||
|
|
||||||
|
class Dispatch : public ::testing::Test {
|
||||||
|
protected:
|
||||||
|
unique_ptr<action_context> action_ctxt = make_unique<action_context>();
|
||||||
|
|
||||||
|
unique_ptr<dispatch> parser = make_unique<dispatch>(logger(loglevel::NONE), *action_ctxt);
|
||||||
|
};
|
||||||
|
|
||||||
|
TEST_F(Dispatch, ignoreFormatting) {
|
||||||
|
MockRenderer r(*action_ctxt);
|
||||||
|
|
||||||
|
{
|
||||||
|
InSequence seq;
|
||||||
|
EXPECT_CALL(r, render_offset(_, 10)).Times(1);
|
||||||
|
EXPECT_CALL(r, render_text(_, string{"abc"})).Times(1);
|
||||||
|
EXPECT_CALL(r, render_text(_, string{"foo"})).Times(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
bar_settings settings;
|
||||||
|
|
||||||
|
parser->parse(settings, r, "%{O10}abc%{F-}foo");
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user