diff --git a/Makefile-tests.am b/Makefile-tests.am index a93938cf..82332501 100644 --- a/Makefile-tests.am +++ b/Makefile-tests.am @@ -107,7 +107,7 @@ endif noinst_PROGRAMS += tests/test-rollsum TESTS = tests/test-varint tests/test-ot-unix-utils tests/test-bsdiff tests/test-mutable-tree \ - tests/test-keyfile-utils tests/test-ot-opt-utils + tests/test-keyfile-utils tests/test-ot-opt-utils tests/test-ot-tool-util check_PROGRAMS = $(TESTS) TESTS_CFLAGS = $(ostree_bin_shared_cflags) $(OT_INTERNAL_GIO_UNIX_CFLAGS) @@ -135,3 +135,6 @@ tests_test_keyfile_utils_LDADD = $(TESTS_LDADD) tests_test_ot_opt_utils_CFLAGS = $(TESTS_CFLAGS) tests_test_ot_opt_utils_LDADD = $(TESTS_LDADD) + +tests_test_ot_tool_util_CFLAGS = $(TESTS_CFLAGS) +tests_test_ot_tool_util_LDADD = $(TESTS_LDADD) diff --git a/tests/test-ot-tool-util.c b/tests/test-ot-tool-util.c new file mode 100644 index 00000000..39807da2 --- /dev/null +++ b/tests/test-ot-tool-util.c @@ -0,0 +1,116 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2015 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "config.h" +#include "libgsystem.h" +#include "ostree-mutable-tree.h" +#include +#include +#include +#include +#include "ot-tool-util.h" + +/* + + +gboolean +ot_parse_boolean (const char *value, + gboolean *out_parsed, + GError **error); +gboolean +ot_parse_keyvalue (const char *keyvalue, + char **out_key, + char **out_value, + GError **error); +*/ +static void +test_ot_parse_boolean (void) +{ + GError *error = NULL; + gboolean out = FALSE; + g_assert_true (ot_parse_boolean ("yes", &out, &error)); + g_assert_true (out); + + out = FALSE; + g_assert_true (ot_parse_boolean ("1", &out, &error)); + g_assert_true (out); + + out = FALSE; + g_assert_true (ot_parse_boolean ("true", &out, &error)); + g_assert_true (out); + + g_assert_true (ot_parse_boolean ("false", &out, &error)); + g_assert_false (out); + + out = TRUE; + g_assert_true (ot_parse_boolean ("no", &out, &error)); + g_assert_false (out); + + out = TRUE; + g_assert_true (ot_parse_boolean ("0", &out, &error)); + g_assert_false (out); + + out = TRUE; + g_assert_true (ot_parse_boolean ("none", &out, &error)); + g_assert_false (out); + + g_assert_false (ot_parse_boolean ("FOO", &out, &error)); + g_assert_error (error, G_IO_ERROR, G_IO_ERROR_FAILED); +} + +static void +test_ot_parse_keyvalue (void) +{ + GError *error = NULL; + char *keyvalue[] = {"foo=bar", "a=", "b=1231231"}; + char *key[] = {"foo", "a", "b"}; + char *value[] = {"bar", "", "1231231"}; + guint i; + + for (i = 0; i < G_N_ELEMENTS (keyvalue); i++) + { + gs_free char *out_key = NULL; + gs_free char *out_value = NULL; + g_assert_true (ot_parse_keyvalue (keyvalue[i], + &out_key, + &out_value, + &error)); + g_assert_cmpstr (out_key, ==, key[i]); + g_assert_cmpstr (out_value, ==, value[i]); + } + + { + gs_free char *out_key = NULL; + gs_free char *out_value = NULL; + g_assert_false (ot_parse_keyvalue ("blabla", + &out_key, + &out_value, + &error)); + g_assert_error (error, G_IO_ERROR, G_IO_ERROR_FAILED); + } +} + +int main (int argc, char **argv) +{ + g_test_init (&argc, &argv, NULL); + g_test_add_func ("/ot-tool-util/parse-boolean", test_ot_parse_boolean); + g_test_add_func ("/ot-tool-util/parse-keyvalue", test_ot_parse_keyvalue); + return g_test_run(); +}