Add basic framework for unit-testing.

Also adds a bunch of fake symbols so we can link. Note that any of these
symbols will return false, 0 or whatever the zero value for the symbol is.
Care must be taken when writing test that this doesn't screw up the test.

Tests are always built but only run on make check.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer
2011-03-18 20:34:38 +10:00
parent bc89d7db42
commit 9290ce357b
7 changed files with 683 additions and 1 deletions

View File

@@ -18,7 +18,7 @@
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
SUBDIRS = include src man tools conf
SUBDIRS = include src man tools conf test
MAINTAINERCLEANFILES = ChangeLog INSTALL
pkgconfigdir = $(libdir)/pkgconfig

View File

@@ -43,6 +43,7 @@ m4_ifndef([XORG_MACROS_VERSION],
[m4_fatal([must install xorg-macros 1.13 or later before running autoconf/autogen])])
XORG_MACROS_VERSION(1.13)
XORG_DEFAULT_OPTIONS
XORG_ENABLE_UNIT_TESTS
# Checks for libraries.
AC_CHECK_LIB([m], [rint])
@@ -149,6 +150,7 @@ AC_CONFIG_FILES([Makefile
tools/Makefile
conf/Makefile
include/Makefile
test/Makefile
xorg-synaptics.pc])
AC_OUTPUT

6
test/.gitignore vendored Normal file
View File

@@ -0,0 +1,6 @@
# Add & Override patterns for xf86-input-synaptics
#
# Edit the following section as needed
# For example, !report.pc overrides *.pc. See 'man gitignore'
eventcomm-test

14
test/Makefile.am Normal file
View File

@@ -0,0 +1,14 @@
AM_CPPFLAGS = -I$(top_srcdir)/src
AM_CFLAGS = $(XORG_CFLAGS) $(CWARNFLAGS)
fake_syms = fake-symbols.c fake-symbols.h
if BUILD_EVENTCOMM
noinst_PROGRAMS = eventcomm-test
eventcomm_test_SOURCES = eventcomm-test.c\
$(fake_syms)
endif
if ENABLE_UNIT_TESTS
TESTS = $(noinst_PROGRAMS)
endif

37
test/eventcomm-test.c Normal file
View File

@@ -0,0 +1,37 @@
/*
* Copyright © 2011 Red Hat, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software
* and its documentation for any purpose is hereby granted without
* fee, provided that the above copyright notice appear in all copies
* and that both that copyright notice and this permission notice
* appear in supporting documentation, and that the name of Red Hat
* not be used in advertising or publicity pertaining to distribution
* of the software without specific, written prior permission. Red
* Hat makes no representations about the suitability of this software
* for any purpose. It is provided "as is" without express or implied
* warranty.
*
* THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
* NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Authors:
* Peter Hutterer
*/
#if HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include <assert.h>
int main (int argc, char **argv)
{
return 0;
}

446
test/fake-symbols.c Normal file
View File

@@ -0,0 +1,446 @@
#include "fake-symbols.h"
_X_EXPORT
int xf86ReadSerial (int fd, void *buf, int count)
{
return 0;
}
_X_EXPORT int
xf86WriteSerial (int fd, const void *buf, int count)
{
return 0;
}
_X_EXPORT int
xf86CloseSerial (int fd)
{
return 0;
}
_X_EXPORT int
xf86WaitForInput (int fd, int timeout)
{
return 0;
}
_X_EXPORT int
xf86OpenSerial (pointer options)
{
return 0;
}
_X_EXPORT int
xf86SetSerialSpeed (int fd, int speed)
{
return 0;
}
_X_EXPORT pointer
xf86ReplaceIntOption(pointer optlist, const char *name, const int val)
{
return NULL;
}
_X_EXPORT char *
xf86SetStrOption(pointer optlist, const char *name, char *deflt)
{
return NULL;
}
_X_EXPORT int
xf86SetBoolOption(pointer optlist, const char *name, int deflt)
{
return 0;
}
_X_EXPORT pointer
xf86AddNewOption(pointer head, const char *name, const char *val)
{
return NULL;
}
_X_EXPORT char *
xf86FindOptionValue(pointer options, const char *name)
{
return NULL;
}
_X_EXPORT char *
xf86OptionName(pointer opt)
{
return NULL;
}
_X_EXPORT char *
xf86OptionValue(pointer opt)
{
return NULL;
}
_X_EXPORT int
xf86NameCmp(const char *s1, const char *s2)
{
return 0;
}
_X_EXPORT char *
xf86CheckStrOption(pointer optlist, const char *name, char *deflt)
{
return NULL;
}
_X_EXPORT void
xf86AddEnabledDevice(InputInfoPtr pInfo)
{
return;
}
_X_EXPORT void
xf86RemoveEnabledDevice(InputInfoPtr pInfo)
{
return;
}
_X_EXPORT Atom
XIGetKnownProperty(char *name)
{
return None;
}
_X_EXPORT void
xf86AddInputDriver(InputDriverPtr driver, pointer module, int flags)
{
return;
}
_X_EXPORT int
xf86ScaleAxis(int Cx,
int to_max,
int to_min,
int from_max,
int from_min )
{
int X;
int64_t to_width = to_max - to_min;
int64_t from_width = from_max - from_min;
if (from_width) {
X = (int)(((to_width * (Cx - from_min)) / from_width) + to_min);
}
else {
X = 0;
/*ErrorF ("Divide by Zero in xf86ScaleAxis\n");*/
}
if (X > to_max)
X = to_max;
if (X < to_min)
X = to_min;
return X;
}
_X_EXPORT void
DeleteInputDeviceRequest(DeviceIntPtr pDev)
{
return;
}
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
_X_EXPORT void
FreeInputAttributes(InputAttributes *attrs)
{
return;
}
#endif
_X_EXPORT void
xf86PostButtonEvent(DeviceIntPtr device,
int is_absolute,
int button,
int is_down,
int first_valuator,
int num_valuators,
...)
{
return;
}
_X_EXPORT int
Xasprintf(char ** ret, const char * format, ...)
{
return 0;
}
_X_EXPORT int
XISetDevicePropertyDeletable(DeviceIntPtr dev, Atom property, Bool deletable)
{
return 0;
}
_X_EXPORT InputInfoPtr
xf86FirstLocalDevice(void)
{
return NULL;
}
_X_EXPORT void
xf86DeleteInput(InputInfoPtr pInp, int flags)
{
return;
}
_X_EXPORT pointer
xf86OptionListDuplicate(pointer options)
{
return NULL;
}
_X_EXPORT Bool
InitButtonClassDeviceStruct(DeviceIntPtr dev, int numButtons, Atom* labels,
CARD8 *map)
{
return FALSE;
}
_X_EXPORT void
InitValuatorAxisStruct(DeviceIntPtr dev, int axnum, Atom label, int minval, int maxval,
int resolution, int min_res, int max_res, int mode)
{
return;
}
_X_EXPORT void
xf86PostKeyboardEvent(DeviceIntPtr device,
unsigned int key_code,
int is_down)
{
return;
}
_X_EXPORT int
xf86SetIntOption(pointer optlist, const char *name, int deflt)
{
return 0;
}
_X_EXPORT void
xf86PostButtonEventP(DeviceIntPtr device,
int is_absolute,
int button,
int is_down,
int first_valuator,
int num_valuators,
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
const
#endif
int *valuators)
{
return;
}
_X_EXPORT Bool
InitPtrFeedbackClassDeviceStruct(DeviceIntPtr dev, PtrCtrlProcPtr controlProc)
{
return FALSE;
}
_X_EXPORT int
XIChangeDeviceProperty (DeviceIntPtr dev, Atom property, Atom type,
int format, int mode, unsigned long len,
pointer value, Bool sendevent)
{
return 0;
}
_X_EXPORT CARD32
GetTimeInMillis (void)
{
return 0;
}
_X_EXPORT int
NewInputDeviceRequest (InputOption *options,
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
InputAttributes *attrs,
#endif
DeviceIntPtr *pdev)
{
return 0;
}
_X_EXPORT Bool
InitLedFeedbackClassDeviceStruct (DeviceIntPtr dev, LedCtrlProcPtr controlProc)
{
return FALSE;
}
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
_X_EXPORT InputAttributes*
DuplicateInputAttributes(InputAttributes *attrs)
{
return NULL;
}
#endif
_X_EXPORT int
ValidAtom(Atom atom)
{
return None;
}
_X_EXPORT Bool
InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet *rmlvo,
BellProcPtr bell_func, KbdCtrlProcPtr ctrl_func)
{
return FALSE;
}
_X_EXPORT long
XIRegisterPropertyHandler(DeviceIntPtr dev,
int (*SetProperty) (DeviceIntPtr dev,
Atom property,
XIPropertyValuePtr prop,
BOOL checkonly),
int (*GetProperty) (DeviceIntPtr dev,
Atom property),
int (*DeleteProperty) (DeviceIntPtr dev,
Atom property))
{
return 0;
}
_X_EXPORT int
InitProximityClassDeviceStruct(DeviceIntPtr dev)
{
return 0;
}
_X_EXPORT void
xf86Msg(MessageType type, const char *format, ...)
{
return;
}
_X_EXPORT void
xf86MsgVerb(MessageType type, int verb, const char *format, ...)
{
return;
}
_X_EXPORT void
xf86PostMotionEventP(DeviceIntPtr device,
int is_absolute,
int first_valuator,
int num_valuators,
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
const
#endif
int *valuators)
{
return;
}
_X_EXPORT Bool
InitValuatorClassDeviceStruct(DeviceIntPtr dev, int numAxes, Atom *labels,
int numMotionEvents, int mode)
{
return FALSE;
}
_X_EXPORT pointer
xf86ReplaceStrOption(pointer optlist, const char *name, const char* val)
{
return NULL;
}
_X_EXPORT pointer
xf86NextOption(pointer list)
{
return NULL;
}
_X_EXPORT int
XIGetDeviceProperty (DeviceIntPtr dev, Atom property, XIPropertyValuePtr *value)
{
return 0;
}
_X_EXPORT Atom
MakeAtom(const char *string, unsigned len, Bool makeit)
{
return None;
}
_X_EXPORT int
GetMotionHistorySize(void)
{
return 0;
}
_X_EXPORT void
xf86PostProximityEventP(DeviceIntPtr device,
int is_in,
int first_valuator,
int num_valuators,
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
const
#endif
int *valuators)
{
return;
}
_X_EXPORT Bool
InitFocusClassDeviceStruct(DeviceIntPtr dev)
{
return FALSE;
}
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
void
xf86ProcessCommonOptions(InputInfoPtr pInfo, pointer list)
{
}
void
xf86CollectInputOptions(InputInfoPtr pInfo,
const char **defaultOpts,
pointer extraOpts)
{
}
InputInfoPtr xf86AllocateInput(InputDriverPtr drv, int flags)
{
return NULL;
}
#endif
ClientPtr serverClient;
Bool QueueWorkProc (
Bool (*function)(ClientPtr /* pClient */, pointer /* closure */),
ClientPtr client, pointer closure)
{
return FALSE;
}

177
test/fake-symbols.h Normal file
View File

@@ -0,0 +1,177 @@
#include <xorg-server.h>
#include <xf86Xinput.h>
extern int xf86ReadSerial (int fd, void *buf, int count);
extern int xf86WriteSerial (int fd, const void *buf, int count);
extern int xf86CloseSerial (int fd);
extern int xf86WaitForInput (int fd, int timeout);
extern int xf86OpenSerial (pointer options);
extern int xf86SetSerialSpeed (int fd, int speed);
extern pointer xf86ReplaceIntOption(pointer optlist, const char *name, const int val);
extern pointer xf86AddNewOption(pointer head, const char *name, const char *val);
extern char* xf86OptionName(pointer opt);
extern char* xf86FindOptionValue(pointer options, const char *name);
extern int xf86NameCmp(const char *s1, const char *s2);
extern char* xf86CheckStrOption(pointer optlist, const char *name, char *deflt);
extern char * xf86SetStrOption(pointer optlist, const char *name, char *deflt);
extern int xf86SetBoolOption(pointer optlist, const char *name, int deflt);
extern pointer xf86AddNewOption(pointer head, const char *name, const char *val);
extern char* xf86FindOptionValue(pointer options, const char *name);
extern char* xf86OptionName(pointer opt);
extern char *xf86OptionValue(pointer opt);
extern int xf86NameCmp(const char *s1, const char *s2);
extern char * xf86CheckStrOption(pointer optlist, const char *name, char *deflt);
extern void xf86AddEnabledDevice(InputInfoPtr pInfo);
extern void xf86RemoveEnabledDevice(InputInfoPtr pInfo);
extern Atom XIGetKnownProperty(char *name);
extern void xf86AddInputDriver(InputDriverPtr driver, pointer module, int flags);
extern int
xf86ScaleAxis(int Cx,
int to_max,
int to_min,
int from_max,
int from_min );
extern void DeleteInputDeviceRequest(DeviceIntPtr pDev);
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
extern void FreeInputAttributes(InputAttributes *attrs);
#endif
extern void
xf86PostButtonEvent(DeviceIntPtr device,
int is_absolute,
int button,
int is_down,
int first_valuator,
int num_valuators,
...);
extern int Xasprintf(char ** ret, const char *format, ...);
extern int
XISetDevicePropertyDeletable(DeviceIntPtr dev, Atom property, Bool deletable);
extern InputInfoPtr xf86FirstLocalDevice(void);
extern void xf86DeleteInput(InputInfoPtr pInp, int flags);
extern pointer xf86OptionListDuplicate(pointer options);
extern Bool
InitButtonClassDeviceStruct(DeviceIntPtr dev, int numButtons, Atom* labels,
CARD8 *map);
extern void
InitValuatorAxisStruct(DeviceIntPtr dev, int axnum, Atom label, int minval, int maxval,
int resolution, int min_res, int max_res, int mode);
extern void
xf86PostKeyboardEvent(DeviceIntPtr device,
unsigned int key_code,
int is_down);
extern int
xf86SetIntOption(pointer optlist, const char *name, int deflt);
extern void
xf86PostButtonEventP(DeviceIntPtr device,
int is_absolute,
int button,
int is_down,
int first_valuator,
int num_valuators,
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
const
#endif
int *valuators);
extern Bool
InitPtrFeedbackClassDeviceStruct(DeviceIntPtr dev, PtrCtrlProcPtr controlProc);
extern int
XIChangeDeviceProperty (DeviceIntPtr dev, Atom property, Atom type,
int format, int mode, unsigned long len,
pointer value, Bool sendevent);
extern CARD32 GetTimeInMillis (void);
extern int
NewInputDeviceRequest (InputOption *options,
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
InputAttributes *attrs,
#endif
DeviceIntPtr *pdev);
extern Bool
InitLedFeedbackClassDeviceStruct (DeviceIntPtr dev, LedCtrlProcPtr controlProc);
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
extern InputAttributes* DuplicateInputAttributes(InputAttributes *attrs);
#endif
extern int ValidAtom(Atom atom);
extern Bool
InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet *rmlvo,
BellProcPtr bell_func, KbdCtrlProcPtr ctrl_func);
extern long
XIRegisterPropertyHandler(DeviceIntPtr dev,
int (*SetProperty) (DeviceIntPtr dev,
Atom property,
XIPropertyValuePtr prop,
BOOL checkonly),
int (*GetProperty) (DeviceIntPtr dev,
Atom property),
int (*DeleteProperty) (DeviceIntPtr dev,
Atom property));
extern int InitProximityClassDeviceStruct(DeviceIntPtr dev);
extern void xf86Msg(MessageType type, const char *format, ...);
extern void xf86MsgVerb(MessageType type, int verb, const char *format, ...);
extern void
xf86PostMotionEventP(DeviceIntPtr device,
int is_absolute,
int first_valuator,
int num_valuators,
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
const
#endif
int *valuators);
extern Bool
InitValuatorClassDeviceStruct(DeviceIntPtr dev, int numAxes, Atom *labels,
int numMotionEvents, int mode);
extern pointer
xf86ReplaceStrOption(pointer optlist, const char *name, const char* val);
extern pointer xf86NextOption(pointer list);
extern int
XIGetDeviceProperty (DeviceIntPtr dev, Atom property, XIPropertyValuePtr *value);
extern Atom MakeAtom(const char *string, unsigned len, Bool makeit);
extern int GetMotionHistorySize(void);
extern void
xf86PostProximityEventP(DeviceIntPtr device,
int is_in,
int first_valuator,
int num_valuators,
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
const
#endif
int *valuators);
extern Bool InitFocusClassDeviceStruct(DeviceIntPtr dev);
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
extern void
xf86ProcessCommonOptions(InputInfoPtr pInfo, pointer list);
extern void
xf86CollectInputOptions(InputInfoPtr pInfo,
const char **defaultOpts,
pointer extraOpts);
extern InputInfoPtr
xf86AllocateInput(InputDriverPtr drv, int flags);
extern ClientPtr serverClient;
extern Bool QueueWorkProc (
Bool (*function)(ClientPtr /* pClient */, pointer /* closure */),
ClientPtr client, pointer closure);
#endif