mirror of
https://github.com/zlgopen/awtk.git
synced 2025-05-08 19:44:45 +08:00
107 lines
2.8 KiB
C++
107 lines
2.8 KiB
C++
#include "base/layout.h"
|
|
#include "gtest/gtest.h"
|
|
|
|
TEST(Layuout, basic) {
|
|
rect_t r;
|
|
widget_layout_t layout;
|
|
ASSERT_EQ(widget_layout_parse(&layout, "1", "2", "3", "4"), &layout);
|
|
ASSERT_EQ(layout.x, 1);
|
|
ASSERT_EQ(layout.y, 2);
|
|
ASSERT_EQ(layout.w, 3);
|
|
ASSERT_EQ(layout.h, 4);
|
|
ASSERT_EQ(layout.x_attr, X_ATTR_DEFAULT);
|
|
ASSERT_EQ(layout.y_attr, Y_ATTR_DEFAULT);
|
|
ASSERT_EQ(layout.w_attr, W_ATTR_PIXEL);
|
|
ASSERT_EQ(layout.h_attr, H_ATTR_PIXEL);
|
|
|
|
widget_layout_calc(&layout, &r, 100, 200);
|
|
ASSERT_EQ(r.x, 1);
|
|
ASSERT_EQ(r.y, 2);
|
|
ASSERT_EQ(r.w, 3);
|
|
ASSERT_EQ(r.h, 4);
|
|
}
|
|
|
|
TEST(Layuout, percent) {
|
|
rect_t r;
|
|
widget_layout_t layout;
|
|
ASSERT_EQ(widget_layout_parse(&layout, "1%", "2%", "3%", "4%"), &layout);
|
|
ASSERT_EQ(layout.x, 1);
|
|
ASSERT_EQ(layout.y, 2);
|
|
ASSERT_EQ(layout.w, 3);
|
|
ASSERT_EQ(layout.h, 4);
|
|
ASSERT_EQ(layout.x_attr, X_ATTR_PERCENT);
|
|
ASSERT_EQ(layout.y_attr, Y_ATTR_PERCENT);
|
|
ASSERT_EQ(layout.w_attr, W_ATTR_PERCENT);
|
|
ASSERT_EQ(layout.h_attr, H_ATTR_PERCENT);
|
|
|
|
widget_layout_calc(&layout, &r, 100, 200);
|
|
ASSERT_EQ(r.x, 1);
|
|
ASSERT_EQ(r.y, 4);
|
|
ASSERT_EQ(r.w, 3);
|
|
ASSERT_EQ(r.h, 8);
|
|
}
|
|
|
|
TEST(Layuout, center_middle) {
|
|
rect_t r;
|
|
widget_layout_t layout;
|
|
ASSERT_EQ(widget_layout_parse(&layout, "center", "middle", "30%", "40%"), &layout);
|
|
ASSERT_EQ(layout.x, 0);
|
|
ASSERT_EQ(layout.y, 0);
|
|
ASSERT_EQ(layout.x_attr, X_ATTR_CENTER);
|
|
ASSERT_EQ(layout.y_attr, Y_ATTR_MIDDLE);
|
|
|
|
widget_layout_calc(&layout, &r, 100, 200);
|
|
ASSERT_EQ(r.x, 35);
|
|
ASSERT_EQ(r.y, 60);
|
|
ASSERT_EQ(r.w, 30);
|
|
ASSERT_EQ(r.h, 80);
|
|
}
|
|
|
|
TEST(Layuout, center_middle1) {
|
|
rect_t r;
|
|
widget_layout_t layout;
|
|
ASSERT_EQ(widget_layout_parse(&layout, "center:1", "middle:2", "30%", "40%"), &layout);
|
|
ASSERT_EQ(layout.x, 1);
|
|
ASSERT_EQ(layout.y, 2);
|
|
ASSERT_EQ(layout.x_attr, X_ATTR_CENTER);
|
|
ASSERT_EQ(layout.y_attr, Y_ATTR_MIDDLE);
|
|
|
|
widget_layout_calc(&layout, &r, 100, 200);
|
|
ASSERT_EQ(r.x, 36);
|
|
ASSERT_EQ(r.y, 62);
|
|
ASSERT_EQ(r.w, 30);
|
|
ASSERT_EQ(r.h, 80);
|
|
}
|
|
|
|
TEST(Layuout, right_bottom) {
|
|
rect_t r;
|
|
widget_layout_t layout;
|
|
ASSERT_EQ(widget_layout_parse(&layout, "right", "bottom", "30%", "40%"), &layout);
|
|
ASSERT_EQ(layout.x, 0);
|
|
ASSERT_EQ(layout.y, 0);
|
|
ASSERT_EQ(layout.x_attr, X_ATTR_RIGHT);
|
|
ASSERT_EQ(layout.y_attr, Y_ATTR_BOTTOM);
|
|
|
|
widget_layout_calc(&layout, &r, 100, 200);
|
|
ASSERT_EQ(r.x, 70);
|
|
ASSERT_EQ(r.y, 120);
|
|
ASSERT_EQ(r.w, 30);
|
|
ASSERT_EQ(r.h, 80);
|
|
}
|
|
|
|
TEST(Layuout, right_bottom1) {
|
|
rect_t r;
|
|
widget_layout_t layout;
|
|
ASSERT_EQ(widget_layout_parse(&layout, "right:1", "bottom:2", "30%", "40%"), &layout);
|
|
ASSERT_EQ(layout.x, 1);
|
|
ASSERT_EQ(layout.y, 2);
|
|
ASSERT_EQ(layout.x_attr, X_ATTR_RIGHT);
|
|
ASSERT_EQ(layout.y_attr, Y_ATTR_BOTTOM);
|
|
|
|
widget_layout_calc(&layout, &r, 100, 200);
|
|
ASSERT_EQ(r.x, 69);
|
|
ASSERT_EQ(r.y, 118);
|
|
ASSERT_EQ(r.w, 30);
|
|
ASSERT_EQ(r.h, 80);
|
|
}
|