/* * * Embedded Linux library * * Copyright (C) 2011-2014 Intel Corporation. All rights reserved. * * 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.1 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "ell/dbus-private.h" struct signature_test { bool valid; const char *signature; }; #define SIGNATURE_TEST(v, sig, i) \ static struct signature_test sig_test##i = { \ .valid = v, \ .signature = sig, \ } SIGNATURE_TEST(false, "a", 1); SIGNATURE_TEST(false, "a{vs}", 2); SIGNATURE_TEST(true, "(ss)", 3); SIGNATURE_TEST(true, "(s(ss))", 4); SIGNATURE_TEST(true, "as", 5); SIGNATURE_TEST(true, "ab", 6); SIGNATURE_TEST(true, "aas", 7); SIGNATURE_TEST(true, "a(ss)", 8); SIGNATURE_TEST(true, "asas", 9); SIGNATURE_TEST(true, "av", 10); SIGNATURE_TEST(true, "a{sv}", 11); SIGNATURE_TEST(true, "v", 12); SIGNATURE_TEST(true, "oa{sv}", 13); SIGNATURE_TEST(true, "a(oa{sv})", 14); SIGNATURE_TEST(true, "(sa{sv})sa{ss}us", 15); SIGNATURE_TEST(true, "(bba{ss})", 16); static void test_signature(const void *test_data) { const struct signature_test *test = test_data; bool valid; valid = _dbus_valid_signature(test->signature); assert(valid == test->valid); } struct interface_test { bool valid; const char *interface; }; #define INTERFACE_TEST(v, iface, i) \ static struct interface_test iface_test##i = { \ .valid = v, \ .interface = iface, \ } INTERFACE_TEST(false, "org", 1); INTERFACE_TEST(true, "org.foobar", 2); INTERFACE_TEST(false, ".", 3); INTERFACE_TEST(false, "org.", 4); INTERFACE_TEST(false, "org.0bar", 5); INTERFACE_TEST(false, "org.bar-", 6); INTERFACE_TEST(true, "org.bar.baz", 7); INTERFACE_TEST(false, "org.bar.", 8); INTERFACE_TEST(true, "org.a.b.c", 9); static void test_interface(const void *test_data) { const struct interface_test *test = test_data; bool valid; valid = _dbus_valid_interface(test->interface); assert(valid == test->valid); } struct method_test { bool valid; const char *method; }; #define METHOD_TEST(v, m, i) \ static struct method_test method_test##i = { \ .valid = v, \ .method = m, \ } METHOD_TEST(false, "0Bar", 1); METHOD_TEST(true, "Bar", 2); static void test_method(const void *test_data) { const struct method_test *test = test_data; bool valid; valid = _dbus_valid_method(test->method); assert(valid == test->valid); } struct bus_name_test { bool valid; const char *bus_name; }; #define BUS_NAME_TEST(v, name, i) \ static struct bus_name_test bus_name_test##i = { \ .valid = v, \ .bus_name = name, \ } BUS_NAME_TEST(false, "org", 1); BUS_NAME_TEST(true, "org.foobar", 2); BUS_NAME_TEST(false, ".", 3); BUS_NAME_TEST(false, "0Bar", 4); BUS_NAME_TEST(true, "org.foo-bar", 5); BUS_NAME_TEST(false, ":1.2f", 6); BUS_NAME_TEST(true, ":1.2", 7); static void test_bus_name(const void *test_data) { const struct bus_name_test *test = test_data; bool valid; valid = _dbus_valid_bus_name(test->bus_name); assert(valid == test->valid); } int main(int argc, char *argv[]) { l_test_init(&argc, &argv); l_test_add("Signature Test 1", test_signature, &sig_test1); l_test_add("Signature test 2", test_signature, &sig_test2); l_test_add("Signature test 3", test_signature, &sig_test3); l_test_add("Signature test 4", test_signature, &sig_test4); l_test_add("Signature test 5", test_signature, &sig_test5); l_test_add("Signature test 6", test_signature, &sig_test6); l_test_add("Signature test 7", test_signature, &sig_test7); l_test_add("Signature test 8", test_signature, &sig_test8); l_test_add("Signature test 9", test_signature, &sig_test9); l_test_add("Signature test 10", test_signature, &sig_test10); l_test_add("Signature test 11", test_signature, &sig_test11); l_test_add("Signature test 12", test_signature, &sig_test12); l_test_add("Signature test 13", test_signature, &sig_test13); l_test_add("Signature test 14", test_signature, &sig_test14); l_test_add("Signature test 15", test_signature, &sig_test15); l_test_add("Signature test 16", test_signature, &sig_test16); l_test_add("Interface Test 1", test_interface, &iface_test1); l_test_add("Interface Test 2", test_interface, &iface_test2); l_test_add("Interface Test 3", test_interface, &iface_test3); l_test_add("Interface Test 4", test_interface, &iface_test4); l_test_add("Interface Test 5", test_interface, &iface_test5); l_test_add("Interface Test 6", test_interface, &iface_test6); l_test_add("Interface Test 7", test_interface, &iface_test7); l_test_add("Interface Test 8", test_interface, &iface_test8); l_test_add("Interface Test 9", test_interface, &iface_test9); l_test_add("Method Test 1", test_method, &method_test1); l_test_add("Method Test 2", test_method, &method_test2); l_test_add("Bus Name Test 1", test_bus_name, &bus_name_test1); l_test_add("Bus Name Test 2", test_bus_name, &bus_name_test2); l_test_add("Bus Name Test 3", test_bus_name, &bus_name_test3); l_test_add("Bus Name Test 4", test_bus_name, &bus_name_test4); l_test_add("Bus Name Test 5", test_bus_name, &bus_name_test5); l_test_add("Bus Name Test 6", test_bus_name, &bus_name_test6); l_test_add("Bus Name Test 7", test_bus_name, &bus_name_test7); return l_test_run(); }