mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-05-20 02:18:07 +02:00
accidentally committed this stuff along with the doc changes, probably broken, will fix it soon
This commit is contained in:
parent
76ee87af5b
commit
330ae27487
2 changed files with 196 additions and 0 deletions
136
dbus/dbus-message-factory.c
Normal file
136
dbus/dbus-message-factory.c
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
/* -*- mode: C; c-file-style: "gnu" -*- */
|
||||
/* dbus-message-factory.c Generator of valid and invalid message data for test suite
|
||||
*
|
||||
* Copyright (C) 2005 Red Hat Inc.
|
||||
*
|
||||
* Licensed under the Academic Free License version 2.1
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program 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 General Public License for more details.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef DBUS_BUILD_TESTS
|
||||
|
||||
#include "dbus-message-factory.h"
|
||||
#include "dbus-message-private.h"
|
||||
|
||||
typedef dbus_bool_t (* DBusMessageGeneratorFunc) (int sequence,
|
||||
DBusMessage **message_p);
|
||||
|
||||
static void
|
||||
set_reply_serial (DBusMessage *message)
|
||||
{
|
||||
if (message == NULL)
|
||||
_dbus_assert_not_reached ("oom");
|
||||
if (!dbus_message_set_reply_serial (message, 100))
|
||||
_dbus_assert_not_reached ("oom");
|
||||
}
|
||||
|
||||
static dbus_bool_t
|
||||
generate_trivial (int sequence,
|
||||
DBusMessage **message_p)
|
||||
{
|
||||
DBusMessage *message;
|
||||
|
||||
switch (sequence)
|
||||
{
|
||||
case 0:
|
||||
message = dbus_message_new_method_call ("org.freedesktop.TextEditor",
|
||||
"/foo/bar",
|
||||
"org.freedesktop.DocumentFactory",
|
||||
"Create");
|
||||
break;
|
||||
case 1:
|
||||
message = dbus_message_new (DBUS_MESSAGE_TYPE_METHOD_RETURN);
|
||||
set_reply_serial (message);
|
||||
break;
|
||||
case 2:
|
||||
message = dbus_message_new_signal ("/foo/bar",
|
||||
"org.freedesktop.DocumentFactory",
|
||||
"Created");
|
||||
break;
|
||||
case 3:
|
||||
message = dbus_message_new (DBUS_MESSAGE_TYPE_ERROR);
|
||||
set_reply_serial (message);
|
||||
break;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (message == NULL)
|
||||
_dbus_assert_not_reached ("oom");
|
||||
|
||||
*message_p = message;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static const DBusMessageGeneratorFunc generators[] = {
|
||||
generate_trivial
|
||||
};
|
||||
|
||||
void
|
||||
_dbus_message_data_free (DBusMessageData *data)
|
||||
{
|
||||
_dbus_string_free (&data->data);
|
||||
}
|
||||
|
||||
void
|
||||
_dbus_message_data_iter_init (DBusMessageDataIter *iter)
|
||||
{
|
||||
iter->generator = 0;
|
||||
iter->sequence = 0;
|
||||
}
|
||||
|
||||
dbus_bool_t
|
||||
_dbus_message_data_iter_get_and_next (DBusMessageDataIter *iter,
|
||||
DBusMessageData *data)
|
||||
{
|
||||
DBusMessageGeneratorFunc func;
|
||||
DBusMessage *message;
|
||||
|
||||
if (iter->generator == _DBUS_N_ELEMENTS (generators))
|
||||
return FALSE;
|
||||
|
||||
func = generators[iter->generator];
|
||||
|
||||
if ((*func)(iter->sequence, &message))
|
||||
iter->sequence += 1;
|
||||
else
|
||||
{
|
||||
iter->generator += 1;
|
||||
iter->sequence = 0;
|
||||
}
|
||||
|
||||
_dbus_assert (message != NULL);
|
||||
|
||||
if (!_dbus_string_init (&data->data))
|
||||
_dbus_assert_not_reached ("oom");
|
||||
|
||||
/* move for efficiency, since we'll nuke the message anyway */
|
||||
if (!_dbus_string_move (&message->header.data, 0,
|
||||
&data->data, 0))
|
||||
_dbus_assert_not_reached ("oom");
|
||||
|
||||
if (!_dbus_string_copy (&message->body, 0,
|
||||
&data->data, _dbus_string_get_length (&data->data)))
|
||||
_dbus_assert_not_reached ("oom");
|
||||
|
||||
dbus_message_unref (message);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#endif /* DBUS_BUILD_TESTS */
|
||||
60
dbus/dbus-message-factory.h
Normal file
60
dbus/dbus-message-factory.h
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
/* -*- mode: C; c-file-style: "gnu" -*- */
|
||||
/* dbus-message-factory.h Generator of valid and invalid message data for test suite
|
||||
*
|
||||
* Copyright (C) 2005 Red Hat Inc.
|
||||
*
|
||||
* Licensed under the Academic Free License version 2.1
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program 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 General Public License for more details.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef DBUS_MESSAGE_FACTORY_H
|
||||
#define DBUS_MESSAGE_FACTORY_H
|
||||
|
||||
#ifdef DBUS_BUILD_TESTS
|
||||
|
||||
#include <dbus/dbus-string.h>
|
||||
#include <dbus/dbus-marshal-basic.h>
|
||||
#include <dbus/dbus-marshal-validate.h>
|
||||
|
||||
DBUS_BEGIN_DECLS
|
||||
|
||||
typedef struct
|
||||
{
|
||||
dbus_bool_t validity_known;
|
||||
DBusValidity expected_validity;
|
||||
|
||||
DBusString data;
|
||||
|
||||
} DBusMessageData;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int generator;
|
||||
int sequence;
|
||||
} DBusMessageDataIter;
|
||||
|
||||
void _dbus_message_data_free (DBusMessageData *data);
|
||||
void _dbus_message_data_iter_init (DBusMessageDataIter *iter);
|
||||
dbus_bool_t _dbus_message_data_iter_get_and_next (DBusMessageDataIter *iter,
|
||||
DBusMessageData *data);
|
||||
|
||||
|
||||
DBUS_END_DECLS
|
||||
|
||||
#endif /* DBUS_BUILD_TESTS */
|
||||
|
||||
#endif /* DBUS_MESSAGE_FACTORY_H */
|
||||
Loading…
Add table
Reference in a new issue