25 #ifdef DBUS_ENABLE_EMBEDDED_TESTS 
   27 #ifndef DOXYGEN_SHOULD_SKIP_THIS 
   29 #include "dbus-internals.h" 
   30 #include "dbus-marshal-validate.h" 
   31 #include "dbus-marshal-recursive.h" 
   33 #include "dbus-test.h" 
   43 run_validity_tests (
const ValidityTest *tests,
 
   49   for (i = 0; i < n_tests; i++)
 
   56       v = (*func) (&str, 0, _dbus_string_get_length (&str));
 
   58       if (v != tests[i].expected)
 
   60           _dbus_warn (
"Improper validation result %d for '%s'",
 
   67 static const ValidityTest signature_tests[] = {
 
   74   { 
"w", DBUS_INVALID_UNKNOWN_TYPECODE },
 
   75   { 
"a", DBUS_INVALID_MISSING_ARRAY_ELEMENT_TYPE },
 
   76   { 
"aaaaaa", DBUS_INVALID_MISSING_ARRAY_ELEMENT_TYPE },
 
   77   { 
"ii(ii)a", DBUS_INVALID_MISSING_ARRAY_ELEMENT_TYPE },
 
   78   { 
"ia", DBUS_INVALID_MISSING_ARRAY_ELEMENT_TYPE },
 
   80   { 
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 
   81     DBUS_INVALID_EXCEEDED_MAXIMUM_ARRAY_RECURSION },
 
   82   { 
"((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((ii))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))",
 
   83     DBUS_INVALID_EXCEEDED_MAXIMUM_STRUCT_RECURSION },
 
   84   { 
")", DBUS_INVALID_STRUCT_ENDED_BUT_NOT_STARTED },
 
   85   { 
"i)", DBUS_INVALID_STRUCT_ENDED_BUT_NOT_STARTED },
 
   86   { 
"a)", DBUS_INVALID_MISSING_ARRAY_ELEMENT_TYPE },
 
   87   { 
"(", DBUS_INVALID_STRUCT_STARTED_BUT_NOT_ENDED },
 
   88   { 
"(i", DBUS_INVALID_STRUCT_STARTED_BUT_NOT_ENDED },
 
   89   { 
"(iiiii", DBUS_INVALID_STRUCT_STARTED_BUT_NOT_ENDED },
 
   90   { 
"(ai", DBUS_INVALID_STRUCT_STARTED_BUT_NOT_ENDED },
 
   91   { 
"()", DBUS_INVALID_STRUCT_HAS_NO_FIELDS },
 
   92   { 
"(())", DBUS_INVALID_STRUCT_HAS_NO_FIELDS },
 
   93   { 
"a()", DBUS_INVALID_STRUCT_HAS_NO_FIELDS },
 
   94   { 
"i()", DBUS_INVALID_STRUCT_HAS_NO_FIELDS },
 
   95   { 
"()i", DBUS_INVALID_STRUCT_HAS_NO_FIELDS },
 
   96   { 
"(a)", DBUS_INVALID_MISSING_ARRAY_ELEMENT_TYPE },
 
   97   { 
"a{ia}", DBUS_INVALID_MISSING_ARRAY_ELEMENT_TYPE },
 
   98   { 
"a{}", DBUS_INVALID_DICT_ENTRY_HAS_NO_FIELDS },
 
   99   { 
"a{aii}", DBUS_INVALID_DICT_KEY_MUST_BE_BASIC_TYPE },
 
  100   { 
" ", DBUS_INVALID_UNKNOWN_TYPECODE },
 
  101   { 
"not a valid signature", DBUS_INVALID_UNKNOWN_TYPECODE },
 
  102   { 
"123", DBUS_INVALID_UNKNOWN_TYPECODE },
 
  103   { 
".", DBUS_INVALID_UNKNOWN_TYPECODE },
 
  105   { 
"a{(ii)i}", DBUS_INVALID_DICT_KEY_MUST_BE_BASIC_TYPE },
 
  106   { 
"a{i}", DBUS_INVALID_DICT_ENTRY_HAS_ONLY_ONE_FIELD },
 
  107   { 
"{is}", DBUS_INVALID_DICT_ENTRY_NOT_INSIDE_ARRAY },
 
  108   { 
"a{isi}", DBUS_INVALID_DICT_ENTRY_HAS_TOO_MANY_FIELDS },
 
  112 _dbus_marshal_validate_test (
void)
 
  117   const char *valid_paths[] = {
 
  123   const char *invalid_paths[] = {
 
  139   const char *valid_interfaces[] = {
 
  140     "org.freedesktop.Foo",
 
  142     "Blah.Blah.Blah.Blah.Blah",
 
  145     "a0.b1.c2.d3.e4.f5.g6",
 
  148   const char *invalid_interfaces[] = {
 
  176   const char *valid_unique_names[] = {
 
  185     ":abce.freedesktop.blah" 
  187   const char *invalid_unique_names[] = {
 
  201   const char *valid_members[] = {
 
  209   const char *invalid_members[] = {
 
  236                                 _dbus_string_get_length (&str)))
 
  238           _dbus_warn (
"Path \"%s\" should have been valid", valid_paths[i]);
 
  251                                _dbus_string_get_length (&str)))
 
  253           _dbus_warn (
"Path \"%s\" should have been invalid", invalid_paths[i]);
 
  267                                      _dbus_string_get_length (&str)))
 
  269           _dbus_warn (
"Interface \"%s\" should have been valid", valid_interfaces[i]);
 
  282                                     _dbus_string_get_length (&str)))
 
  284           _dbus_warn (
"Interface \"%s\" should have been invalid", invalid_interfaces[i]);
 
  300                                    _dbus_string_get_length (&str)))
 
  302           _dbus_warn (
"Bus name \"%s\" should have been valid", valid_interfaces[i]);
 
  312       if (invalid_interfaces[i][0] != 
':')
 
  317                                        _dbus_string_get_length (&str)))
 
  319               _dbus_warn (
"Bus name \"%s\" should have been invalid", invalid_interfaces[i]);
 
  334                                     _dbus_string_get_length (&str)))
 
  336           _dbus_warn (
"Bus name \"%s\" should have been valid", valid_unique_names[i]);
 
  349                                    _dbus_string_get_length (&str)))
 
  351           _dbus_warn (
"Bus name \"%s\" should have been invalid", invalid_unique_names[i]);
 
  367                                       _dbus_string_get_length (&str)))
 
  369           _dbus_warn (
"Error name \"%s\" should have been valid", valid_interfaces[i]);
 
  379       if (invalid_interfaces[i][0] != 
':')
 
  384                                          _dbus_string_get_length (&str)))
 
  386               _dbus_warn (
"Error name \"%s\" should have been invalid", invalid_interfaces[i]);
 
  401                                   _dbus_string_get_length (&str)))
 
  403           _dbus_warn (
"Member \"%s\" should have been valid", valid_members[i]);
 
  416                                  _dbus_string_get_length (&str)))
 
  418           _dbus_warn (
"Member \"%s\" should have been invalid", invalid_members[i]);
 
  485     while (dbus_internal_do_not_use_generate_bodies (sequence,
 
  494                                                     _dbus_string_get_length (&body));
 
  497             _dbus_warn (
"invalid code %d expected valid on sequence %d little endian",
 
  510     while (dbus_internal_do_not_use_generate_bodies (sequence,
 
  519                                                     _dbus_string_get_length (&body));
 
  522             _dbus_warn (
"invalid code %d expected valid on sequence %d big endian",