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

📄 ftp_client_proto_test.cc

📁 实现了poll/epoll/devpoll等C++封装
💻 CC
字号:
#include "ftp_client_proto.h"#include <assert.h>#include <ctype.h>#include <errno.h>#include <netinet/in.h>#include <string.h>#include <stdio.h>#include <stdlib.h>void check(int d, int e, int line) { if (d != e) {		printf("check: test failed: %d != %d at line %d\n", d, e, line);		exit(1);	}}void strcheck(const char * d, const char * e, int line){	if (!d || !e) {		printf("strcheck: test failed: One of the character string is null: %s %s\n", d, e);		exit(1);	}	if (strcmp(d, e)) {		printf("strcheck: test failed: '%s' != '%s' at line %d\n", d, e, line);		exit(1);	}}void statuscheck(const char * d, int e, int line){	if (!d) {		printf("strcheck: test failed: Character string is null\n");		exit(1);	}	if (atoi(d) != e) {		printf("statuscheck: test failed: atoi(%s) != %d at line %d\n", d, e, line);		exit(1);	}}#define CHECK(d, e) check(d, e, __LINE__)#define STRCHECK(d, e) strcheck(d, e, __LINE__)#define STATUSCHECK(d, e) statuscheck(d, e, __LINE__)#define SLEN 1024/* Main program to test the ftp client protocol module. * Doesn't need any networking; simulates the server itself. * Prints message and exits with nonzero status if any test fails. */int main(int argc, char **argv){	ftp_client_proto_t ftp;	int err;	char sbuf[SLEN];	const char *p;	(void) argc; (void) argv;	ftp.init();	CHECK(ftp.isOutputReady(), false);	/*---------------------*/	/* Test login() method */	err = ftp.login("user", "password");		/* start login */	CHECK(err,0);	/* Simulate server's response to connect */	CHECK(ftp.isInputReady(), true);	err = ftp.giveInput("221 Hello, welcome to ftp.null.net");	CHECK(err,0);	CHECK(ftp.isOutputReady(), true);	p = ftp.getOutput();	STRCHECK(p, "USER user\r\n");				/* it should send USER... */	err = ftp.advanceOutput();	CHECK(err,0);	CHECK(ftp.isOutputReady(), false);	/* Simulate server's response to USER */	CHECK(ftp.isInputReady(), true);	err = ftp.giveInput("331 User name OK, need password.");	CHECK(err,0);	CHECK(ftp.isOutputReady(), true);	p = ftp.getOutput();	STRCHECK(p, "PASS password\r\n");			/* followed by PASS. */	err = ftp.advanceOutput();	CHECK(err,0);	CHECK(ftp.isOutputReady(), false);	CHECK(ftp.getStatus(sbuf,SLEN), 0);			/* command shouldn't end... */	/* Simulate server's response to PASS */	CHECK(ftp.isInputReady(), true);	err = ftp.giveInput("230 Login successful.");	CHECK(err,0);	CHECK(ftp.isOutputReady(), false);	CHECK(ftp.getStatus(sbuf, SLEN), 230);		/* ... until 230 comes back. */	STRCHECK(sbuf, "230 Login successful.");	/*------------------*/	/* Test cd() method */	err = ftp.cd("pub");	CHECK(err,0);	CHECK(ftp.isOutputReady(), true);	p = ftp.getOutput();	STRCHECK(p, "CWD pub\r\n");	err = ftp.advanceOutput();	CHECK(err,0);	CHECK(ftp.getStatus(sbuf, SLEN), 0);	CHECK(ftp.isOutputReady(), false);	/* Simulate server's response to CWD */	CHECK(ftp.isInputReady(), true);	err = ftp.giveInput("250 CWD command successful.");	CHECK(err,0);	CHECK(ftp.getStatus(sbuf, SLEN), 250);	STRCHECK(sbuf, "250 CWD command successful.");	/*--------------------*/	/* Test type() method */	err = ftp.type("I");	CHECK(err,0);	CHECK(ftp.isOutputReady(), true);	p = ftp.getOutput();	STRCHECK(p, "TYPE I\r\n");	err = ftp.advanceOutput();	CHECK(err,0);	CHECK(ftp.getStatus(sbuf, SLEN), 0);	CHECK(ftp.isOutputReady(), false);	/* Simulate server's response to TYPE */	CHECK(ftp.isInputReady(), true);	err = ftp.giveInput("200 TYPE command successful.");	CHECK(err,0);	CHECK(ftp.getStatus(sbuf, SLEN), 200);	STRCHECK(sbuf, "200 TYPE command successful.");	/*------------------*/	/* Test ls() method */	/* not written yet */	/* etc. */	printf("No tests failed.\n");	return 0;}

⌨️ 快捷键说明

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