mirror of
https://gitee.com/zlgopen/awtk.git
synced 2024-12-01 03:28:53 +08:00
124 lines
3.4 KiB
C++
124 lines
3.4 KiB
C++
#include <stdlib.h>
|
|
#include "gtest/gtest.h"
|
|
#include "widgets/button.h"
|
|
#include "widgets/view.h"
|
|
#include "slide_menu/slide_menu.h"
|
|
#include <string>
|
|
|
|
using std::string;
|
|
|
|
static ret_t slide_menu_on_change(void* ctx, event_t* e) {
|
|
string& s = *(string*)ctx;
|
|
|
|
if (e->type == EVT_VALUE_CHANGED) {
|
|
s += "changed:";
|
|
} else if (e->type == EVT_VALUE_WILL_CHANGE) {
|
|
s += "will_changed:";
|
|
}
|
|
|
|
return RET_OK;
|
|
}
|
|
|
|
TEST(SlideMenu, basic) {
|
|
string str;
|
|
widget_t* w = slide_menu_create(NULL, 0, 0, 400, 300);
|
|
slide_menu_t* slide_menu = SLIDE_MENU(w);
|
|
widget_t* b1 = button_create(w, 0, 0, 0, 0);
|
|
widget_t* b2 = button_create(w, 0, 0, 0, 0);
|
|
widget_t* b3 = button_create(w, 0, 0, 0, 0);
|
|
|
|
widget_set_name(b1, "b1");
|
|
widget_set_name(b2, "b2");
|
|
widget_set_name(b3, "b3");
|
|
|
|
widget_on(w, EVT_VALUE_WILL_CHANGE, slide_menu_on_change, &str);
|
|
widget_on(w, EVT_VALUE_CHANGED, slide_menu_on_change, &str);
|
|
|
|
slide_menu_set_value(w, 0);
|
|
str = "";
|
|
slide_menu_set_value(w, 1);
|
|
ASSERT_EQ(slide_menu->value, 1);
|
|
ASSERT_EQ(str, "will_changed:changed:");
|
|
|
|
widget_destroy(w);
|
|
}
|
|
|
|
TEST(SlideMenu, fix_index) {
|
|
widget_t* w = slide_menu_create(NULL, 0, 0, 400, 300);
|
|
button_create(w, 0, 0, 0, 0);
|
|
button_create(w, 0, 0, 0, 0);
|
|
button_create(w, 0, 0, 0, 0);
|
|
|
|
ASSERT_EQ(slide_menu_fix_index(w, 0), 0);
|
|
ASSERT_EQ(slide_menu_fix_index(w, 1), 1);
|
|
ASSERT_EQ(slide_menu_fix_index(w, 2), 2);
|
|
ASSERT_EQ(slide_menu_fix_index(w, 3), 0);
|
|
ASSERT_EQ(slide_menu_fix_index(w, 30), 0);
|
|
ASSERT_EQ(slide_menu_fix_index(w, -1), 2);
|
|
ASSERT_EQ(slide_menu_fix_index(w, -2), 1);
|
|
ASSERT_EQ(slide_menu_fix_index(w, -3), 0);
|
|
ASSERT_EQ(slide_menu_fix_index(w, -4), 2);
|
|
|
|
widget_destroy(w);
|
|
}
|
|
|
|
TEST(SlideMenu, layout_children) {
|
|
widget_t* w = slide_menu_create(NULL, 0, 0, 600, 300);
|
|
widget_t* v = view_create(NULL, 0, 0, 0, 0);
|
|
widget_t* b = button_create(v, 0, 0, 0, 0);
|
|
|
|
widget_set_children_layout(v, "default(c=1,r=1,x=5,y=5,s=0)");
|
|
widget_add_child(w, v);
|
|
widget_layout_children(w);
|
|
|
|
ASSERT_NE(b->w, 0);
|
|
ASSERT_NE(b->h, 0);
|
|
|
|
widget_destroy(w);
|
|
}
|
|
|
|
TEST(SlideMenu, props) {
|
|
value_t v1;
|
|
value_t v2;
|
|
widget_t* w = slide_menu_create(NULL, 0, 0, 400, 300);
|
|
|
|
value_set_int(&v1, 321);
|
|
ASSERT_EQ(widget_set_prop(w, WIDGET_PROP_XOFFSET, &v1), RET_OK);
|
|
ASSERT_EQ(widget_get_prop(w, WIDGET_PROP_XOFFSET, &v2), RET_OK);
|
|
ASSERT_EQ(v1.type, v2.type);
|
|
ASSERT_EQ(value_int(&v1), value_int(&v2));
|
|
|
|
value_set_int(&v1, 123);
|
|
ASSERT_EQ(widget_set_prop(w, WIDGET_PROP_YOFFSET, &v1), RET_OK);
|
|
ASSERT_EQ(widget_get_prop(w, WIDGET_PROP_YOFFSET, &v2), RET_OK);
|
|
ASSERT_EQ(v1.type, v2.type);
|
|
ASSERT_EQ(0, value_int(&v2));
|
|
|
|
value_set_int(&v1, 2);
|
|
ASSERT_EQ(widget_set_prop(w, WIDGET_PROP_VALUE, &v1), RET_OK);
|
|
ASSERT_EQ(widget_get_prop(w, WIDGET_PROP_VALUE, &v2), RET_OK);
|
|
ASSERT_EQ(v1.type, v2.type);
|
|
ASSERT_EQ(value_int(&v1), value_int(&v2));
|
|
|
|
value_set_float(&v1, 0.6f);
|
|
ASSERT_EQ(widget_set_prop(w, SLIDE_MENU_PROP_MIN_SCALE, &v1), RET_OK);
|
|
ASSERT_EQ(widget_get_prop(w, SLIDE_MENU_PROP_MIN_SCALE, &v2), RET_OK);
|
|
ASSERT_EQ(v1.type, v2.type);
|
|
ASSERT_EQ(value_float(&v1), value_float(&v2));
|
|
|
|
value_set_str(&v1, "bottom");
|
|
ASSERT_EQ(widget_set_prop(w, WIDGET_PROP_ALIGN_V, &v1), RET_OK);
|
|
ASSERT_EQ(widget_get_prop(w, WIDGET_PROP_ALIGN_V, &v2), RET_OK);
|
|
ASSERT_EQ(ALIGN_V_BOTTOM, value_int(&v2));
|
|
|
|
widget_destroy(w);
|
|
}
|
|
|
|
TEST(SlideMenu, cast) {
|
|
widget_t* w = slide_menu_create(NULL, 0, 0, 400, 300);
|
|
|
|
ASSERT_EQ(w, slide_menu_cast(w));
|
|
|
|
widget_destroy(w);
|
|
}
|