aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/eina/src/tests/eina_test_value.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--libraries/eina/src/tests/eina_test_value.c109
1 files changed, 92 insertions, 17 deletions
diff --git a/libraries/eina/src/tests/eina_test_value.c b/libraries/eina/src/tests/eina_test_value.c
index 2d04c2f..94a5ab7 100644
--- a/libraries/eina/src/tests/eina_test_value.c
+++ b/libraries/eina/src/tests/eina_test_value.c
@@ -1140,8 +1140,10 @@ START_TEST(eina_value_test_array)
1140 fail_unless(eina_inarray_append(inarray, &c) >= 0); 1140 fail_unless(eina_inarray_append(inarray, &c) >= 0);
1141 desc.subtype = EINA_VALUE_TYPE_CHAR; 1141 desc.subtype = EINA_VALUE_TYPE_CHAR;
1142 desc.step = 0; 1142 desc.step = 0;
1143 desc.array = inarray; /* will be adopted and freed by value */ 1143 desc.array = inarray;
1144 fail_unless(eina_value_set(value, desc)); /* manually configure */ 1144 fail_unless(eina_value_set(value, desc)); /* manually configure */
1145 eina_inarray_free(inarray);
1146
1145 fail_unless(eina_value_array_get(value, 0, &c)); 1147 fail_unless(eina_value_array_get(value, 0, &c));
1146 fail_unless(c == 11); 1148 fail_unless(c == 11);
1147 fail_unless(eina_value_array_get(value, 1, &c)); 1149 fail_unless(eina_value_array_get(value, 1, &c));
@@ -1242,11 +1244,13 @@ START_TEST(eina_value_test_list)
1242 1244
1243 desc.subtype = EINA_VALUE_TYPE_STRING; 1245 desc.subtype = EINA_VALUE_TYPE_STRING;
1244 desc.list = NULL; 1246 desc.list = NULL;
1245 desc.list = eina_list_append(desc.list, strdup("hello")); 1247 desc.list = eina_list_append(desc.list, "hello");
1246 desc.list = eina_list_append(desc.list, strdup("world")); 1248 desc.list = eina_list_append(desc.list, "world");
1247 desc.list = eina_list_append(desc.list, strdup("eina")); 1249 desc.list = eina_list_append(desc.list, "eina");
1248 fail_unless(eina_list_count(desc.list) == 3); 1250 fail_unless(eina_list_count(desc.list) == 3);
1249 fail_unless(eina_value_set(value, desc)); 1251 fail_unless(eina_value_set(value, desc));
1252 eina_list_free(desc.list);
1253
1250 fail_unless(eina_value_list_get(value, 0, &s)); 1254 fail_unless(eina_value_list_get(value, 0, &s));
1251 fail_unless(s != NULL); 1255 fail_unless(s != NULL);
1252 fail_unless(strcmp(s, "hello") == 0); 1256 fail_unless(strcmp(s, "hello") == 0);
@@ -1351,14 +1355,17 @@ START_TEST(eina_value_test_hash)
1351 fail_unless(desc.hash != NULL); 1355 fail_unless(desc.hash != NULL);
1352 /* watch out hash pointer is to a size of subtype->value_size! */ 1356 /* watch out hash pointer is to a size of subtype->value_size! */
1353 ptr = malloc(sizeof(char *)); 1357 ptr = malloc(sizeof(char *));
1354 *ptr = strdup("there"); 1358 *ptr = "there";
1355 fail_unless(eina_hash_add(desc.hash, "hi", ptr)); 1359 fail_unless(eina_hash_add(desc.hash, "hi", ptr));
1356 ptr = malloc(sizeof(char *)); 1360 ptr = malloc(sizeof(char *));
1357 *ptr = strdup("y"); 1361 *ptr = "y";
1358 fail_unless(eina_hash_add(desc.hash, "x", ptr)); 1362 fail_unless(eina_hash_add(desc.hash, "x", ptr));
1359
1360 fail_unless(eina_value_set(value, desc)); 1363 fail_unless(eina_value_set(value, desc));
1361 1364
1365 free(eina_hash_find(desc.hash, "hi"));
1366 free(eina_hash_find(desc.hash, "x"));
1367 eina_hash_free(desc.hash);
1368
1362 fail_unless(eina_value_hash_get(value, "hi", &s)); 1369 fail_unless(eina_value_hash_get(value, "hi", &s));
1363 fail_unless(s != NULL); 1370 fail_unless(s != NULL);
1364 fail_unless(strcmp(s, "there") == 0); 1371 fail_unless(strcmp(s, "there") == 0);
@@ -1606,6 +1613,20 @@ START_TEST(eina_value_test_struct)
1606 fail_unless(eina_value_struct_get(value, "c", &c)); 1613 fail_unless(eina_value_struct_get(value, "c", &c));
1607 fail_unless(c == 0xf); 1614 fail_unless(c == 0xf);
1608 1615
1616 fail_unless(eina_value_struct_member_value_get
1617 (value, myst_members + 0, &other));
1618 fail_unless(other.type == EINA_VALUE_TYPE_INT);
1619 fail_unless(eina_value_get(&other, &i));
1620 fail_unless(i == 5678);
1621 eina_value_flush(&other);
1622
1623 fail_unless(eina_value_struct_member_value_get
1624 (value, myst_members + 1, &other));
1625 fail_unless(other.type == EINA_VALUE_TYPE_CHAR);
1626 fail_unless(eina_value_get(&other, &c));
1627 fail_unless(c = 0xf);
1628 eina_value_flush(&other);
1629
1609 str = eina_value_to_string(value); 1630 str = eina_value_to_string(value);
1610 fail_unless(str != NULL); 1631 fail_unless(str != NULL);
1611 fail_unless(strcmp(str, "{i: 5678, c: 15}") == 0); 1632 fail_unless(strcmp(str, "{i: 5678, c: 15}") == 0);
@@ -1704,6 +1725,7 @@ START_TEST(eina_value_test_struct)
1704 fail_unless(strcmp(str, "{a: 1, b: 2, c: 3, d: 4, e: 5, f: 6, g: 7, h: 8, i: 9, j: 10, k: 12, l: 13, m: 14, n: 15, o: 16, p: 17, q: 18, r: 19, s: 20, t: 21, u: 22, v: 23, x: 24}") == 0); 1725 fail_unless(strcmp(str, "{a: 1, b: 2, c: 3, d: 4, e: 5, f: 6, g: 7, h: 8, i: 9, j: 10, k: 12, l: 13, m: 14, n: 15, o: 16, p: 17, q: 18, r: 19, s: 20, t: 21, u: 22, v: 23, x: 24}") == 0);
1705 free(str); 1726 free(str);
1706 1727
1728 eina_value_flush(&other);
1707 eina_value_free(value); 1729 eina_value_free(value);
1708 eina_shutdown(); 1730 eina_shutdown();
1709} 1731}
@@ -1728,7 +1750,7 @@ START_TEST(eina_value_test_array_of_struct)
1728 EINA_VALUE_STRUCT_OPERATIONS_BINSEARCH, 1750 EINA_VALUE_STRUCT_OPERATIONS_BINSEARCH,
1729 myst_members, 4, sizeof(struct myst) 1751 myst_members, 4, sizeof(struct myst)
1730 }; 1752 };
1731 Eina_Value *value; 1753 Eina_Value *value, array_item;
1732 char *str; 1754 char *str;
1733 int i; 1755 int i;
1734 1756
@@ -1740,20 +1762,17 @@ START_TEST(eina_value_test_array_of_struct)
1740 for (i = 0; i < 10; i++) 1762 for (i = 0; i < 10; i++)
1741 { 1763 {
1742 Eina_Value_Struct desc; 1764 Eina_Value_Struct desc;
1743 struct myst *st; 1765 struct myst st;
1744 char buf[64]; 1766 char buf[64];
1745 1767
1746 snprintf(buf, sizeof(buf), "item%02d", i); 1768 snprintf(buf, sizeof(buf), "item%02d", i);
1747 st = malloc(sizeof(struct myst)); 1769 st.a = i;
1748 fail_unless(st != NULL); 1770 st.b = i * 10;
1749 st->a = i; 1771 st.c = i * 100;
1750 st->b = i * 10; 1772 st.s = buf;
1751 st->c = i * 100;
1752 st->s = strdup(buf);
1753 fail_unless(st->s != NULL);
1754 1773
1755 desc.desc = &myst_desc; 1774 desc.desc = &myst_desc;
1756 desc.memory = st; 1775 desc.memory = &st;
1757 fail_unless(eina_value_array_append(value, desc)); 1776 fail_unless(eina_value_array_append(value, desc));
1758 } 1777 }
1759 1778
@@ -1773,11 +1792,66 @@ START_TEST(eina_value_test_array_of_struct)
1773 "]") == 0); 1792 "]") == 0);
1774 free(str); 1793 free(str);
1775 1794
1795 eina_value_array_value_get(value, 2, &array_item);
1796 eina_value_struct_get(&array_item, "a", &i);
1797 ck_assert_int_eq(i, 2);
1798 eina_value_struct_get(&array_item, "b", &i);
1799 ck_assert_int_eq(i, 20);
1800 eina_value_struct_get(&array_item, "c", &i);
1801 ck_assert_int_eq(i, 200);
1802 eina_value_struct_get(&array_item, "s", &str);
1803 ck_assert_str_eq(str, "item02");
1804 eina_value_flush(&array_item);
1805
1776 eina_value_free(value); 1806 eina_value_free(value);
1777 eina_shutdown(); 1807 eina_shutdown();
1778} 1808}
1779END_TEST 1809END_TEST
1780 1810
1811
1812START_TEST(eina_value_test_model)
1813{
1814 Eina_Value *value, inv;
1815 Eina_Model *model, *m;
1816 char *str;
1817
1818 eina_init();
1819
1820 value = eina_value_new(EINA_VALUE_TYPE_MODEL);
1821 fail_unless(value != NULL);
1822
1823 model = eina_model_new(EINA_MODEL_TYPE_GENERIC);
1824 fail_unless(model != NULL);
1825
1826 fail_unless(eina_value_setup(&inv, EINA_VALUE_TYPE_INT));
1827 fail_unless(eina_value_set(&inv, 1234));
1828 fail_unless(eina_model_property_set(model, "i", &inv));
1829 eina_value_flush(&inv);
1830
1831 fail_unless(eina_value_set(value, model));
1832 fail_unless(eina_model_refcount(model) == 2);
1833
1834 fail_unless(eina_value_get(value, &m));
1835 fail_unless(m == model);
1836 fail_unless(eina_model_refcount(m) == 2);
1837
1838 fail_unless(eina_value_pset(value, &model));
1839 fail_unless(eina_model_refcount(model) == 2);
1840
1841 str = eina_value_to_string(value);
1842 fail_unless(str != NULL);
1843 fail_unless(strcmp(str, "Eina_Model_Type_Generic({i: 1234}, [])") == 0);
1844 free(str);
1845
1846 eina_value_free(value);
1847
1848 fail_unless(eina_model_refcount(model) == 1);
1849 eina_model_unref(model);
1850
1851 eina_shutdown();
1852}
1853END_TEST
1854
1781void 1855void
1782eina_test_value(TCase *tc) 1856eina_test_value(TCase *tc)
1783{ 1857{
@@ -1796,4 +1870,5 @@ eina_test_value(TCase *tc)
1796 tcase_add_test(tc, eina_value_test_blob); 1870 tcase_add_test(tc, eina_value_test_blob);
1797 tcase_add_test(tc, eina_value_test_struct); 1871 tcase_add_test(tc, eina_value_test_struct);
1798 tcase_add_test(tc, eina_value_test_array_of_struct); 1872 tcase_add_test(tc, eina_value_test_array_of_struct);
1873 tcase_add_test(tc, eina_value_test_model);
1799} 1874}