//testing ui reflection on prefs data changes static Eina_Bool _elm_prefs_data_change(void *data) { Evas_Object *notify = data; Elm_Prefs_Data *prefs_data; Elm_Prefs_Item_Type type; Eina_Value value; prefs_data = evas_object_data_get(notify, "prefs_data"); if (elm_prefs_data_value_get(prefs_data, "main:universe", &type, &value)) { eina_value_set(&value, 42); elm_prefs_data_value_set(prefs_data, "main:universe", type, &value); } if (elm_prefs_data_value_get(prefs_data, "main:text", &type, &value)) { eina_value_set(&value, "This is a text field (:"); elm_prefs_data_value_set(prefs_data, "main:text", type, &value); } evas_object_show(notify); return ECORE_CALLBACK_RENEW; }
int main(int argc, char **argv) { Eina_Value vtv, vtz; struct timeval tv; struct timezone tz; char *s; eina_init(); eina_value_setup(&vtv, EINA_VALUE_TYPE_TIMEVAL); eina_value_setup(&vtz, &TZ_TYPE); gettimeofday(&tv, &tz); eina_value_set(&vtv, tv); eina_value_set(&vtz, tz); s = eina_value_to_string(&vtv); printf("time: %s\n", s); free(s); s = eina_value_to_string(&vtz); printf("timezone: %s\n", s); free(s); eina_value_flush(&vtz); eina_value_flush(&vtv); }
int main(void) { Eina_Model *m; char *s; int i; eina_init(); m = eina_model_new(EINA_MODEL_TYPE_GENERIC); eina_model_event_callback_add(m, "deleted", _cb_on_deleted, NULL); //Adding properties to model for (i = 0; i < 5; i++) { Eina_Value val; char name[2] = {'a'+ i, 0}; eina_value_setup(&val, EINA_VALUE_TYPE_INT); eina_value_set(&val, i); eina_model_property_set(m, name, &val); eina_value_flush(&val); } //Adding children to model for (i = 0; i < 5; i++) { Eina_Value val; Eina_Model *c = eina_model_new(EINA_MODEL_TYPE_GENERIC); eina_value_setup(&val, EINA_VALUE_TYPE_INT); eina_value_set(&val, i); eina_model_property_set(c, "x", &val); eina_model_event_callback_add(c, "deleted", _cb_on_deleted, NULL); eina_model_child_append(m, c); //Now that the child has been appended to a model, it's parent will manage it's lifecycle eina_model_unref(c); eina_value_flush(&val); } s = eina_model_to_string(m); printf("model as string:\n%s\n", s); free(s); eina_model_unref(m); eina_shutdown(); return 0; }
END_TEST static Eina_Model * eina_model_test_iterator_setup(unsigned int *count_del) { Eina_Model *m; int i; m = eina_model_new(EINA_MODEL_TYPE_GENERIC); fail_unless(m != NULL); eina_model_event_callback_add (m, "deleted", _eina_test_model_cb_count, count_del); for (i = 0; i < 5; i++) { Eina_Value val; Eina_Model *c = eina_model_new(EINA_MODEL_TYPE_GENERIC); fail_unless(c != NULL); fail_unless(eina_value_setup(&val, EINA_VALUE_TYPE_INT)); fail_unless(eina_value_set(&val, i)); fail_unless(eina_model_property_set(c, "x", &val)); eina_model_event_callback_add (c, "deleted", _eina_test_model_cb_count, count_del); fail_unless(eina_model_child_append(m, c) >= 0); eina_model_unref(c); eina_value_flush(&val); } return m; }
//testing ui reflection on prefs data changes static Eina_Bool _elm_prefs_items_change(void *data) { Evas_Object *prefs, *notify = data; Elm_Prefs_Data *prefs_data; Elm_Prefs_Item_Type type; Eina_Value value; prefs = evas_object_data_get(notify, "prefs"); prefs_data = evas_object_data_get(notify, "prefs_data"); visible = !visible; elm_prefs_item_visible_set(prefs, "main:floatsp", visible); disabled = !disabled; elm_prefs_item_disabled_set(prefs, "main:checkb", disabled); editable = !editable; elm_prefs_item_editable_set(prefs, "main:text", editable); if (elm_prefs_data_value_get(prefs_data, "main:text", &type, &value)) { eina_value_set(&value, editable ? "This is a editable text entry" : "This is a non-editable text entry"); elm_prefs_data_value_set(prefs_data, "main:text", type, &value); } evas_object_show(notify); return ECORE_CALLBACK_RENEW; }
static void _action_cb(void *data, Evas_Object *obj, void *event_info) { Evas_Object *notify = data; Elm_Prefs_Data *prefs_data; Elm_Prefs_Item_Type type; Eina_Value value; prefs_data = evas_object_data_get(notify, "prefs_data"); if (elm_prefs_data_value_get(prefs_data, "main:text", &type, &value)) { eina_value_set(&value, "Action!"); elm_prefs_data_value_set(prefs_data, "main:text", type, &value); } }
END_TEST START_TEST(property_set) { Eina_Value value; Efl_Future *future; // Nonexistent property must raise ERROR eina_value_setup(&value, EINA_VALUE_TYPE_INT); eina_value_set(&value, 1); future = efl_model_property_set(object, "nonexistent", &value); check_efl_model_future_error(future, &EFL_MODEL_ERROR_NOT_FOUND); // UNIQUE_NAME_PROPERTY is read-only future = efl_model_property_set(object, UNIQUE_NAME_PROPERTY, &value); check_efl_model_future_error(future, &EFL_MODEL_ERROR_READ_ONLY); eina_value_flush(&value); }
static void esql_mysac_row_init(Esql_Row *r, MYSAC_ROW *row) { MYSAC_RES *res; MYSAC_ROWS *rows; struct mysac_list_head *l; Eina_Value *sval; unsigned int i, cols; res = r->res->backend.res; rows = res->cr; l = res->data.next; cols = res->nb_cols; sval = &(r->value); eina_value_struct_setup(sval, r->res->desc); for (i = 0; i < cols; i++, l = l->next, rows = mysac_container_of(l, MYSAC_ROWS, link)) { Eina_Value val; const Eina_Value_Struct_Member *m = r->res->desc->members + i; switch (res->cols[i].type) { case MYSQL_TYPE_TIME: eina_value_setup(&val, EINA_VALUE_TYPE_DOUBLE); eina_value_set(&val, (double)row[i].tv.tv_sec + (double)((double)row[i].tv.tv_usec / (double) 1000000)); break; case MYSQL_TYPE_YEAR: case MYSQL_TYPE_TIMESTAMP: case MYSQL_TYPE_DATETIME: case MYSQL_TYPE_DATE: eina_value_setup(&val, EINA_VALUE_TYPE_TIMESTAMP); eina_value_set(&val, (long)mktime(row[i].tm)); break; case MYSQL_TYPE_STRING: case MYSQL_TYPE_VARCHAR: case MYSQL_TYPE_VAR_STRING: eina_value_setup(&val, EINA_VALUE_TYPE_STRING); eina_value_set(&val, row[i].string); //cell->len = rows->lengths[i]; break; case MYSQL_TYPE_TINY_BLOB: case MYSQL_TYPE_MEDIUM_BLOB: case MYSQL_TYPE_LONG_BLOB: case MYSQL_TYPE_BLOB: { Eina_Value_Blob blob; blob.ops = NULL; blob.memory = row[i].string; blob.size = rows->lengths[i]; eina_value_setup(&val, EINA_VALUE_TYPE_BLOB); eina_value_set(&val, blob); break; } case MYSQL_TYPE_TINY: eina_value_setup(&val, EINA_VALUE_TYPE_CHAR); eina_value_set(&val, row[i].stiny); break; case MYSQL_TYPE_SHORT: eina_value_setup(&val, EINA_VALUE_TYPE_SHORT); eina_value_set(&val, row[i].ssmall); break; case MYSQL_TYPE_LONG: case MYSQL_TYPE_INT24: eina_value_setup(&val, EINA_VALUE_TYPE_LONG); eina_value_set(&val, row[i].sint); break; case MYSQL_TYPE_DECIMAL: case MYSQL_TYPE_NEWDECIMAL: case MYSQL_TYPE_LONGLONG: eina_value_setup(&val, EINA_VALUE_TYPE_INT64); eina_value_set(&val, row[i].sbigint); break; case MYSQL_TYPE_FLOAT: eina_value_setup(&val, EINA_VALUE_TYPE_FLOAT); eina_value_set(&val, row[i].mfloat); break; case MYSQL_TYPE_DOUBLE: eina_value_setup(&val, EINA_VALUE_TYPE_DOUBLE); eina_value_set(&val, row[i].mdouble); break; default: ERR("FIXME: Got unknown column type %u!", res->cols[i].type); break; } eina_value_struct_member_value_set(sval, m, &val); eina_value_flush(&val); } }
END_TEST START_TEST(eina_model_test_deep_copy) { unsigned int count_del = 0; Eina_Model *m, *cp; char *s1, *s2; int i; eina_init(); m = eina_model_new(EINA_MODEL_TYPE_GENERIC); fail_unless(m != NULL); eina_model_event_callback_add (m, "deleted", _eina_test_model_cb_count, &count_del); for (i = 0; i < 5; i++) { Eina_Value val; char name[2] = {'a'+ i, 0}; fail_unless(eina_value_setup(&val, EINA_VALUE_TYPE_INT)); fail_unless(eina_value_set(&val, i)); fail_unless(eina_model_property_set(m, name, &val)); eina_value_flush(&val); } for (i = 0; i < 5; i++) { Eina_Value val; Eina_Model *c = eina_model_new(EINA_MODEL_TYPE_GENERIC); fail_unless(c != NULL); fail_unless(eina_value_setup(&val, EINA_VALUE_TYPE_INT)); fail_unless(eina_value_set(&val, i)); fail_unless(eina_model_property_set(c, "x", &val)); eina_model_event_callback_add (c, "deleted", _eina_test_model_cb_count, &count_del); fail_unless(eina_model_child_append(m, c) >= 0); eina_model_unref(c); eina_value_flush(&val); } s1 = eina_model_to_string(m); fail_unless(s1 != NULL); ck_assert_str_eq(s1, "Eina_Model_Type_Generic({a: 0, b: 1, c: 2, d: 3, e: 4}, [Eina_Model_Type_Generic({x: 0}, []), Eina_Model_Type_Generic({x: 1}, []), Eina_Model_Type_Generic({x: 2}, []), Eina_Model_Type_Generic({x: 3}, []), Eina_Model_Type_Generic({x: 4}, [])])"); cp = eina_model_deep_copy(m); fail_unless(cp != NULL); fail_unless(cp != m); eina_model_event_callback_add (cp, "deleted", _eina_test_model_cb_count, &count_del); s2 = eina_model_to_string(cp); fail_unless(s2 != NULL); ck_assert_str_eq(s1, s2); for (i = 0; i < 5; i++) { Eina_Model *c1 = eina_model_child_get(m, i); Eina_Model *c2 = eina_model_child_get(cp, i); fail_unless(c1 != NULL); fail_unless(c1 != c2); ck_assert_int_eq(eina_model_refcount(c1), 2); ck_assert_int_eq(eina_model_refcount(c2), 2); eina_model_event_callback_add (c2, "deleted", _eina_test_model_cb_count, &count_del); eina_model_unref(c1); eina_model_unref(c2); } free(s1); free(s2); ck_assert_int_eq(eina_model_refcount(m), 1); eina_model_unref(m); ck_assert_int_eq(eina_model_refcount(cp), 1); eina_model_unref(cp); ck_assert_int_eq(count_del, 2 + 10); eina_shutdown(); }