2001-10-16 Marcus Brinkmann <marcus@g10code.de>
* t-version.c: New file. * t-data.c: Likewise. * t-data-1.txt: Likewise. * t-data-2.txt: Likewise. * Makefile.am (TESTS): Add t-version, t-data.
This commit is contained in:
parent
96a64f6b80
commit
f83651e0a5
19
tests/ChangeLog
Normal file
19
tests/ChangeLog
Normal file
@ -0,0 +1,19 @@
|
||||
2001-10-16 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* t-version.c: New file.
|
||||
* t-data.c: Likewise.
|
||||
* t-data-1.txt: Likewise.
|
||||
* t-data-2.txt: Likewise.
|
||||
* Makefile.am (TESTS): Add t-version, t-data.
|
||||
|
||||
|
||||
Copyright 2001 g10 Code GmbH
|
||||
|
||||
This file is free software; as a special exception the author gives
|
||||
unlimited permission to copy and/or distribute it, with or without
|
||||
modifications, as long as this notice is preserved.
|
||||
|
||||
This file is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -22,8 +22,8 @@
|
||||
|
||||
TESTS_ENVIRONMENT = GNUPGHOME=.
|
||||
|
||||
TESTS = t-encrypt t-sign t-decrypt t-verify t-keylist t-export t-import \
|
||||
t-trustlist
|
||||
TESTS = t-version t-data t-encrypt t-sign t-decrypt t-verify t-keylist \
|
||||
t-export t-import t-trustlist
|
||||
|
||||
|
||||
EXTRA_DIST = mkdemodirs pubdemo.asc secdemo.asc cipher-1.asc geheim.txt \
|
||||
|
1
tests/t-data-1.txt
Normal file
1
tests/t-data-1.txt
Normal file
@ -0,0 +1 @@
|
||||
Just GNU it!
|
3
tests/t-data-2.txt
Normal file
3
tests/t-data-2.txt
Normal file
@ -0,0 +1,3 @@
|
||||
Just GNU it!
|
||||
Just GNU it!
|
||||
Just GNU it!
|
283
tests/t-data.c
Normal file
283
tests/t-data.c
Normal file
@ -0,0 +1,283 @@
|
||||
/* t-data - Regression tests for the GpgmeData abstraction.
|
||||
* Copyright (C) 2001 g10 Code GmbH
|
||||
*
|
||||
* This file is part of GPGME.
|
||||
*
|
||||
* GPGME 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.
|
||||
*
|
||||
* GPGME 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
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "../gpgme/gpgme.h"
|
||||
|
||||
#define fail_if_err(a) do { if(a) { \
|
||||
fprintf (stderr, "%s:%d: (%i) GpgmeError " \
|
||||
"%s\n", __FILE__, __LINE__, round, \
|
||||
gpgme_strerror(a)); \
|
||||
exit (1); } \
|
||||
} while(0)
|
||||
|
||||
static char *
|
||||
make_filename (const char *fname)
|
||||
{
|
||||
const char *srcdir = getenv ("srcdir");
|
||||
char *buf;
|
||||
|
||||
if (!srcdir)
|
||||
srcdir = ".";
|
||||
buf = malloc (strlen(srcdir) + strlen(fname) + 2 );
|
||||
if (!buf)
|
||||
{
|
||||
fprintf (stderr, "%s:%d: could not allocate string: %s\n",
|
||||
__FILE__, __LINE__, strerror (errno));
|
||||
exit (1);
|
||||
}
|
||||
strcpy (buf, srcdir);
|
||||
strcat (buf, "/");
|
||||
strcat (buf, fname);
|
||||
return buf;
|
||||
}
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TEST_INITIALIZER,
|
||||
TEST_INVALID_ARGUMENT,
|
||||
TEST_INOUT_NONE,
|
||||
TEST_INOUT_MEM_NO_COPY,
|
||||
TEST_INOUT_MEM_COPY,
|
||||
TEST_INOUT_MEM_FROM_FILE_COPY,
|
||||
TEST_INOUT_MEM_FROM_INEXISTANT_FILE,
|
||||
TEST_INOUT_MEM_FROM_FILE_NO_COPY,
|
||||
TEST_INOUT_MEM_FROM_FILE_PART_BY_NAME,
|
||||
TEST_INOUT_MEM_FROM_INEXISTANT_FILE_PART,
|
||||
TEST_INOUT_MEM_FROM_FILE_PART_BY_FP,
|
||||
TEST_OUT_CB,
|
||||
TEST_END
|
||||
} round_t;
|
||||
|
||||
const char *text = "Just GNU it!\n";
|
||||
|
||||
int
|
||||
read_cb (void *cb_value, char *buffer, size_t count, size_t *nread)
|
||||
{
|
||||
static int off = 0;
|
||||
round_t round = *((round_t *) cb_value);
|
||||
int amount = strlen (text) - off;
|
||||
|
||||
if (!buffer && !count && !nread)
|
||||
{
|
||||
/* Rewind requested. */
|
||||
off = 0;
|
||||
return 0;
|
||||
}
|
||||
if (! buffer || !nread)
|
||||
return -1;
|
||||
if (amount <= 0)
|
||||
{
|
||||
/* End of file. */
|
||||
*nread = 0;
|
||||
return -1;
|
||||
}
|
||||
if (amount > count)
|
||||
amount = count;
|
||||
memcpy (buffer, text, amount);
|
||||
off += amount;
|
||||
*nread = amount;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
read_once_test (round_t round, GpgmeData data)
|
||||
{
|
||||
GpgmeError err;
|
||||
char buffer[1024];
|
||||
int read;
|
||||
|
||||
err = gpgme_data_read (data, buffer, sizeof (buffer), &read);
|
||||
fail_if_err (err);
|
||||
|
||||
if (read != strlen (text) || strncmp (buffer, text, strlen (text)))
|
||||
{
|
||||
fprintf (stderr, "%s:%d: (%i) gpgme_data_read returned wrong data\n",
|
||||
__FILE__, __LINE__, round);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
err = gpgme_data_read (data, buffer, sizeof (buffer), &read);
|
||||
if (err != GPGME_EOF)
|
||||
{
|
||||
fprintf (stderr, "%s:%d: (%i) gpgme_data_read did not signal EOF\n",
|
||||
__FILE__, __LINE__, round);
|
||||
exit (1);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
read_test (round_t round, GpgmeData data)
|
||||
{
|
||||
GpgmeError err;
|
||||
char buffer[1024];
|
||||
int read;
|
||||
|
||||
if (round == TEST_INOUT_NONE)
|
||||
{
|
||||
err = gpgme_data_read (data, buffer, sizeof (buffer), &read);
|
||||
if (!err)
|
||||
{
|
||||
fprintf (stderr, "%s:%d: (%i) gpgme_data_read succeded unexpectedly\n",
|
||||
__FILE__, __LINE__, round);
|
||||
exit (1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
read_once_test (round, data);
|
||||
err = gpgme_data_rewind (data);
|
||||
fail_if_err (err);
|
||||
read_once_test (round, data);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv )
|
||||
{
|
||||
round_t round = TEST_INITIALIZER;
|
||||
const char *text_filename = make_filename ("t-data-1.txt");
|
||||
const char *longer_text_filename = make_filename ("t-data-2.txt");
|
||||
const char *missing_filename = "this-file-surely-does-not-exist";
|
||||
GpgmeError err = GPGME_No_Error;
|
||||
GpgmeData data;
|
||||
|
||||
while (++round)
|
||||
{
|
||||
switch (round)
|
||||
{
|
||||
case TEST_INVALID_ARGUMENT:
|
||||
err = gpgme_data_new (NULL);
|
||||
if (!err)
|
||||
{
|
||||
fprintf (stderr, "%s:%d: gpgme_data_new on NULL pointer succeeded "
|
||||
"unexpectedly\n", __FILE__, __LINE__);
|
||||
exit (1);
|
||||
}
|
||||
if (gpgme_data_get_type (NULL) != GPGME_DATA_TYPE_NONE)
|
||||
{
|
||||
fprintf (stderr, "%s:%d: gpgme_data_get_type on NULL incorrect\n",
|
||||
__FILE__, __LINE__);
|
||||
exit (1);
|
||||
}
|
||||
continue;
|
||||
case TEST_INOUT_NONE:
|
||||
err = gpgme_data_new (&data);
|
||||
break;
|
||||
case TEST_INOUT_MEM_NO_COPY:
|
||||
err = gpgme_data_new_from_mem (&data, text, strlen (text), 0);
|
||||
break;
|
||||
case TEST_INOUT_MEM_COPY:
|
||||
err = gpgme_data_new_from_mem (&data, text, strlen (text), 1);
|
||||
break;
|
||||
case TEST_INOUT_MEM_FROM_FILE_COPY:
|
||||
err = gpgme_data_new_from_file (&data, text_filename, 1);
|
||||
break;
|
||||
case TEST_INOUT_MEM_FROM_INEXISTANT_FILE:
|
||||
err = gpgme_data_new_from_file (&data, missing_filename, 1);
|
||||
if (!err)
|
||||
{
|
||||
fprintf (stderr, "%s:%d: gpgme_data_new_from_file on inexistant "
|
||||
"file succeeded unexpectedly\n", __FILE__, __LINE__);
|
||||
exit (1);
|
||||
}
|
||||
continue;
|
||||
case TEST_INOUT_MEM_FROM_FILE_NO_COPY:
|
||||
err = gpgme_data_new_from_file (&data, text_filename, 0);
|
||||
/* This is not implemented yet. */
|
||||
if (err == GPGME_Not_Implemented)
|
||||
continue;
|
||||
break;
|
||||
case TEST_INOUT_MEM_FROM_FILE_PART_BY_NAME:
|
||||
err = gpgme_data_new_from_filepart (&data, longer_text_filename, 0,
|
||||
strlen (text), strlen (text));
|
||||
break;
|
||||
case TEST_INOUT_MEM_FROM_INEXISTANT_FILE_PART:
|
||||
err = gpgme_data_new_from_filepart (&data, missing_filename, 0,
|
||||
strlen (text), strlen (text));
|
||||
if (!err)
|
||||
{
|
||||
fprintf (stderr, "%s:%d: gpgme_data_new_from_file on inexistant "
|
||||
"file succeeded unexpectedly\n", __FILE__, __LINE__);
|
||||
exit (1);
|
||||
}
|
||||
continue;
|
||||
case TEST_INOUT_MEM_FROM_FILE_PART_BY_FP:
|
||||
{
|
||||
FILE *fp = fopen (longer_text_filename, "rb");
|
||||
if (! fp)
|
||||
{
|
||||
fprintf (stderr, "%s:%d: fopen: %s\n", __FILE__, __LINE__,
|
||||
strerror (errno));
|
||||
exit (1);
|
||||
}
|
||||
err = gpgme_data_new_from_filepart (&data, 0, fp,
|
||||
strlen (text), strlen (text));
|
||||
}
|
||||
break;
|
||||
case TEST_OUT_CB:
|
||||
err = gpgme_data_new_with_read_cb (&data, read_cb, &round);
|
||||
break;
|
||||
case TEST_END:
|
||||
return 0;
|
||||
case TEST_INITIALIZER:
|
||||
/* Shouldn't happen. */
|
||||
fprintf (stderr, "%s:%d: impossible condition\n", __FILE__, __LINE__);
|
||||
exit (1);
|
||||
}
|
||||
fail_if_err (err);
|
||||
|
||||
switch (round)
|
||||
{
|
||||
case TEST_INOUT_NONE:
|
||||
if (gpgme_data_get_type (data) != GPGME_DATA_TYPE_NONE)
|
||||
err = GPGME_Invalid_Type;
|
||||
break;
|
||||
case TEST_INOUT_MEM_NO_COPY:
|
||||
case TEST_INOUT_MEM_COPY:
|
||||
case TEST_INOUT_MEM_FROM_FILE_COPY:
|
||||
case TEST_INOUT_MEM_FROM_FILE_NO_COPY:
|
||||
case TEST_INOUT_MEM_FROM_FILE_PART_BY_NAME:
|
||||
case TEST_INOUT_MEM_FROM_FILE_PART_BY_FP:
|
||||
if (gpgme_data_get_type (data) != GPGME_DATA_TYPE_MEM)
|
||||
err = GPGME_Invalid_Type;
|
||||
break;
|
||||
case TEST_OUT_CB:
|
||||
if (gpgme_data_get_type (data) != GPGME_DATA_TYPE_CB)
|
||||
err = GPGME_Invalid_Type;
|
||||
break;
|
||||
case TEST_INITIALIZER:
|
||||
case TEST_INVALID_ARGUMENT:
|
||||
case TEST_INOUT_MEM_FROM_INEXISTANT_FILE:
|
||||
case TEST_INOUT_MEM_FROM_INEXISTANT_FILE_PART:
|
||||
case TEST_END:
|
||||
/* Shouldn't happen. */
|
||||
fprintf (stderr, "%s:%d: impossible condition\n", __FILE__, __LINE__);
|
||||
exit (1);
|
||||
}
|
||||
read_test (round, data);
|
||||
|
||||
gpgme_data_release (data);
|
||||
}
|
||||
return 0;
|
||||
}
|
45
tests/t-version.c
Normal file
45
tests/t-version.c
Normal file
@ -0,0 +1,45 @@
|
||||
/* t-version.c - regression test
|
||||
* Copyright (C) 2001 g10 Code GmbH
|
||||
*
|
||||
* This file is part of GPGME.
|
||||
*
|
||||
* GPGME 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.
|
||||
*
|
||||
* GPGME 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 HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include "../gpgme/gpgme.h"
|
||||
|
||||
static const char version[] = VERSION;
|
||||
|
||||
int
|
||||
main (int argc, char **argv )
|
||||
{
|
||||
const char *null_result;
|
||||
const char *current_result;
|
||||
const char *future_result;
|
||||
|
||||
null_result = gpgme_check_version (NULL);
|
||||
current_result = gpgme_check_version (VERSION);
|
||||
future_result = gpgme_check_version (VERSION ".1");
|
||||
|
||||
return !(null_result
|
||||
&& ! strcmp (null_result, VERSION)
|
||||
&& current_result
|
||||
&& ! strcmp (current_result, VERSION)
|
||||
&& ! future_result);
|
||||
}
|
Loading…
Reference in New Issue
Block a user