⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testsuite.c

📁 samba服务器!
💻 C
📖 第 1 页 / 共 2 页
字号:
/*    Unix SMB/CIFS implementation.   libreplace tests   Copyright (C) Jelmer Vernooij 2006     ** NOTE! The following LGPL license applies to the talloc     ** library. This does NOT imply that all of Samba is released     ** under the LGPL      This library is free software; you can redistribute it and/or   modify it under the terms of the GNU Lesser General Public   License as published by the Free Software Foundation; either   version 2 of the License, or (at your option) any later version.   This library 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   Lesser General Public License for more details.   You should have received a copy of the GNU Lesser General Public   License along with this library; if not, write to the Free Software   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/#include "replace.h"/*  we include all the system/ include files here so that libreplace tests  them in the build farm*/#include "system/capability.h"#include "system/dir.h"#include "system/filesys.h"#include "system/glob.h"#include "system/iconv.h"#include "system/locale.h"#include "system/network.h"#include "system/passwd.h"#include "system/printing.h"#include "system/readline.h"#include "system/select.h"#include "system/shmem.h"#include "system/syslog.h"#include "system/terminal.h"#include "system/time.h"#include "system/wait.h"#include "system/aio.h"#define TESTFILE "testfile.dat"/*  test ftruncate() function */static int test_ftruncate(void){	struct stat st;	int fd;	const int size = 1234;	printf("test: ftruncate\n");	unlink(TESTFILE);	fd = open(TESTFILE, O_RDWR|O_CREAT, 0600);	if (fd == -1) {		printf("failure: ftruncate [\n"			   "creating '%s' failed - %s\n]\n", TESTFILE, strerror(errno));		return false;	}	if (ftruncate(fd, size) != 0) {		printf("failure: ftruncate [\n%s\n]\n", strerror(errno));		return false;	}	if (fstat(fd, &st) != 0) {		printf("failure: ftruncate [\nfstat failed - %s\n]\n", strerror(errno));		return false;	}	if (st.st_size != size) {		printf("failure: ftruncate [\ngave wrong size %d - expected %d\n]\n",		       (int)st.st_size, size);		return false;	}	unlink(TESTFILE);	printf("success: ftruncate\n");	return true;}/*  test strlcpy() function.  see http://www.gratisoft.us/todd/papers/strlcpy.html */static int test_strlcpy(void){	char buf[4];	const struct {		const char *src;		size_t result;	} tests[] = {		{ "abc", 3 },		{ "abcdef", 6 },		{ "abcd", 4 },		{ "", 0 },		{ NULL, 0 }	};	int i;	printf("test: strlcpy\n");	for (i=0;tests[i].src;i++) {		if (strlcpy(buf, tests[i].src, sizeof(buf)) != tests[i].result) {			printf("failure: strlcpy [\ntest %d failed\n]\n", i);			return false;		}	}	printf("success: strlcpy\n");	return true;}static int test_strlcat(void){	char tmp[10];	printf("test: strlcat\n");	strlcpy(tmp, "", sizeof(tmp));	if (strlcat(tmp, "bla", 3) != 3) {		printf("failure: strlcat [\ninvalid return code\n]\n");		return false;	}	if (strcmp(tmp, "bl") != 0) {		printf("failure: strlcat [\nexpected \"bl\", got \"%s\"\n]\n", 			   tmp);		return false;	}	strlcpy(tmp, "da", sizeof(tmp));	if (strlcat(tmp, "me", 4) != 4) {		printf("failure: strlcat [\nexpected \"dam\", got \"%s\"\n]\n",			   tmp);		return false;	}	printf("success: strlcat\n");	return true;}static int test_mktime(void){	/* FIXME */	return true;}static int test_initgroups(void){	/* FIXME */	return true;}static int test_memmove(void){	/* FIXME */	return true;}static int test_strdup(void){	char *x;	printf("test: strdup\n");	x = strdup("bla");	if (strcmp("bla", x) != 0) {		printf("failure: strdup [\nfailed: expected \"bla\", got \"%s\"\n]\n",			   x);		return false;	}	free(x);	printf("success: strdup\n");	return true;}	static int test_setlinebuf(void){	printf("test: setlinebuf\n");	setlinebuf(stdout);	printf("success: setlinebuf\n");	return true;}static int test_vsyslog(void){	/* FIXME */	return true;}static int test_timegm(void){	/* FIXME */	return true;}static int test_setenv(void){#define TEST_SETENV(key, value, overwrite, result) do { \	int _ret; \	char *_v; \	_ret = setenv(key, value, overwrite); \	if (_ret != 0) { \		printf("failure: setenv [\n" \			"setenv(%s, %s, %d) failed\n" \			"]\n", \			key, value, overwrite); \		return false; \	} \	_v=getenv(key); \	if (!_v) { \		printf("failure: setenv [\n" \			"getenv(%s) returned NULL\n" \			"]\n", \			key); \		return false; \	} \	if (strcmp(result, _v) != 0) { \		printf("failure: setenv [\n" \			"getenv(%s): '%s' != '%s'\n" \			"]\n", \			key, result, _v); \		return false; \	} \} while(0)#define TEST_UNSETENV(key) do { \	char *_v; \	unsetenv(key); \	_v=getenv(key); \	if (_v) { \		printf("failure: setenv [\n" \			"getenv(%s): NULL != '%s'\n" \			"]\n", \			SETENVTEST_KEY, _v); \		return false; \	} \} while (0)#define SETENVTEST_KEY "SETENVTESTKEY"#define SETENVTEST_VAL "SETENVTESTVAL"	printf("test: setenv\n");	TEST_SETENV(SETENVTEST_KEY, SETENVTEST_VAL"1", 0, SETENVTEST_VAL"1");	TEST_SETENV(SETENVTEST_KEY, SETENVTEST_VAL"2", 0, SETENVTEST_VAL"1");	TEST_SETENV(SETENVTEST_KEY, SETENVTEST_VAL"3", 1, SETENVTEST_VAL"3");	TEST_SETENV(SETENVTEST_KEY, SETENVTEST_VAL"4", 1, SETENVTEST_VAL"4");	TEST_UNSETENV(SETENVTEST_KEY);	TEST_UNSETENV(SETENVTEST_KEY);	TEST_SETENV(SETENVTEST_KEY, SETENVTEST_VAL"5", 0, SETENVTEST_VAL"5");	TEST_UNSETENV(SETENVTEST_KEY);	TEST_UNSETENV(SETENVTEST_KEY);	printf("success: setenv\n");	return true;}static int test_strndup(void){	char *x;	printf("test: strndup\n");	x = strndup("bla", 0);	if (strcmp(x, "") != 0) {		printf("failure: strndup [\ninvalid\n]\n");		return false;	}	free(x);	x = strndup("bla", 2);	if (strcmp(x, "bl") != 0) {		printf("failure: strndup [\ninvalid\n]\n");		return false;	}	free(x);	x = strndup("bla", 10);	if (strcmp(x, "bla") != 0) {		printf("failure: strndup [\ninvalid\n]\n");		return false;	}	free(x);	printf("success: strndup\n");	return true;}static int test_strnlen(void){	printf("test: strnlen\n");	if (strnlen("bla", 2) != 2) {		printf("failure: strnlen [\nunexpected length\n]\n");		return false;	}	if (strnlen("some text\n", 0) != 0) {		printf("failure: strnlen [\nunexpected length\n]\n");		return false;	}	if (strnlen("some text", 20) != 9) {		printf("failure: strnlen [\nunexpected length\n]\n");		return false;	}	printf("success: strnlen\n");	return true;}static int test_waitpid(void){	/* FIXME */	return true;}static int test_seteuid(void){	/* FIXME */	return true;}static int test_setegid(void){	/* FIXME */	return true;}static int test_asprintf(void){	char *x;	printf("test: asprintf\n");	if (asprintf(&x, "%d", 9) != 1) {		printf("failure: asprintf [\ngenerate asprintf\n]\n");		return false;	}	if (strcmp(x, "9") != 0) {		printf("failure: asprintf [\ngenerate asprintf\n]\n");		return false;	}	if (asprintf(&x, "dat%s", "a") != 4) {		printf("failure: asprintf [\ngenerate asprintf\n]\n");		return false;	}	if (strcmp(x, "data") != 0) {		printf("failure: asprintf [\ngenerate asprintf\n]\n");		return false;	}	printf("success: asprintf\n");	return true;}static int test_snprintf(void){	char tmp[10];	printf("test: snprintf\n");	if (snprintf(tmp, 3, "foo%d", 9) != 4) {		printf("failure: snprintf [\nsnprintf return code failed\n]\n");		return false;	}	if (strcmp(tmp, "fo") != 0) {		printf("failure: snprintf [\nsnprintf failed\n]\n");		return false;	}	printf("success: snprintf\n");	return true;}static int test_vasprintf(void){	/* FIXME */	return true;}static int test_vsnprintf(void){	/* FIXME */	return true;}static int test_opendir(void){	/* FIXME */	return true;}extern int test_readdir_os2_delete(void);static int test_readdir(void){	printf("test: readdir\n");	if (test_readdir_os2_delete() != 0) {		return false;	}	printf("success: readdir\n");	return true;}static int test_telldir(void){	/* FIXME */	return true;}static int test_seekdir(void){	/* FIXME */	return true;}static int test_dlopen(void){	/* FIXME: test dlopen, dlsym, dlclose, dlerror */	return true;}static int test_chroot(void){	/* FIXME: chroot() */	return true;}static int test_bzero(void){	/* FIXME: bzero */	return true;}static int test_strerror(void){	/* FIXME */	return true;}static int test_errno(void){	printf("test: errno\n");	errno = 3;	if (errno != 3) {		printf("failure: errno [\nerrno failed\n]\n");		return false;	}	printf("success: errno\n");	return true;}static int test_mkdtemp(void){	/* FIXME */	return true;}static int test_mkstemp(void){	/* FIXME */	return true;}static int test_pread(void){	/* FIXME */	return true;}static int test_pwrite(void)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -