⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keyfile.c

📁 this is a glib for c language
💻 C
📖 第 1 页 / 共 3 页
字号:
  comment = g_key_file_get_comment (keyfile, "group3", NULL, &error);  check_error (&error, 	       G_KEY_FILE_ERROR,	       G_KEY_FILE_ERROR_GROUP_NOT_FOUND);  g_assert (comment == NULL);  g_key_file_free (keyfile);}/* check key and group listing */static voidtest_listing (void){  GKeyFile *keyfile;  gchar **names;  gsize len;  gchar *start;  GError *error = NULL;  const gchar *data =     "[group1]\n"    "key1=value1\n"    "key2=value2\n"    "[group2]\n"    "key3=value3\n"    "key4=value4\n";    keyfile = load_data (data, 0);  names = g_key_file_get_groups (keyfile, &len);  g_assert (names != NULL);  check_length ("groups", g_strv_length (names), len, 2);  check_name ("group name", names[0], "group1", 0);  check_name ("group name", names[1], "group2", 1);    g_strfreev (names);    names = g_key_file_get_keys (keyfile, "group1", &len, &error);  check_no_error (&error);  check_length ("keys", g_strv_length (names), len, 2);  check_name ("key", names[0], "key1", 0);  check_name ("key", names[1], "key2", 1);  g_strfreev (names);  names = g_key_file_get_keys (keyfile, "no-such-group", &len, &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_GROUP_NOT_FOUND);  g_strfreev (names);  g_assert (g_key_file_has_group (keyfile, "group1"));  g_assert (g_key_file_has_group (keyfile, "group2"));  g_assert (!g_key_file_has_group (keyfile, "group10"));  g_assert (!g_key_file_has_group (keyfile, "group20"));  start = g_key_file_get_start_group (keyfile);  g_assert_cmpstr (start, ==, "group1");  g_free (start);  g_assert (g_key_file_has_key (keyfile, "group1", "key1", &error));  check_no_error (&error);  g_assert (g_key_file_has_key (keyfile, "group2", "key3", &error));   check_no_error (&error);  g_assert (!g_key_file_has_key (keyfile, "group2", "no-such-key", NULL));     g_key_file_has_key (keyfile, "no-such-group", "key", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_GROUP_NOT_FOUND);  g_key_file_free (keyfile);}/* check parsing of string values */static voidtest_string (void){  GKeyFile *keyfile;  GError *error = NULL;  gchar *value;  const gchar *data =     "[valid]\n"    "key1=\\s\\n\\t\\r\\\\\n"    "key2=\"quoted\"\n"    "key3='quoted'\n"    "key4=\xe2\x89\xa0\xe2\x89\xa0\n"    "[invalid]\n"    "key1=\\a\\b\\0800xff\n"    "key2=blabla\\\n";    keyfile = load_data (data, 0);  check_string_value (keyfile, "valid", "key1", " \n\t\r\\");  check_string_value (keyfile, "valid", "key2", "\"quoted\"");  check_string_value (keyfile, "valid", "key3", "'quoted'");    check_string_value (keyfile, "valid", "key4", "\xe2\x89\xa0\xe2\x89\xa0");      value = g_key_file_get_string (keyfile, "invalid", "key1", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);  g_free (value);  value = g_key_file_get_string (keyfile, "invalid", "key2", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);  g_free (value);    g_key_file_free (keyfile);}/* check parsing of boolean values */static voidtest_boolean (void){  GKeyFile *keyfile;  GError *error = NULL;  const gchar *data =     "[valid]\n"    "key1=true\n"    "key2=false\n"    "key3=1\n"    "key4=0\n"    "[invalid]\n"    "key1=t\n"    "key2=f\n"    "key3=yes\n"    "key4=no\n";    keyfile = load_data (data, 0);  check_boolean_value (keyfile, "valid", "key1", TRUE);  check_boolean_value (keyfile, "valid", "key2", FALSE);  check_boolean_value (keyfile, "valid", "key3", TRUE);  check_boolean_value (keyfile, "valid", "key4", FALSE);  g_key_file_get_boolean (keyfile, "invalid", "key1", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);  g_key_file_get_boolean (keyfile, "invalid", "key2", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);  g_key_file_get_boolean (keyfile, "invalid", "key3", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);  g_key_file_get_boolean (keyfile, "invalid", "key4", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);  g_key_file_free (keyfile);}/* check parsing of integer and double values */static voidtest_number (void){  GKeyFile *keyfile;  GError *error = NULL;  const gchar *data =     "[valid]\n"    "key1=0\n"    "key2=1\n"    "key3=-1\n"    "key4=2324431\n"    "key5=-2324431\n"    "key6=000111\n"    "dkey1=000111\n"    "dkey2=145.45\n"    "dkey3=-3453.7\n"    "[invalid]\n"    "key1=0xffff\n"    "key2=0.5\n"    "key3=1e37\n"    "key4=ten\n"    "key5=\n"    "key6=1.0.0\n"    "key7=2x2\n"    "key8=abc\n";    keyfile = load_data (data, 0);  check_integer_value (keyfile, "valid", "key1", 0);  check_integer_value (keyfile, "valid", "key2", 1);  check_integer_value (keyfile, "valid", "key3", -1);  check_integer_value (keyfile, "valid", "key4", 2324431);  check_integer_value (keyfile, "valid", "key5", -2324431);  check_integer_value (keyfile, "valid", "key6", 111);  check_double_value (keyfile, "valid", "dkey1", 111.0);  check_double_value (keyfile, "valid", "dkey2", 145.45);  check_double_value (keyfile, "valid", "dkey3", -3453.7);  g_key_file_get_integer (keyfile, "invalid", "key1", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);  g_key_file_get_integer (keyfile, "invalid", "key2", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);  g_key_file_get_integer (keyfile, "invalid", "key3", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);  g_key_file_get_integer (keyfile, "invalid", "key4", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);  g_key_file_get_double (keyfile, "invalid", "key5", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);  g_key_file_get_double (keyfile, "invalid", "key6", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);  g_key_file_get_double (keyfile, "invalid", "key7", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);  g_key_file_get_double (keyfile, "invalid", "key8", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);  g_key_file_free (keyfile);}/* check handling of translated strings */static voidtest_locale_string (void){  GKeyFile *keyfile;  const gchar *data =     "[valid]\n"    "key1=v1\n"    "key1[de]=v1-de\n"    "key1[de_DE]=v1-de_DE\n"    "key1[de_DE.UTF8]=v1-de_DE.UTF8\n"    "key1[fr]=v1-fr\n"    "key1[en] =v1-en\n"    "key1[sr@Latn]=v1-sr\n";    keyfile = load_data (data, G_KEY_FILE_KEEP_TRANSLATIONS);  check_locale_string_value (keyfile, "valid", "key1", "it", "v1");  check_locale_string_value (keyfile, "valid", "key1", "de", "v1-de");  check_locale_string_value (keyfile, "valid", "key1", "de_DE", "v1-de_DE");  check_locale_string_value (keyfile, "valid", "key1", "de_DE.UTF8", "v1-de_DE.UTF8");  check_locale_string_value (keyfile, "valid", "key1", "fr", "v1-fr");  check_locale_string_value (keyfile, "valid", "key1", "fr_FR", "v1-fr");  check_locale_string_value (keyfile, "valid", "key1", "en", "v1-en");  check_locale_string_value (keyfile, "valid", "key1", "sr@Latn", "v1-sr");    g_key_file_free (keyfile);  /* now test that translations are thrown away */  g_setenv ("LANGUAGE", "de", TRUE);  setlocale (LC_ALL, "");  keyfile = load_data (data, 0);  check_locale_string_value (keyfile, "valid", "key1", "it", "v1");  check_locale_string_value (keyfile, "valid", "key1", "de", "v1-de");  check_locale_string_value (keyfile, "valid", "key1", "de_DE", "v1-de");  check_locale_string_value (keyfile, "valid", "key1", "de_DE.UTF8", "v1-de");  check_locale_string_value (keyfile, "valid", "key1", "fr", "v1");  check_locale_string_value (keyfile, "valid", "key1", "fr_FR", "v1");  check_locale_string_value (keyfile, "valid", "key1", "en", "v1");  g_key_file_free (keyfile);  }static voidtest_lists (void){  GKeyFile *keyfile;  const gchar *data =     "[valid]\n"    "key1=v1;v2\n"    "key2=v1;v2;\n"    "key3=v1,v2\n"    "key4=v1\\;v2\n"    "key5=true;false\n"    "key6=1;0;-1\n"    "key7= 1 ; 0 ; -1 \n"    "key8=v1\\,v2\n"    "key9=0;1.3456;-76532.456\n";    keyfile = load_data (data, 0);  check_string_list_value (keyfile, "valid", "key1", "v1", "v2", NULL);  check_string_list_value (keyfile, "valid", "key2", "v1", "v2", NULL);  check_string_list_value (keyfile, "valid", "key3", "v1,v2", NULL);  check_string_list_value (keyfile, "valid", "key4", "v1;v2", NULL);  check_boolean_list_value (keyfile, "valid", "key5", TRUE, FALSE, -100);  check_integer_list_value (keyfile, "valid", "key6", 1, 0, -1, -100);  check_double_list_value (keyfile, "valid", "key9", 0.0, 1.3456, -76532.456, -100.0);  /* maybe these should be valid */  /* check_integer_list_value (keyfile, "valid", "key7", 1, 0, -1, -100);*/  /* check_string_list_value (keyfile, "valid", "key8", "v1\\,v2", NULL);*/  g_key_file_free (keyfile);    /* Now check an alternate separator */  keyfile = load_data (data, 0);  g_key_file_set_list_separator (keyfile, ',');  check_string_list_value (keyfile, "valid", "key1", "v1;v2", NULL);  check_string_list_value (keyfile, "valid", "key2", "v1;v2;", NULL);  check_string_list_value (keyfile, "valid", "key3", "v1", "v2", NULL);  g_key_file_free (keyfile);  }static voidtest_lists_set_get (void){  GKeyFile *keyfile;  static const char * const strings[] = { "v1", "v2" };  static const char * const locale_strings[] = { "v1-l", "v2-l" };  static int integers[] = { 1, -1, 2 };  static gdouble doubles[] = { 3.14, 2.71 };    keyfile = g_key_file_new ();  g_key_file_set_string_list (keyfile, "group0", "key1", strings, G_N_ELEMENTS (strings));  g_key_file_set_locale_string_list (keyfile, "group0", "key1", "de", locale_strings, G_N_ELEMENTS (locale_strings));  g_key_file_set_integer_list (keyfile, "group0", "key2", integers, G_N_ELEMENTS (integers));  g_key_file_set_double_list (keyfile, "group0", "key3", doubles, G_N_ELEMENTS (doubles));  check_string_list_value (keyfile, "group0", "key1", strings[0], strings[1], NULL);  check_locale_string_list_value (keyfile, "group0", "key1", "de", locale_strings[0], locale_strings[1], NULL);  check_integer_list_value (keyfile, "group0", "key2", integers[0], integers[1], -100);  check_double_list_value (keyfile, "group0", "key3", doubles[0], doubles[1], -100.0);  g_key_file_free (keyfile);  /* and again with a different list separator */  keyfile = g_key_file_new ();  g_key_file_set_list_separator (keyfile, ',');  g_key_file_set_string_list (keyfile, "group0", "key1", strings, G_N_ELEMENTS (strings));  g_key_file_set_locale_string_list (keyfile, "group0", "key1", "de", locale_strings, G_N_ELEMENTS (locale_strings));  g_key_file_set_integer_list (keyfile, "group0", "key2", integers, G_N_ELEMENTS (integers));  g_key_file_set_double_list (keyfile, "group0", "key3", doubles, G_N_ELEMENTS (doubles));  check_string_list_value (keyfile, "group0", "key1", strings[0], strings[1], NULL);  check_locale_string_list_value (keyfile, "group0", "key1", "de", locale_strings[0], locale_strings[1], NULL);  check_integer_list_value (keyfile, "group0", "key2", integers[0], integers[1], -100);  check_double_list_value (keyfile, "group0", "key3", doubles[0], doubles[1], -100.0);  g_key_file_free (keyfile);}static voidtest_group_remove (void){  GKeyFile *keyfile;  gchar **names;  gsize len;  GError *error = NULL;  const gchar *data =     "[group1]\n"    "[group2]\n"    "key1=bla\n"    "key2=bla\n"    "[group3]\n"    "key1=bla\n"    "key2=bla\n";    g_test_bug ("165887");  keyfile = load_data (data, 0);    names = g_key_file_get_groups (keyfile, &len);  g_assert (names != NULL);  check_length ("groups", g_strv_length (names), len, 3);  check_name ("group name", names[0], "group1", 0);  check_name ("group name", names[1], "group2", 1);  check_name ("group name", names[2], "group3", 2);  g_key_file_remove_group (keyfile, "group1", &error);  check_no_error (&error);    g_strfreev (names);  names = g_key_file_get_groups (keyfile, &len);  g_assert (names != NULL);  check_length ("groups", g_strv_length (names), len, 2);  check_name ("group name", names[0], "group2", 0);  check_name ("group name", names[1], "group3", 1);  g_key_file_remove_group (keyfile, "group2", &error);  check_no_error (&error);    g_strfreev (names);  names = g_key_file_get_groups (keyfile, &len);  g_assert (names != NULL);  check_length ("groups", g_strv_length (names), len, 1);  check_name ("group name", names[0], "group3", 0);  g_key_file_remove_group (keyfile, "no such group", &error);  check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_GROUP_NOT_FOUND);  g_strfreev (names);  g_key_file_free (keyfile);}static void test_key_remove (void){  GKeyFile *keyfile;  gchar *value;  GError *error = NULL;  const gchar *data =     "[group1]\n"    "key1=bla\n"    "key2=bla\n";    g_test_bug ("165980");    keyfile = load_data (data, 0);  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -