diff options
Diffstat (limited to 'libraries/eina/src/tests/eina_test_value.c')
-rw-r--r-- | libraries/eina/src/tests/eina_test_value.c | 109 |
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 | } |
1779 | END_TEST | 1809 | END_TEST |
1780 | 1810 | ||
1811 | |||
1812 | START_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 | } | ||
1853 | END_TEST | ||
1854 | |||
1781 | void | 1855 | void |
1782 | eina_test_value(TCase *tc) | 1856 | eina_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 | } |