2019-01-11 17:59:31 -08:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include "elementary_config.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "efl_ui_suite.h"
|
efl_model : rename all efl_model based classes.
Summary:
As the result of discussion in T7458,
we need to rename all efl_model based classes with efl_XXX_Model sequence.
I've run few vote for this, see V42, V43
few classes are totally renamed as our consideration of misnaming.
| Efl.Model_Loop | Efl.Loop_Model |
| Efl.Model_Item | Efl.Generic_Model |
| Efl.Model_Container | Efl.Container_Model |
| Efl.Model_Container_Item | Efl.Container_Model_Item |
| Efl.Model_Composite | Efl.Composite_Model |
| Efl.Model_Composite_Boolean | Efl.Boolean_Model |
| Efl.Model_Composite_Boolean_Chlidren | Efl.Boolean_Model_Item |
| Efl.Model_Composite_Selection | Efl.Select_Model |
| Efl.Model_Composite_Selection_Chlidren | Efl.Select_Model_Item |
| Efl.Model_View | Efl.View_Model |
| Eio.Model | Efl.Io.Model |
| Efl.Ui.Model_State | Efl.Ui.State_Model |
| Efl.Ui.Model_Size | Efl.Ui.Size_Model |
| Efl.Ui.Model_Exact | Efl.Ui.Exact_Model |
| Efl.Ui.Model_Average | Efl.Ui.Average_Model |
| Efl.Ui.Model_Homogeneous | Efl.Ui.Homogeneous_Model |
I worried about Efl.Io.Model changes, cause it is widely used,
but as I tested, there is no issue found yet.
Eldbus.Model also may can changed Efl.Dbus.Model,
but I cannot found any class who using Efl.Dbus namespace,
so I left it future work.
Test Plan:
Run the Make Test,
it works well except Efl test about selection.
there are class inheritance problem exist in select_model,
I reported it and will fix it in another patch.
Reviewers: cedric, felipealmeida, woohyun, Hermet
Reviewed By: cedric
Subscribers: lauromoura
Tags: #efl, #do_not_merge
Differential Revision: https://phab.enlightenment.org/D7533
2019-01-30 20:35:34 -08:00
|
|
|
#include "efl_ui_homogeneous_model.eo.h"
|
|
|
|
#include "efl_ui_exact_model.eo.h"
|
|
|
|
#include "efl_ui_average_model.eo.h"
|
2019-01-11 17:59:31 -08:00
|
|
|
|
|
|
|
static const int child_number = 3;
|
|
|
|
static const int base_ints[] = { 41, 42, 43 };
|
2019-01-30 18:08:46 -08:00
|
|
|
static int expected_average[] = { 0, 0, 0 };
|
2019-01-11 17:59:31 -08:00
|
|
|
|
|
|
|
static Efl_Model *
|
|
|
|
_generate_base_model(void)
|
|
|
|
{
|
efl_model : rename all efl_model based classes.
Summary:
As the result of discussion in T7458,
we need to rename all efl_model based classes with efl_XXX_Model sequence.
I've run few vote for this, see V42, V43
few classes are totally renamed as our consideration of misnaming.
| Efl.Model_Loop | Efl.Loop_Model |
| Efl.Model_Item | Efl.Generic_Model |
| Efl.Model_Container | Efl.Container_Model |
| Efl.Model_Container_Item | Efl.Container_Model_Item |
| Efl.Model_Composite | Efl.Composite_Model |
| Efl.Model_Composite_Boolean | Efl.Boolean_Model |
| Efl.Model_Composite_Boolean_Chlidren | Efl.Boolean_Model_Item |
| Efl.Model_Composite_Selection | Efl.Select_Model |
| Efl.Model_Composite_Selection_Chlidren | Efl.Select_Model_Item |
| Efl.Model_View | Efl.View_Model |
| Eio.Model | Efl.Io.Model |
| Efl.Ui.Model_State | Efl.Ui.State_Model |
| Efl.Ui.Model_Size | Efl.Ui.Size_Model |
| Efl.Ui.Model_Exact | Efl.Ui.Exact_Model |
| Efl.Ui.Model_Average | Efl.Ui.Average_Model |
| Efl.Ui.Model_Homogeneous | Efl.Ui.Homogeneous_Model |
I worried about Efl.Io.Model changes, cause it is widely used,
but as I tested, there is no issue found yet.
Eldbus.Model also may can changed Efl.Dbus.Model,
but I cannot found any class who using Efl.Dbus namespace,
so I left it future work.
Test Plan:
Run the Make Test,
it works well except Efl test about selection.
there are class inheritance problem exist in select_model,
I reported it and will fix it in another patch.
Reviewers: cedric, felipealmeida, woohyun, Hermet
Reviewed By: cedric
Subscribers: lauromoura
Tags: #efl, #do_not_merge
Differential Revision: https://phab.enlightenment.org/D7533
2019-01-30 20:35:34 -08:00
|
|
|
Efl_Generic_Model *base_model, *child;
|
2019-01-11 17:59:31 -08:00
|
|
|
Eina_Value v;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
eina_value_setup(&v, EINA_VALUE_TYPE_INT);
|
|
|
|
|
efl_model : rename all efl_model based classes.
Summary:
As the result of discussion in T7458,
we need to rename all efl_model based classes with efl_XXX_Model sequence.
I've run few vote for this, see V42, V43
few classes are totally renamed as our consideration of misnaming.
| Efl.Model_Loop | Efl.Loop_Model |
| Efl.Model_Item | Efl.Generic_Model |
| Efl.Model_Container | Efl.Container_Model |
| Efl.Model_Container_Item | Efl.Container_Model_Item |
| Efl.Model_Composite | Efl.Composite_Model |
| Efl.Model_Composite_Boolean | Efl.Boolean_Model |
| Efl.Model_Composite_Boolean_Chlidren | Efl.Boolean_Model_Item |
| Efl.Model_Composite_Selection | Efl.Select_Model |
| Efl.Model_Composite_Selection_Chlidren | Efl.Select_Model_Item |
| Efl.Model_View | Efl.View_Model |
| Eio.Model | Efl.Io.Model |
| Efl.Ui.Model_State | Efl.Ui.State_Model |
| Efl.Ui.Model_Size | Efl.Ui.Size_Model |
| Efl.Ui.Model_Exact | Efl.Ui.Exact_Model |
| Efl.Ui.Model_Average | Efl.Ui.Average_Model |
| Efl.Ui.Model_Homogeneous | Efl.Ui.Homogeneous_Model |
I worried about Efl.Io.Model changes, cause it is widely used,
but as I tested, there is no issue found yet.
Eldbus.Model also may can changed Efl.Dbus.Model,
but I cannot found any class who using Efl.Dbus namespace,
so I left it future work.
Test Plan:
Run the Make Test,
it works well except Efl test about selection.
there are class inheritance problem exist in select_model,
I reported it and will fix it in another patch.
Reviewers: cedric, felipealmeida, woohyun, Hermet
Reviewed By: cedric
Subscribers: lauromoura
Tags: #efl, #do_not_merge
Differential Revision: https://phab.enlightenment.org/D7533
2019-01-30 20:35:34 -08:00
|
|
|
base_model = efl_add_ref(EFL_GENERIC_MODEL_CLASS, efl_main_loop_get());
|
2019-01-11 17:59:31 -08:00
|
|
|
ck_assert(!!base_model);
|
|
|
|
for (i = 0; i < child_number; ++i)
|
|
|
|
{
|
|
|
|
child = efl_model_child_add(base_model);
|
|
|
|
ck_assert(!!child);
|
|
|
|
ck_assert(eina_value_set(&v, base_ints[i]));
|
|
|
|
efl_model_property_set(child, "test_p_int", &v);
|
|
|
|
}
|
|
|
|
eina_value_flush(&v);
|
|
|
|
|
|
|
|
return base_model;
|
|
|
|
}
|
|
|
|
|
|
|
|
static Eina_Error
|
|
|
|
_property_error_expected(Efl_Model *model, const char *property)
|
|
|
|
{
|
|
|
|
Eina_Value *v;
|
|
|
|
Eina_Error err = 0;
|
|
|
|
|
|
|
|
v = efl_model_property_get(model, property);
|
|
|
|
ck_assert_ptr_eq(eina_value_type_get(v), EINA_VALUE_TYPE_ERROR);
|
|
|
|
ck_assert(eina_value_error_get(v, &err));
|
|
|
|
eina_value_free(v);
|
|
|
|
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
|
|
|
|
static unsigned int
|
|
|
|
_property_uint_expected(Efl_Model *model, const char *property)
|
|
|
|
{
|
|
|
|
Eina_Value *v;
|
|
|
|
unsigned int r = 0;
|
|
|
|
|
|
|
|
v = efl_model_property_get(model, property);
|
|
|
|
ck_assert_ptr_eq(eina_value_type_get(v), EINA_VALUE_TYPE_UINT);
|
|
|
|
ck_assert(eina_value_uint_get(v, &r));
|
|
|
|
eina_value_free(v);
|
|
|
|
|
|
|
|
return r;
|
|
|
|
}
|
|
|
|
|
|
|
|
static Eina_Value
|
|
|
|
_child_should_succeed(Efl_Model *model EINA_UNUSED, void *data EINA_UNUSED, const Eina_Value v)
|
|
|
|
{
|
|
|
|
ck_assert_ptr_eq(eina_value_type_get(&v), EINA_VALUE_TYPE_ARRAY);
|
|
|
|
return v;
|
|
|
|
}
|
|
|
|
|
|
|
|
static Eina_Value
|
|
|
|
_child_should_fail(Efl_Model *model EINA_UNUSED, void *data, const Eina_Value v)
|
|
|
|
{
|
|
|
|
unsigned int i, len;
|
|
|
|
Eina_Value c = EINA_VALUE_EMPTY;
|
|
|
|
|
|
|
|
EINA_VALUE_ARRAY_FOREACH(&v, len, i, c)
|
|
|
|
{
|
|
|
|
if (eina_value_type_get(&c) != EINA_VALUE_TYPE_ERROR)
|
|
|
|
{
|
|
|
|
fprintf(stderr, "Request on child %i should have failed but got '%s'\n",
|
|
|
|
(int)(uintptr_t) data, eina_value_to_string(&c));
|
|
|
|
abort();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return eina_value_int_init(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
static Eina_Value
|
|
|
|
_total_succeed(Efl_Model *model EINA_UNUSED, void *data EINA_UNUSED, const Eina_Value v)
|
|
|
|
{
|
|
|
|
efl_loop_quit(efl_loop_get(model), eina_value_string_init("BOOM"));
|
|
|
|
return v;
|
|
|
|
}
|
|
|
|
|
|
|
|
static Eina_Value
|
|
|
|
_total_failed(Efl_Model *model EINA_UNUSED, void *data EINA_UNUSED, Eina_Error err)
|
|
|
|
{
|
|
|
|
fprintf(stderr, "Shouldn't have failed: '%s'\n", eina_error_msg_get(err));
|
|
|
|
efl_loop_quit(efl_loop_get(model), eina_value_int_init(42));
|
|
|
|
return eina_value_error_init(err);
|
|
|
|
}
|
|
|
|
|
|
|
|
static Eina_Value
|
|
|
|
_children_homogeneous_slice_get_then(Efl_Model *model, void *data EINA_UNUSED, const Eina_Value v)
|
|
|
|
{
|
|
|
|
unsigned int i, len;
|
|
|
|
Efl_Model *child = NULL;
|
|
|
|
Eina_Future *all[4] = { NULL, NULL, NULL, EINA_FUTURE_SENTINEL };
|
|
|
|
Eina_Future *f;
|
|
|
|
|
|
|
|
fail_if(eina_value_type_get(&v) != EINA_VALUE_TYPE_ARRAY);
|
|
|
|
|
|
|
|
EINA_VALUE_ARRAY_FOREACH(&v, len, i, child)
|
|
|
|
{
|
|
|
|
ck_assert_int_eq(_property_error_expected(child, "self.width"), EAGAIN);
|
|
|
|
ck_assert_int_eq(_property_error_expected(child, "self.height"), EAGAIN);
|
|
|
|
}
|
|
|
|
|
|
|
|
EINA_VALUE_ARRAY_FOREACH(&v, len, i, child)
|
|
|
|
{
|
|
|
|
Eina_Value *v;
|
|
|
|
unsigned int w, h;
|
|
|
|
|
|
|
|
v = efl_model_property_get(child, "test_p_int");
|
|
|
|
eina_value_uint_convert(v, &w);
|
|
|
|
eina_value_uint_convert(v, &h);
|
|
|
|
eina_value_free(v);
|
|
|
|
|
|
|
|
w *= 2;
|
|
|
|
h *= 3;
|
|
|
|
|
|
|
|
all[i] = eina_future_all(efl_model_property_set(child, "self.width", eina_value_uint_new(w)),
|
|
|
|
efl_model_property_set(child, "self.height", eina_value_uint_new(h)));
|
|
|
|
|
|
|
|
if (i == 0)
|
|
|
|
all[i] = efl_future_then(model, all[i], .success = _child_should_succeed);
|
|
|
|
else
|
|
|
|
all[i] = efl_future_then(model, all[i],
|
|
|
|
.success = _child_should_fail,
|
|
|
|
.success_type = EINA_VALUE_TYPE_ARRAY,
|
|
|
|
.data = (void*)(uintptr_t) i);
|
|
|
|
}
|
|
|
|
|
|
|
|
f = eina_future_all_array(all);
|
|
|
|
f = efl_future_then(model, f, .success = _total_succeed, .error = _total_failed);
|
|
|
|
return eina_future_as_value(f);
|
|
|
|
}
|
|
|
|
|
efl_model : rename all efl_model based classes.
Summary:
As the result of discussion in T7458,
we need to rename all efl_model based classes with efl_XXX_Model sequence.
I've run few vote for this, see V42, V43
few classes are totally renamed as our consideration of misnaming.
| Efl.Model_Loop | Efl.Loop_Model |
| Efl.Model_Item | Efl.Generic_Model |
| Efl.Model_Container | Efl.Container_Model |
| Efl.Model_Container_Item | Efl.Container_Model_Item |
| Efl.Model_Composite | Efl.Composite_Model |
| Efl.Model_Composite_Boolean | Efl.Boolean_Model |
| Efl.Model_Composite_Boolean_Chlidren | Efl.Boolean_Model_Item |
| Efl.Model_Composite_Selection | Efl.Select_Model |
| Efl.Model_Composite_Selection_Chlidren | Efl.Select_Model_Item |
| Efl.Model_View | Efl.View_Model |
| Eio.Model | Efl.Io.Model |
| Efl.Ui.Model_State | Efl.Ui.State_Model |
| Efl.Ui.Model_Size | Efl.Ui.Size_Model |
| Efl.Ui.Model_Exact | Efl.Ui.Exact_Model |
| Efl.Ui.Model_Average | Efl.Ui.Average_Model |
| Efl.Ui.Model_Homogeneous | Efl.Ui.Homogeneous_Model |
I worried about Efl.Io.Model changes, cause it is widely used,
but as I tested, there is no issue found yet.
Eldbus.Model also may can changed Efl.Dbus.Model,
but I cannot found any class who using Efl.Dbus namespace,
so I left it future work.
Test Plan:
Run the Make Test,
it works well except Efl test about selection.
there are class inheritance problem exist in select_model,
I reported it and will fix it in another patch.
Reviewers: cedric, felipealmeida, woohyun, Hermet
Reviewed By: cedric
Subscribers: lauromoura
Tags: #efl, #do_not_merge
Differential Revision: https://phab.enlightenment.org/D7533
2019-01-30 20:35:34 -08:00
|
|
|
EFL_START_TEST(efl_ui_homogeneous_model_test)
|
2019-01-11 17:59:31 -08:00
|
|
|
{
|
efl_model : rename all efl_model based classes.
Summary:
As the result of discussion in T7458,
we need to rename all efl_model based classes with efl_XXX_Model sequence.
I've run few vote for this, see V42, V43
few classes are totally renamed as our consideration of misnaming.
| Efl.Model_Loop | Efl.Loop_Model |
| Efl.Model_Item | Efl.Generic_Model |
| Efl.Model_Container | Efl.Container_Model |
| Efl.Model_Container_Item | Efl.Container_Model_Item |
| Efl.Model_Composite | Efl.Composite_Model |
| Efl.Model_Composite_Boolean | Efl.Boolean_Model |
| Efl.Model_Composite_Boolean_Chlidren | Efl.Boolean_Model_Item |
| Efl.Model_Composite_Selection | Efl.Select_Model |
| Efl.Model_Composite_Selection_Chlidren | Efl.Select_Model_Item |
| Efl.Model_View | Efl.View_Model |
| Eio.Model | Efl.Io.Model |
| Efl.Ui.Model_State | Efl.Ui.State_Model |
| Efl.Ui.Model_Size | Efl.Ui.Size_Model |
| Efl.Ui.Model_Exact | Efl.Ui.Exact_Model |
| Efl.Ui.Model_Average | Efl.Ui.Average_Model |
| Efl.Ui.Model_Homogeneous | Efl.Ui.Homogeneous_Model |
I worried about Efl.Io.Model changes, cause it is widely used,
but as I tested, there is no issue found yet.
Eldbus.Model also may can changed Efl.Dbus.Model,
but I cannot found any class who using Efl.Dbus namespace,
so I left it future work.
Test Plan:
Run the Make Test,
it works well except Efl test about selection.
there are class inheritance problem exist in select_model,
I reported it and will fix it in another patch.
Reviewers: cedric, felipealmeida, woohyun, Hermet
Reviewed By: cedric
Subscribers: lauromoura
Tags: #efl, #do_not_merge
Differential Revision: https://phab.enlightenment.org/D7533
2019-01-30 20:35:34 -08:00
|
|
|
Efl_Generic_Model *base_model, *model;
|
2019-01-11 17:59:31 -08:00
|
|
|
Eina_Value *ret__;
|
|
|
|
Eina_Future *future;
|
|
|
|
int real__;
|
|
|
|
|
|
|
|
base_model = _generate_base_model();
|
|
|
|
|
efl_model : rename all efl_model based classes.
Summary:
As the result of discussion in T7458,
we need to rename all efl_model based classes with efl_XXX_Model sequence.
I've run few vote for this, see V42, V43
few classes are totally renamed as our consideration of misnaming.
| Efl.Model_Loop | Efl.Loop_Model |
| Efl.Model_Item | Efl.Generic_Model |
| Efl.Model_Container | Efl.Container_Model |
| Efl.Model_Container_Item | Efl.Container_Model_Item |
| Efl.Model_Composite | Efl.Composite_Model |
| Efl.Model_Composite_Boolean | Efl.Boolean_Model |
| Efl.Model_Composite_Boolean_Chlidren | Efl.Boolean_Model_Item |
| Efl.Model_Composite_Selection | Efl.Select_Model |
| Efl.Model_Composite_Selection_Chlidren | Efl.Select_Model_Item |
| Efl.Model_View | Efl.View_Model |
| Eio.Model | Efl.Io.Model |
| Efl.Ui.Model_State | Efl.Ui.State_Model |
| Efl.Ui.Model_Size | Efl.Ui.Size_Model |
| Efl.Ui.Model_Exact | Efl.Ui.Exact_Model |
| Efl.Ui.Model_Average | Efl.Ui.Average_Model |
| Efl.Ui.Model_Homogeneous | Efl.Ui.Homogeneous_Model |
I worried about Efl.Io.Model changes, cause it is widely used,
but as I tested, there is no issue found yet.
Eldbus.Model also may can changed Efl.Dbus.Model,
but I cannot found any class who using Efl.Dbus namespace,
so I left it future work.
Test Plan:
Run the Make Test,
it works well except Efl test about selection.
there are class inheritance problem exist in select_model,
I reported it and will fix it in another patch.
Reviewers: cedric, felipealmeida, woohyun, Hermet
Reviewed By: cedric
Subscribers: lauromoura
Tags: #efl, #do_not_merge
Differential Revision: https://phab.enlightenment.org/D7533
2019-01-30 20:35:34 -08:00
|
|
|
model = efl_add_ref(EFL_UI_HOMOGENEOUS_MODEL_CLASS, efl_main_loop_get(),
|
2019-01-11 17:59:31 -08:00
|
|
|
efl_ui_view_model_set(efl_added, base_model));
|
|
|
|
ck_assert(!!model);
|
|
|
|
|
|
|
|
future = efl_model_children_slice_get(model, 0, efl_model_children_count_get(model));
|
|
|
|
efl_future_then(model, future, .success = _children_homogeneous_slice_get_then);
|
|
|
|
|
|
|
|
ck_assert_int_eq(_property_error_expected(model, "total.width"), EAGAIN);
|
|
|
|
ck_assert_int_eq(_property_error_expected(model, "total.height"), EAGAIN);
|
|
|
|
ck_assert_int_eq(_property_error_expected(model, "item.width"), EAGAIN);
|
|
|
|
ck_assert_int_eq(_property_error_expected(model, "item.height"), EAGAIN);
|
|
|
|
|
2019-02-09 09:45:27 -08:00
|
|
|
ret__ = efl_loop_begin(efl_app_main_get());
|
2019-01-11 17:59:31 -08:00
|
|
|
real__ = efl_loop_exit_code_process(ret__);
|
|
|
|
fail_if(real__ != 0);
|
|
|
|
|
|
|
|
ck_assert_int_eq(_property_uint_expected(model, "total.width"), base_ints[0] * 2);
|
|
|
|
ck_assert_int_eq(_property_uint_expected(model, "total.height"), base_ints[0] * 3 * 3);
|
|
|
|
ck_assert_int_eq(_property_uint_expected(model, "item.width"), base_ints[0] * 2);
|
|
|
|
ck_assert_int_eq(_property_uint_expected(model, "item.height"), base_ints[0] * 3);
|
|
|
|
}
|
|
|
|
EFL_END_TEST
|
|
|
|
|
2019-01-16 14:11:51 -08:00
|
|
|
static Eina_Value
|
|
|
|
_children_exact_slice_get_then(Efl_Model *model, void *data EINA_UNUSED, const Eina_Value v)
|
|
|
|
{
|
|
|
|
unsigned int i, len;
|
|
|
|
Efl_Model *child = NULL;
|
|
|
|
Eina_Future *all[4] = { NULL, NULL, NULL, EINA_FUTURE_SENTINEL };
|
|
|
|
Eina_Future *f;
|
|
|
|
|
|
|
|
fail_if(eina_value_type_get(&v) != EINA_VALUE_TYPE_ARRAY);
|
|
|
|
|
|
|
|
EINA_VALUE_ARRAY_FOREACH(&v, len, i, child)
|
|
|
|
{
|
|
|
|
ck_assert_int_eq(_property_uint_expected(child, "self.width"), 0);
|
|
|
|
ck_assert_int_eq(_property_uint_expected(child, "self.height"), 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
EINA_VALUE_ARRAY_FOREACH(&v, len, i, child)
|
|
|
|
{
|
|
|
|
Eina_Value *v;
|
|
|
|
unsigned int w, h;
|
|
|
|
|
|
|
|
v = efl_model_property_get(child, "test_p_int");
|
|
|
|
eina_value_uint_convert(v, &w);
|
|
|
|
eina_value_uint_convert(v, &h);
|
|
|
|
eina_value_free(v);
|
|
|
|
|
|
|
|
w *= 2;
|
|
|
|
h *= 3;
|
|
|
|
|
|
|
|
all[i] = eina_future_all(efl_model_property_set(child, "self.width", eina_value_uint_new(w)),
|
|
|
|
efl_model_property_set(child, "self.height", eina_value_uint_new(h)));
|
|
|
|
all[i] = efl_future_then(model, all[i], .success = _child_should_succeed);
|
|
|
|
}
|
|
|
|
|
|
|
|
f = eina_future_all_array(all);
|
|
|
|
f = efl_future_then(model, f, .success = _total_succeed, .error = _total_failed);
|
|
|
|
return eina_future_as_value(f);
|
|
|
|
}
|
|
|
|
|
efl_model : rename all efl_model based classes.
Summary:
As the result of discussion in T7458,
we need to rename all efl_model based classes with efl_XXX_Model sequence.
I've run few vote for this, see V42, V43
few classes are totally renamed as our consideration of misnaming.
| Efl.Model_Loop | Efl.Loop_Model |
| Efl.Model_Item | Efl.Generic_Model |
| Efl.Model_Container | Efl.Container_Model |
| Efl.Model_Container_Item | Efl.Container_Model_Item |
| Efl.Model_Composite | Efl.Composite_Model |
| Efl.Model_Composite_Boolean | Efl.Boolean_Model |
| Efl.Model_Composite_Boolean_Chlidren | Efl.Boolean_Model_Item |
| Efl.Model_Composite_Selection | Efl.Select_Model |
| Efl.Model_Composite_Selection_Chlidren | Efl.Select_Model_Item |
| Efl.Model_View | Efl.View_Model |
| Eio.Model | Efl.Io.Model |
| Efl.Ui.Model_State | Efl.Ui.State_Model |
| Efl.Ui.Model_Size | Efl.Ui.Size_Model |
| Efl.Ui.Model_Exact | Efl.Ui.Exact_Model |
| Efl.Ui.Model_Average | Efl.Ui.Average_Model |
| Efl.Ui.Model_Homogeneous | Efl.Ui.Homogeneous_Model |
I worried about Efl.Io.Model changes, cause it is widely used,
but as I tested, there is no issue found yet.
Eldbus.Model also may can changed Efl.Dbus.Model,
but I cannot found any class who using Efl.Dbus namespace,
so I left it future work.
Test Plan:
Run the Make Test,
it works well except Efl test about selection.
there are class inheritance problem exist in select_model,
I reported it and will fix it in another patch.
Reviewers: cedric, felipealmeida, woohyun, Hermet
Reviewed By: cedric
Subscribers: lauromoura
Tags: #efl, #do_not_merge
Differential Revision: https://phab.enlightenment.org/D7533
2019-01-30 20:35:34 -08:00
|
|
|
EFL_START_TEST(efl_ui_exact_model_test)
|
2019-01-16 14:11:51 -08:00
|
|
|
{
|
efl_model : rename all efl_model based classes.
Summary:
As the result of discussion in T7458,
we need to rename all efl_model based classes with efl_XXX_Model sequence.
I've run few vote for this, see V42, V43
few classes are totally renamed as our consideration of misnaming.
| Efl.Model_Loop | Efl.Loop_Model |
| Efl.Model_Item | Efl.Generic_Model |
| Efl.Model_Container | Efl.Container_Model |
| Efl.Model_Container_Item | Efl.Container_Model_Item |
| Efl.Model_Composite | Efl.Composite_Model |
| Efl.Model_Composite_Boolean | Efl.Boolean_Model |
| Efl.Model_Composite_Boolean_Chlidren | Efl.Boolean_Model_Item |
| Efl.Model_Composite_Selection | Efl.Select_Model |
| Efl.Model_Composite_Selection_Chlidren | Efl.Select_Model_Item |
| Efl.Model_View | Efl.View_Model |
| Eio.Model | Efl.Io.Model |
| Efl.Ui.Model_State | Efl.Ui.State_Model |
| Efl.Ui.Model_Size | Efl.Ui.Size_Model |
| Efl.Ui.Model_Exact | Efl.Ui.Exact_Model |
| Efl.Ui.Model_Average | Efl.Ui.Average_Model |
| Efl.Ui.Model_Homogeneous | Efl.Ui.Homogeneous_Model |
I worried about Efl.Io.Model changes, cause it is widely used,
but as I tested, there is no issue found yet.
Eldbus.Model also may can changed Efl.Dbus.Model,
but I cannot found any class who using Efl.Dbus namespace,
so I left it future work.
Test Plan:
Run the Make Test,
it works well except Efl test about selection.
there are class inheritance problem exist in select_model,
I reported it and will fix it in another patch.
Reviewers: cedric, felipealmeida, woohyun, Hermet
Reviewed By: cedric
Subscribers: lauromoura
Tags: #efl, #do_not_merge
Differential Revision: https://phab.enlightenment.org/D7533
2019-01-30 20:35:34 -08:00
|
|
|
Efl_Generic_Model *base_model, *model;
|
2019-01-16 14:11:51 -08:00
|
|
|
Eina_Future *future;
|
|
|
|
Eina_Value *ret__;
|
|
|
|
int real__;
|
|
|
|
|
|
|
|
base_model = _generate_base_model();
|
|
|
|
|
efl_model : rename all efl_model based classes.
Summary:
As the result of discussion in T7458,
we need to rename all efl_model based classes with efl_XXX_Model sequence.
I've run few vote for this, see V42, V43
few classes are totally renamed as our consideration of misnaming.
| Efl.Model_Loop | Efl.Loop_Model |
| Efl.Model_Item | Efl.Generic_Model |
| Efl.Model_Container | Efl.Container_Model |
| Efl.Model_Container_Item | Efl.Container_Model_Item |
| Efl.Model_Composite | Efl.Composite_Model |
| Efl.Model_Composite_Boolean | Efl.Boolean_Model |
| Efl.Model_Composite_Boolean_Chlidren | Efl.Boolean_Model_Item |
| Efl.Model_Composite_Selection | Efl.Select_Model |
| Efl.Model_Composite_Selection_Chlidren | Efl.Select_Model_Item |
| Efl.Model_View | Efl.View_Model |
| Eio.Model | Efl.Io.Model |
| Efl.Ui.Model_State | Efl.Ui.State_Model |
| Efl.Ui.Model_Size | Efl.Ui.Size_Model |
| Efl.Ui.Model_Exact | Efl.Ui.Exact_Model |
| Efl.Ui.Model_Average | Efl.Ui.Average_Model |
| Efl.Ui.Model_Homogeneous | Efl.Ui.Homogeneous_Model |
I worried about Efl.Io.Model changes, cause it is widely used,
but as I tested, there is no issue found yet.
Eldbus.Model also may can changed Efl.Dbus.Model,
but I cannot found any class who using Efl.Dbus namespace,
so I left it future work.
Test Plan:
Run the Make Test,
it works well except Efl test about selection.
there are class inheritance problem exist in select_model,
I reported it and will fix it in another patch.
Reviewers: cedric, felipealmeida, woohyun, Hermet
Reviewed By: cedric
Subscribers: lauromoura
Tags: #efl, #do_not_merge
Differential Revision: https://phab.enlightenment.org/D7533
2019-01-30 20:35:34 -08:00
|
|
|
model = efl_add_ref(EFL_UI_EXACT_MODEL_CLASS, efl_main_loop_get(),
|
2019-01-16 14:11:51 -08:00
|
|
|
efl_ui_view_model_set(efl_added, base_model));
|
|
|
|
ck_assert(!!model);
|
|
|
|
|
|
|
|
future = efl_model_children_slice_get(model, 0, efl_model_children_count_get(model));
|
|
|
|
efl_future_then(model, future, .success = _children_exact_slice_get_then);
|
|
|
|
|
|
|
|
ck_assert_int_eq(_property_uint_expected(model, "total.width"), 0);
|
|
|
|
ck_assert_int_eq(_property_uint_expected(model, "total.height"), 0);
|
|
|
|
ck_assert_int_eq(_property_error_expected(model, "item.width"), EAGAIN);
|
|
|
|
ck_assert_int_eq(_property_error_expected(model, "item.height"), EAGAIN);
|
|
|
|
|
2019-02-09 09:45:27 -08:00
|
|
|
ret__ = efl_loop_begin(efl_app_main_get());
|
2019-01-16 14:11:51 -08:00
|
|
|
real__ = efl_loop_exit_code_process(ret__);
|
|
|
|
fail_if(real__ != 0);
|
|
|
|
|
|
|
|
ck_assert_int_eq(_property_uint_expected(model, "total.width"), base_ints[2] * 2);
|
|
|
|
ck_assert_int_eq(_property_uint_expected(model, "total.height"), base_ints[0] * 3 + base_ints[1] * 3 + base_ints[2] * 3);
|
|
|
|
}
|
|
|
|
EFL_END_TEST
|
|
|
|
|
2019-01-30 18:08:46 -08:00
|
|
|
static Eina_Value
|
|
|
|
_child_updated_average(Efl_Model *model, void *data, const Eina_Value v)
|
|
|
|
{
|
|
|
|
Eina_Value *r;
|
|
|
|
int *ex = data;
|
|
|
|
int got = 0;
|
|
|
|
|
|
|
|
r = efl_model_property_get(model, "total.height");
|
|
|
|
ck_assert(eina_value_int_convert(r, &got));
|
|
|
|
ck_assert_int_eq(got, *ex);
|
|
|
|
eina_value_free(r);
|
|
|
|
|
|
|
|
return v;
|
|
|
|
}
|
|
|
|
|
|
|
|
static Eina_Value
|
|
|
|
_children_average_slice_get_then(Efl_Model *model, void *data EINA_UNUSED, const Eina_Value v)
|
|
|
|
{
|
|
|
|
unsigned int i, len;
|
|
|
|
Efl_Model *child = NULL;
|
|
|
|
Eina_Future *all[4] = { NULL, NULL, NULL, EINA_FUTURE_SENTINEL };
|
|
|
|
Eina_Future *f;
|
|
|
|
|
|
|
|
fail_if(eina_value_type_get(&v) != EINA_VALUE_TYPE_ARRAY);
|
|
|
|
|
|
|
|
EINA_VALUE_ARRAY_FOREACH(&v, len, i, child)
|
|
|
|
{
|
|
|
|
ck_assert_int_eq(_property_uint_expected(child, "self.width"), 0);
|
|
|
|
ck_assert_int_eq(_property_uint_expected(child, "self.height"), 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
EINA_VALUE_ARRAY_FOREACH(&v, len, i, child)
|
|
|
|
{
|
|
|
|
Eina_Value *v;
|
|
|
|
unsigned int w, h;
|
|
|
|
|
|
|
|
v = efl_model_property_get(child, "test_p_int");
|
|
|
|
eina_value_uint_convert(v, &w);
|
|
|
|
eina_value_uint_convert(v, &h);
|
|
|
|
eina_value_free(v);
|
|
|
|
|
|
|
|
w *= 2;
|
|
|
|
h *= 3;
|
|
|
|
|
|
|
|
all[i] = eina_future_all(efl_model_property_set(child, "self.width", eina_value_uint_new(w)),
|
|
|
|
efl_model_property_set(child, "self.height", eina_value_uint_new(h)));
|
|
|
|
all[i] = efl_future_then(model, all[i], .success = _child_should_succeed);
|
|
|
|
|
|
|
|
// The model average is not updated until the property have succeeded, so we have
|
|
|
|
// to wait before we can fetch the property.
|
|
|
|
all[i] = efl_future_then(model, all[i], .success = _child_updated_average, .data = &expected_average[i]);
|
|
|
|
}
|
|
|
|
|
|
|
|
f = eina_future_all_array(all);
|
|
|
|
f = efl_future_then(model, f, .success = _total_succeed, .error = _total_failed);
|
|
|
|
return eina_future_as_value(f);
|
|
|
|
}
|
|
|
|
|
efl_model : rename all efl_model based classes.
Summary:
As the result of discussion in T7458,
we need to rename all efl_model based classes with efl_XXX_Model sequence.
I've run few vote for this, see V42, V43
few classes are totally renamed as our consideration of misnaming.
| Efl.Model_Loop | Efl.Loop_Model |
| Efl.Model_Item | Efl.Generic_Model |
| Efl.Model_Container | Efl.Container_Model |
| Efl.Model_Container_Item | Efl.Container_Model_Item |
| Efl.Model_Composite | Efl.Composite_Model |
| Efl.Model_Composite_Boolean | Efl.Boolean_Model |
| Efl.Model_Composite_Boolean_Chlidren | Efl.Boolean_Model_Item |
| Efl.Model_Composite_Selection | Efl.Select_Model |
| Efl.Model_Composite_Selection_Chlidren | Efl.Select_Model_Item |
| Efl.Model_View | Efl.View_Model |
| Eio.Model | Efl.Io.Model |
| Efl.Ui.Model_State | Efl.Ui.State_Model |
| Efl.Ui.Model_Size | Efl.Ui.Size_Model |
| Efl.Ui.Model_Exact | Efl.Ui.Exact_Model |
| Efl.Ui.Model_Average | Efl.Ui.Average_Model |
| Efl.Ui.Model_Homogeneous | Efl.Ui.Homogeneous_Model |
I worried about Efl.Io.Model changes, cause it is widely used,
but as I tested, there is no issue found yet.
Eldbus.Model also may can changed Efl.Dbus.Model,
but I cannot found any class who using Efl.Dbus namespace,
so I left it future work.
Test Plan:
Run the Make Test,
it works well except Efl test about selection.
there are class inheritance problem exist in select_model,
I reported it and will fix it in another patch.
Reviewers: cedric, felipealmeida, woohyun, Hermet
Reviewed By: cedric
Subscribers: lauromoura
Tags: #efl, #do_not_merge
Differential Revision: https://phab.enlightenment.org/D7533
2019-01-30 20:35:34 -08:00
|
|
|
EFL_START_TEST(efl_ui_average_model_test)
|
2019-01-30 18:08:46 -08:00
|
|
|
{
|
efl_model : rename all efl_model based classes.
Summary:
As the result of discussion in T7458,
we need to rename all efl_model based classes with efl_XXX_Model sequence.
I've run few vote for this, see V42, V43
few classes are totally renamed as our consideration of misnaming.
| Efl.Model_Loop | Efl.Loop_Model |
| Efl.Model_Item | Efl.Generic_Model |
| Efl.Model_Container | Efl.Container_Model |
| Efl.Model_Container_Item | Efl.Container_Model_Item |
| Efl.Model_Composite | Efl.Composite_Model |
| Efl.Model_Composite_Boolean | Efl.Boolean_Model |
| Efl.Model_Composite_Boolean_Chlidren | Efl.Boolean_Model_Item |
| Efl.Model_Composite_Selection | Efl.Select_Model |
| Efl.Model_Composite_Selection_Chlidren | Efl.Select_Model_Item |
| Efl.Model_View | Efl.View_Model |
| Eio.Model | Efl.Io.Model |
| Efl.Ui.Model_State | Efl.Ui.State_Model |
| Efl.Ui.Model_Size | Efl.Ui.Size_Model |
| Efl.Ui.Model_Exact | Efl.Ui.Exact_Model |
| Efl.Ui.Model_Average | Efl.Ui.Average_Model |
| Efl.Ui.Model_Homogeneous | Efl.Ui.Homogeneous_Model |
I worried about Efl.Io.Model changes, cause it is widely used,
but as I tested, there is no issue found yet.
Eldbus.Model also may can changed Efl.Dbus.Model,
but I cannot found any class who using Efl.Dbus namespace,
so I left it future work.
Test Plan:
Run the Make Test,
it works well except Efl test about selection.
there are class inheritance problem exist in select_model,
I reported it and will fix it in another patch.
Reviewers: cedric, felipealmeida, woohyun, Hermet
Reviewed By: cedric
Subscribers: lauromoura
Tags: #efl, #do_not_merge
Differential Revision: https://phab.enlightenment.org/D7533
2019-01-30 20:35:34 -08:00
|
|
|
Efl_Generic_Model *base_model, *model;
|
2019-01-30 18:08:46 -08:00
|
|
|
Eina_Future *future;
|
|
|
|
Eina_Value *ret__;
|
|
|
|
int real__;
|
|
|
|
|
|
|
|
base_model = _generate_base_model();
|
|
|
|
|
efl_model : rename all efl_model based classes.
Summary:
As the result of discussion in T7458,
we need to rename all efl_model based classes with efl_XXX_Model sequence.
I've run few vote for this, see V42, V43
few classes are totally renamed as our consideration of misnaming.
| Efl.Model_Loop | Efl.Loop_Model |
| Efl.Model_Item | Efl.Generic_Model |
| Efl.Model_Container | Efl.Container_Model |
| Efl.Model_Container_Item | Efl.Container_Model_Item |
| Efl.Model_Composite | Efl.Composite_Model |
| Efl.Model_Composite_Boolean | Efl.Boolean_Model |
| Efl.Model_Composite_Boolean_Chlidren | Efl.Boolean_Model_Item |
| Efl.Model_Composite_Selection | Efl.Select_Model |
| Efl.Model_Composite_Selection_Chlidren | Efl.Select_Model_Item |
| Efl.Model_View | Efl.View_Model |
| Eio.Model | Efl.Io.Model |
| Efl.Ui.Model_State | Efl.Ui.State_Model |
| Efl.Ui.Model_Size | Efl.Ui.Size_Model |
| Efl.Ui.Model_Exact | Efl.Ui.Exact_Model |
| Efl.Ui.Model_Average | Efl.Ui.Average_Model |
| Efl.Ui.Model_Homogeneous | Efl.Ui.Homogeneous_Model |
I worried about Efl.Io.Model changes, cause it is widely used,
but as I tested, there is no issue found yet.
Eldbus.Model also may can changed Efl.Dbus.Model,
but I cannot found any class who using Efl.Dbus namespace,
so I left it future work.
Test Plan:
Run the Make Test,
it works well except Efl test about selection.
there are class inheritance problem exist in select_model,
I reported it and will fix it in another patch.
Reviewers: cedric, felipealmeida, woohyun, Hermet
Reviewed By: cedric
Subscribers: lauromoura
Tags: #efl, #do_not_merge
Differential Revision: https://phab.enlightenment.org/D7533
2019-01-30 20:35:34 -08:00
|
|
|
model = efl_add_ref(EFL_UI_AVERAGE_MODEL_CLASS, efl_main_loop_get(),
|
2019-01-30 18:08:46 -08:00
|
|
|
efl_ui_view_model_set(efl_added, base_model));
|
|
|
|
ck_assert(!!model);
|
|
|
|
|
|
|
|
future = efl_model_children_slice_get(model, 0, efl_model_children_count_get(model));
|
|
|
|
efl_future_then(model, future, .success = _children_average_slice_get_then);
|
|
|
|
|
|
|
|
ck_assert_int_eq(_property_uint_expected(model, "total.width"), 0);
|
|
|
|
ck_assert_int_eq(_property_uint_expected(model, "total.height"), 0);
|
|
|
|
ck_assert_int_eq(_property_error_expected(model, "item.width"), EAGAIN);
|
|
|
|
ck_assert_int_eq(_property_error_expected(model, "item.height"), EAGAIN);
|
|
|
|
|
2019-02-09 09:45:27 -08:00
|
|
|
ret__ = efl_loop_begin(efl_app_main_get());
|
2019-01-30 18:08:46 -08:00
|
|
|
real__ = efl_loop_exit_code_process(ret__);
|
|
|
|
fail_if(real__ != 0);
|
|
|
|
|
|
|
|
ck_assert_int_eq(_property_uint_expected(model, "total.width"), base_ints[2] * 2);
|
|
|
|
ck_assert_int_eq(_property_uint_expected(model, "total.height"), base_ints[0] * 3 + base_ints[1] * 3 + base_ints[2] * 3);
|
|
|
|
}
|
|
|
|
EFL_END_TEST
|
|
|
|
|
2019-01-11 17:59:31 -08:00
|
|
|
void
|
|
|
|
efl_ui_model(TCase *tc)
|
|
|
|
{
|
2019-01-30 18:08:46 -08:00
|
|
|
// This is done here as some system can not initialize computed value from another data at compile time.
|
|
|
|
expected_average[0] = base_ints[0] * 3 * 3;
|
|
|
|
expected_average[1] = ((base_ints[0] * 3 + base_ints[1] * 3) * 3) / 2;
|
|
|
|
expected_average[2] = base_ints[0] * 3 + base_ints[1] * 3 + base_ints[2] * 3;
|
|
|
|
|
efl_model : rename all efl_model based classes.
Summary:
As the result of discussion in T7458,
we need to rename all efl_model based classes with efl_XXX_Model sequence.
I've run few vote for this, see V42, V43
few classes are totally renamed as our consideration of misnaming.
| Efl.Model_Loop | Efl.Loop_Model |
| Efl.Model_Item | Efl.Generic_Model |
| Efl.Model_Container | Efl.Container_Model |
| Efl.Model_Container_Item | Efl.Container_Model_Item |
| Efl.Model_Composite | Efl.Composite_Model |
| Efl.Model_Composite_Boolean | Efl.Boolean_Model |
| Efl.Model_Composite_Boolean_Chlidren | Efl.Boolean_Model_Item |
| Efl.Model_Composite_Selection | Efl.Select_Model |
| Efl.Model_Composite_Selection_Chlidren | Efl.Select_Model_Item |
| Efl.Model_View | Efl.View_Model |
| Eio.Model | Efl.Io.Model |
| Efl.Ui.Model_State | Efl.Ui.State_Model |
| Efl.Ui.Model_Size | Efl.Ui.Size_Model |
| Efl.Ui.Model_Exact | Efl.Ui.Exact_Model |
| Efl.Ui.Model_Average | Efl.Ui.Average_Model |
| Efl.Ui.Model_Homogeneous | Efl.Ui.Homogeneous_Model |
I worried about Efl.Io.Model changes, cause it is widely used,
but as I tested, there is no issue found yet.
Eldbus.Model also may can changed Efl.Dbus.Model,
but I cannot found any class who using Efl.Dbus namespace,
so I left it future work.
Test Plan:
Run the Make Test,
it works well except Efl test about selection.
there are class inheritance problem exist in select_model,
I reported it and will fix it in another patch.
Reviewers: cedric, felipealmeida, woohyun, Hermet
Reviewed By: cedric
Subscribers: lauromoura
Tags: #efl, #do_not_merge
Differential Revision: https://phab.enlightenment.org/D7533
2019-01-30 20:35:34 -08:00
|
|
|
tcase_add_test(tc, efl_ui_homogeneous_model_test);
|
|
|
|
tcase_add_test(tc, efl_ui_average_model_test);
|
|
|
|
tcase_add_test(tc, efl_ui_exact_model_test);
|
2019-01-11 17:59:31 -08:00
|
|
|
}
|