Exemplo n.º 1
0
static void create_global_keys ()
{
    g_key = gelektra_key_new ("user/key", GELEKTRA_KEY_VALUE, "value", GELEKTRA_KEY_OWNER, "myowner", GELEKTRA_KEY_COMMENT, "mycomment",
                              GELEKTRA_KEY_UID, "123", GELEKTRA_KEY_GID, 456, GELEKTRA_KEY_MODE, 0644, GELEKTRA_KEY_ATIME, 123,
                              GELEKTRA_KEY_MTIME, "456", GELEKTRA_KEY_CTIME, 789, GELEKTRA_KEY_DIR, GELEKTRA_KEY_META, "by", "manuel",
                              GELEKTRA_KEY_NULL, GELEKTRA_KEY_END);
    succeed_if (g_key != NULL, "unable to create key");
    succeed_if (gelektra_key_isvalid (g_key), "key should be valid");
    succeed_if (gelektra_key_getref (g_key) == 1, "refcount should be 1");

    g_bkey = gelektra_key_new ("system/bkey", GELEKTRA_KEY_BINARY, GELEKTRA_KEY_VALUE, "bvalue\0\0", GELEKTRA_KEY_END);
    succeed_if (g_bkey != NULL, "unable to create key");
    succeed_if (gelektra_key_isvalid (g_bkey), "key should be valid");
    succeed_if (gelektra_key_getref (g_bkey) == 1, "refcount should be 1");
}
Exemplo n.º 2
0
static void test_basic ()
{
    GElektraKey * key;

    key = gelektra_key_dup (g_key);
    gelektra_key_incref (key);
    succeed_if (gelektra_key_getref (key) == 2, "refcount should be 2");
    succeed_if (gelektra_key_getref (g_key) == 1, "refcount should be still 1");
    gelektra_key_decref (key);
    succeed_if (gelektra_key_getref (key) == 1, "refcount should be 1 again");
    g_object_unref (key);

    gchar * name;
    key = gelektra_key_new ("user/bar", GELEKTRA_KEY_END);
    gelektra_key_copy (g_key, key);
    g_object_get (key, "name", &name, NULL);
    succeed_if (!strcmp (name, "user/key"), "wrong value");
    g_free (name);

    gelektra_key_clear (key);
    g_object_get (key, "name", &name, NULL);
    succeed_if (!strcmp (name, ""), "wrong value");
    g_free (name);

    g_object_unref (key);
}
Exemplo n.º 3
0
static void test_iterating (void)
{
	GElektraKeySet * ks;
	GElektraKey *key1, *key2, *tmpkey;

	key1 = gelektra_key_new ("user/a", GELEKTRA_KEY_END);
	g_object_ref (key1);
	key2 = gelektra_key_new ("user/c", GELEKTRA_KEY_END);
	g_object_ref (key2);
	ks = gelektra_keyset_new (3, key1, gelektra_key_new ("user/b", GELEKTRA_KEY_END), key2, GELEKTRA_KEYSET_END);

	guint cnt = 0;
	gelektra_keyset_rewind (ks);
	while ((tmpkey = gelektra_keyset_next (ks)) != NULL)
	{
		GElektraKey * curkey = gelektra_keyset_current (ks);
		succeed_if (gelektra_key_cmp (tmpkey, curkey) == 0, "iterators returned different keys");
		g_object_unref (curkey);

		succeed_if (gelektra_keyset_getcursor (ks) == cnt, "cursor is at unexpected position");

		++cnt;
		g_object_unref (tmpkey);
	}
	succeed_if (cnt == 3, "some keys are missing");

	tmpkey = gelektra_keyset_head (ks);
	succeed_if (gelektra_key_cmp (tmpkey, key1) == 0, "keyset_head returned unexpected key");
	g_object_unref (tmpkey);

	tmpkey = gelektra_keyset_tail (ks);
	succeed_if (gelektra_key_cmp (tmpkey, key2) == 0, "keyset_tail returned unexpected key");
	g_object_unref (tmpkey);

	tmpkey = gelektra_keyset_atcursor (ks, 0);
	succeed_if (gelektra_key_cmp (tmpkey, key1) == 0, "keyset_atcursor returned unexpected key");
	g_object_unref (tmpkey);

	gelektra_keyset_setcursor (ks, 1);
	succeed_if (gelektra_keyset_getcursor (ks) == 1, "cursor is at unexpected position");

	g_object_unref (key1);
	g_object_unref (key2);
	g_object_unref (ks);
}
Exemplo n.º 4
0
static void test_searching (void)
{
	GElektraKeySet * ks;
	GElektraKey *key1, *key2;
	const char * name = "user/bar";

	key1 = gelektra_key_new (name, GELEKTRA_KEY_END);
	g_object_ref (key1);
	ks = gelektra_keyset_new (3, gelektra_key_new ("user/foo", GELEKTRA_KEY_END), key1,
				  gelektra_key_new ("user/foobar", GELEKTRA_KEY_END), GELEKTRA_KEYSET_END);

	key2 = gelektra_keyset_lookup (ks, key1, GELEKTRA_KDB_O_NONE);
	succeed_if (gelektra_key_cmp (key1, key2) == 0, "lookup returned different key");
	g_object_unref (key2);

	key2 = gelektra_keyset_lookup_byname (ks, name, GELEKTRA_KDB_O_NONE);
	succeed_if (gelektra_key_cmp (key1, key2) == 0, "lookup returned different key");
	g_object_unref (key2);

	g_object_unref (key1);
	g_object_unref (ks);
}
Exemplo n.º 5
0
static void test_basic (void)
{
	GElektraKeySet *ks1, *ks2;
	GElektraKey * key;

	ks1 = gelektra_keyset_new (0);
	succeed_if (gelektra_keyset_len (ks1) == 0, "len must be 0");

	gelektra_keyset_append (ks1, gelektra_key_new ("user/foo", GELEKTRA_KEY_END));
	succeed_if (gelektra_keyset_len (ks1) == 1, "len must be 1");

	ks2 = gelektra_keyset_dup (ks1);
	succeed_if (gelektra_keyset_len (ks2) == 1, "len must be 1");

	gelektra_keyset_clear (ks2);
	succeed_if (gelektra_keyset_len (ks2) == 0, "len must be 0");

	gelektra_keyset_copy (ks1, ks2);
	succeed_if (gelektra_keyset_len (ks2) == 1, "len must be 1 again");

	gelektra_keyset_clear (ks2);
	gelektra_keyset_append (ks2, gelektra_key_new ("user/bar", GELEKTRA_KEY_END));
	gelektra_keyset_append_keyset (ks1, ks2);
	succeed_if (gelektra_keyset_len (ks1) == 2, "len must be 2");

	key = gelektra_keyset_pop (ks1);
	succeed_if (gelektra_keyset_len (ks1) == 1, "len must be 1 again");
	g_object_unref (key);

	key = gelektra_key_new ("user", GELEKTRA_KEY_END);
	ks2 = gelektra_keyset_cut (ks1, key);
	succeed_if (gelektra_keyset_len (ks2) == 1, "len must be 1");
	g_object_unref (key);
	g_object_unref (ks2);

	g_object_unref (ks1);
}
Exemplo n.º 6
0
static void test_ctor (void)
{
	GElektraKeySet * ks;

	ks = gelektra_keyset_new (0);
	succeed_if (ks != NULL, "unable to create keyset");
	g_object_unref (ks);

	GElektraKey * key = gelektra_key_new ("user/foo", GELEKTRA_KEY_END);
	ks = gelektra_keyset_new (10, key, GELEKTRA_KEYSET_END);
	succeed_if (ks != NULL, "unable to create keyset");
	g_object_unref (ks);

	KeySet * cks = ksNew (0, KS_END);
	ks = gelektra_keyset_make (cks);
	succeed_if (ks->keyset == cks, "new keyset not wrapped");
	g_object_unref (ks);
}
Exemplo n.º 7
0
static void test_validating ()
{
    succeed_if (!gelektra_key_isnull (g_key), "key is null");
    succeed_if (gelektra_key_isvalid (g_key), "key is not valid");
    succeed_if (gelektra_key_isuser (g_key), "key is not user");
    succeed_if (!gelektra_key_issystem (g_key), "key is system");
    succeed_if (gelektra_key_isstring (g_key), "key is not string");
    succeed_if (!gelektra_key_isbinary (g_key), "key is binary");
    succeed_if (!gelektra_key_isinactive (g_key), "key is inactive");

    succeed_if (!gelektra_key_isuser (g_bkey), "key is user");
    succeed_if (gelektra_key_issystem (g_bkey), "key is not system");
    succeed_if (!gelektra_key_isstring (g_bkey), "key is string");
    succeed_if (gelektra_key_isbinary (g_bkey), "key is not binary");

    GElektraKey * key = gelektra_key_new ("user/key/glib/edy", GELEKTRA_KEY_END);
    succeed_if (gelektra_key_isbelow (key, g_key), "key not below g_key");
    succeed_if (gelektra_key_isbeloworsame (key, g_key), "key not below g_key");
    succeed_if (gelektra_key_isbeloworsame (g_key, g_key), "key is not key :)");
    succeed_if (!gelektra_key_isdirectbelow (key, g_key), "key not direct below g_key");
    g_object_unref (key);
}
Exemplo n.º 8
0
static void test_ctor ()
{
    GElektraKey * key;

    key = gelektra_key_new (NULL);
    succeed_if (key != NULL, "unable to create key");
    succeed_if (!gelektra_key_isvalid (key), "key should be invalid");
    g_object_unref (key);

    key = g_object_new (GELEKTRA_TYPE_KEY, NULL);
    succeed_if (key != NULL, "unable to create key");
    succeed_if (!gelektra_key_isvalid (key), "key should be invalid");
    g_object_unref (key);

    key = gelektra_key_new ("wrongname", GELEKTRA_KEY_END);
    succeed_if (key != NULL, "unable to create key");
    succeed_if (!gelektra_key_isvalid (key), "key should be invalid");
    g_object_unref (key);

    Key * ckey = keyNew (NULL);
    key = gelektra_key_make (ckey);
    succeed_if (key->key == ckey, "new key not wrapped");
    g_object_unref (key);

    key = gelektra_key_new ("user/foo", GELEKTRA_KEY_END);
    succeed_if (key != NULL, "unable to create key");
    succeed_if (gelektra_key_isvalid (key), "key should be valid");
    succeed_if (gelektra_key_getref (key) == 1, "refcount should be 1");
    g_object_unref (key);

    key = gelektra_key_new ("/cascading", GELEKTRA_KEY_END);
    succeed_if (key != NULL, "unable to create key");
    succeed_if (gelektra_key_isvalid (key), "key should be valid");
    succeed_if (gelektra_key_getref (key) == 1, "refcount should be 1");
    g_object_unref (key);

    key = gelektra_key_new ("spec/key", GELEKTRA_KEY_END);
    succeed_if (key != NULL, "unable to create key");
    succeed_if (gelektra_key_isvalid (key), "key should be valid");
    succeed_if (gelektra_key_getref (key) == 1, "refcount should be 1");
    g_object_unref (key);

    key = gelektra_key_new ("proc/key", GELEKTRA_KEY_END);
    succeed_if (key != NULL, "unable to create key");
    succeed_if (gelektra_key_isvalid (key), "key should be valid");
    succeed_if (gelektra_key_getref (key) == 1, "refcount should be 1");
    g_object_unref (key);

    key = gelektra_key_new ("dir/key", GELEKTRA_KEY_END);
    succeed_if (key != NULL, "unable to create key");
    succeed_if (gelektra_key_isvalid (key), "key should be valid");
    succeed_if (gelektra_key_getref (key) == 1, "refcount should be 1");
    g_object_unref (key);

    key = gelektra_key_new ("user/key", GELEKTRA_KEY_END);
    succeed_if (key != NULL, "unable to create key");
    succeed_if (gelektra_key_isvalid (key), "key should be valid");
    succeed_if (gelektra_key_getref (key) == 1, "refcount should be 1");
    g_object_unref (key);

    key = gelektra_key_new ("system/key", GELEKTRA_KEY_END);
    succeed_if (key != NULL, "unable to create key");
    succeed_if (gelektra_key_isvalid (key), "key should be valid");
    succeed_if (gelektra_key_getref (key) == 1, "refcount should be 1");
    g_object_unref (key);
}