-/* -*- mode: C; c-file-style: "gnu" -*- */
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* dbus-marshal-recursive-util.c Would be in dbus-marshal-recursive.c, but only used in bus/tests
*
* Copyright (C) 2004, 2005 Red Hat, Inc.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
#ifdef DBUS_HAVE_INT64
value->u64 = 0;
#else
- value->u64.first32 = 0;
- value->u64.second32 = 0;
+ value->eight.first32 = 0;
+ value->eight.second32 = 0;
#endif
}
#ifdef DBUS_HAVE_INT64
return lhs->u64 == rhs->u64;
#else
- return lhs->u64.first32 == rhs->u64.first32 &&
- lhs->u64.second32 == rhs->u64.second32;
+ return lhs->eight.first32 == rhs->eight.first32 &&
+ lhs->eight.second32 == rhs->eight.second32;
#endif
}
}
}
/* TESTS */
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
#include "dbus-test.h"
#include "dbus-list.h"
#include <stdio.h>
if (!(* klass->construct) (node))
{
dbus_free (node);
- return FALSE;
+ return NULL;
}
}
DBusTypeReader *reader,
int seed)
{
- DBusTypeMark mark;
- DBusTypeReader restored;
-
- _dbus_type_reader_save_mark (reader, &mark);
+ /* DBusTypeReader restored; */
if (!(* node->klass->read_value) (node, reader, seed))
return FALSE;
- _dbus_type_reader_init_from_mark (&restored,
- reader->byte_order,
- reader->type_str,
- reader->value_str,
- &mark);
-
- if (!(* node->klass->read_value) (node, &restored, seed))
- return FALSE;
-
return TRUE;
}
DBusTypeReader reader;
DBusTypeWriter writer;
- _dbus_verbose ("%s\n", _DBUS_FUNCTION_NAME);
+ _dbus_verbose ("\n");
src = nid->block;
dbus_bool_t retval;
int sig_len;
- _dbus_verbose ("%s\n", _DBUS_FUNCTION_NAME);
+ _dbus_verbose ("\n");
retval = FALSE;
dbus_bool_t retval;
int i;
- _dbus_verbose ("%s\n", _DBUS_FUNCTION_NAME);
+ _dbus_verbose ("\n");
retval = FALSE;
dbus_bool_t retval;
int t;
- _dbus_verbose ("%s\n", _DBUS_FUNCTION_NAME);
+ _dbus_verbose ("\n");
retval = FALSE;
node_destroy (node);
}
+ if (_dbus_getenv ("DBUS_TEST_SLOW") == NULL ||
+ atoi (_dbus_getenv ("DBUS_TEST_SLOW")) < 1)
+ {
+ fprintf (stderr, "skipping remaining marshal-recursive tests, "
+ "run with DBUS_TEST_SLOW=1 (or more) to enable\n");
+ goto out;
+ }
+
start_next_test ("Each container of each container of each value %d iterations\n",
N_CONTAINERS * N_CONTAINERS * N_VALUES);
for (i = 0; i < N_CONTAINERS; i++)
node_destroy (outer_container);
}
-#if 0
- /* This one takes a really long time, so comment it out for now */
+ /* This one takes a really long time (10 minutes on a Core2), so only enable
+ * it if you're really sure */
+ if (atoi (_dbus_getenv ("DBUS_TEST_SLOW")) < 2)
+ {
+ fprintf (stderr, "skipping really slow marshal-recursive test, "
+ "run with DBUS_TEST_SLOW=2 (or more) to enable\n");
+ goto out;
+ }
+
start_next_test ("Each value,value,value triplet combination as toplevel, in all orders %d iterations\n",
N_VALUES * N_VALUES * N_VALUES);
{
node_destroy (nodes[0]);
}
}
-#endif /* #if 0 expensive test */
+out:
fprintf (stderr, "%d total iterations of recursive marshaling tests\n",
n_iterations_completed_total);
fprintf (stderr, "each iteration ran at initial offsets 0 through %d in both big and little endian\n",
DBusTypeWriter *writer,
int seed)
{
- char buf[MAX_SAMPLE_STRING_LEN];
+ char buf[MAX_SAMPLE_STRING_LEN + 1]="";
const char *v_string = buf;
+
string_from_seed (buf, node->klass->subclass_detail,
seed);
int seed)
{
const char *v;
- char buf[MAX_SAMPLE_STRING_LEN];
+ char buf[MAX_SAMPLE_STRING_LEN + 1];
+ v = buf;
check_expected_type (reader, node->klass->typecode);
DBusTypeReader *realign_root,
int seed)
{
- char buf[MAX_SAMPLE_STRING_LEN];
+ char buf[MAX_SAMPLE_STRING_LEN + 1];
const char *v_string = buf;
string_from_seed (buf, node->klass->subclass_detail,
if (!_DBUS_DOUBLES_BITWISE_EQUAL (v, expected))
{
-#ifdef DBUS_HAVE_INT64
- _dbus_warn ("Expected double %g got %g\n bits = 0x%llx vs.\n bits = 0x%llx)\n",
+#ifdef DBUS_INT64_PRINTF_MODIFIER
+ _dbus_warn ("Expected double %g got %g\n bits = 0x%" DBUS_INT64_PRINTF_MODIFIER "x vs.\n bits = 0x%" DBUS_INT64_PRINTF_MODIFIER "x)\n",
expected, v,
*(dbus_uint64_t*)(char*)&expected,
*(dbus_uint64_t*)(char*)&v);
DBusTypeWriter *writer,
int seed)
{
- char buf[MAX_SAMPLE_OBJECT_PATH_LEN];
+ char buf[MAX_SAMPLE_OBJECT_PATH_LEN + 1];
const char *v_string = buf;
object_path_from_seed (buf, seed);
int seed)
{
const char *v;
- char buf[MAX_SAMPLE_OBJECT_PATH_LEN];
+ char buf[MAX_SAMPLE_OBJECT_PATH_LEN + 1];
check_expected_type (reader, node->klass->typecode);
DBusTypeReader *realign_root,
int seed)
{
- char buf[MAX_SAMPLE_OBJECT_PATH_LEN];
+ char buf[MAX_SAMPLE_OBJECT_PATH_LEN + 1];
const char *v_string = buf;
object_path_from_seed (buf, seed);
signature_from_seed (char *buf,
int seed)
{
- int i;
- const char *s;
/* try to avoid ascending, descending, or alternating length to help find bugs */
const char *sample_signatures[] = {
"asax"
"a(ii)"
};
- s = sample_signatures[seed % _DBUS_N_ELEMENTS(sample_signatures)];
-
- for (i = 0; s[i]; i++)
- {
- buf[i] = s[i];
- }
- buf[i] = '\0';
+ strcpy (buf, sample_signatures[seed % _DBUS_N_ELEMENTS(sample_signatures)]);
}
static dbus_bool_t
DBusTypeWriter *writer,
int seed)
{
- char buf[MAX_SAMPLE_SIGNATURE_LEN];
+ char buf[MAX_SAMPLE_SIGNATURE_LEN + 1];
const char *v_string = buf;
signature_from_seed (buf, seed);
int seed)
{
const char *v;
- char buf[MAX_SAMPLE_SIGNATURE_LEN];
+ char buf[MAX_SAMPLE_SIGNATURE_LEN + 1];
check_expected_type (reader, node->klass->typecode);
DBusTypeReader *realign_root,
int seed)
{
- char buf[MAX_SAMPLE_SIGNATURE_LEN];
+ char buf[MAX_SAMPLE_SIGNATURE_LEN + 1];
const char *v_string = buf;
signature_from_seed (buf, seed);
goto oom;
if (arrays_write_fixed_in_blocks &&
- _dbus_type_is_fixed (element_type) &&
+ dbus_type_is_fixed (element_type) &&
child->klass->write_multi)
{
if (!node_write_multi (child, block, &sub, seed, n_copies))
_dbus_type_reader_recurse (reader, &sub);
if (realign_root == NULL && arrays_write_fixed_in_blocks &&
- _dbus_type_is_fixed (_dbus_type_reader_get_element_type (reader)) &&
+ dbus_type_is_fixed (_dbus_type_reader_get_element_type (reader)) &&
child->klass->read_multi)
{
if (!node_read_multi (child, &sub, seed, n_copies))
DBusString dict_entry_signature;
int i;
int n_entries;
- int entry_value_type;
TestTypeNode *child;
n_entries = node->klass->subclass_detail;
if (!_dbus_string_append_byte (&dict_entry_signature,
DBUS_DICT_ENTRY_END_CHAR))
goto oom;
-
- entry_value_type = _dbus_first_type_in_signature (&entry_value_signature, 0);
-
+
if (!_dbus_type_writer_recurse (writer, DBUS_TYPE_ARRAY,
&dict_entry_signature, 0,
&sub))
}
}
+#endif /* !DOXYGEN_SHOULD_SKIP_THIS */
+
#endif /* DBUS_BUILD_TESTS */