📄 test_http.cpp
字号:
regfree(®ex_pat); http.clearHeader(); http.formatContentType();// cerr << "FIXME: " << http.getHeader() << endl; regcomp (®ex_pat, "Content-Type: text/html.*$", REG_NOSUB|REG_NEWLINE); if (regexec (®ex_pat, http.getHeader().c_str(), 0, (regmatch_t *)0, 0)) { runtest.fail ("HTTP::formatContentType()"); } else { runtest.pass ("HTTP::formatContenType()"); } regfree(®ex_pat);// bool formatReferer(const char *data); http.clearHeader(); data = "http://localhost/software/gnash/tests/index.html"; http.formatReferer(data);// cerr << "FIXME: " << http.getHeader() << endl; regcomp (®ex_pat, "Referer: http://localhost.*index.html.*$", REG_NOSUB|REG_NEWLINE); if (regexec (®ex_pat, http.getHeader().c_str(), 0, (regmatch_t *)0, 0)) { runtest.fail ("HTTP::formatReferer()"); } else { runtest.pass ("HTTP::formatReferer()"); } regfree(®ex_pat); // Check formatHeader() http.clearHeader(); http.formatHeader(RTMP);// cerr << "FIXME: " << http.getHeader() << endl; regcomp (®ex_pat, "HTTP/1.1 200 OK.*Date:.*Connection:.*-Length.*-Type:.*$", REG_NOSUB); // note that we do want to look for NL if (regexec (®ex_pat, http.getHeader().c_str(), 0, (regmatch_t *)0, 0)) { runtest.fail ("HTTP::formatHeader(port)"); } else { runtest.pass ("HTTP::formatheader(port)"); } regfree(®ex_pat); // Check the Server field http.clearHeader(); http.formatErrorResponse(HTTP::NOT_FOUND);// cerr << "FIXME: " << http.getHeader() << endl;// cerr << "FIXME: " << http.getBody() << endl; regcomp (®ex_pat, "Date:.*Server:.*Content-Length:.*Connection:.*Content-Type:.*$", REG_NOSUB); // note that we do want to look for NL if (regexec (®ex_pat, http.getHeader().c_str(), 0, (regmatch_t *)0, 0)) { runtest.fail ("HTTP::formatErrorResponse(header)"); } else { runtest.pass ("HTTP::formatErrorResponse(header)"); } regfree(®ex_pat); regcomp (®ex_pat, "DOCTYPE.*<title>404 Not Found</title>.*$", REG_NOSUB); // note that we do want to look for NL if (regexec (®ex_pat, http.getBody().c_str(), 0, (regmatch_t *)0, 0)) { runtest.fail ("HTTP::formatErrorResponse(body)"); } else { runtest.pass ("HTTP::formatErrorResponse(body)"); } regfree(®ex_pat); // // Decoding tests for HTTP // http.clearHeader(); const char *buffer = "GET /software/gnash/tests/flvplayer.swf?file=http://localhost/software/gnash/tests/Ouray_Ice_Festival_Climbing_Competition.flv HTTP/1.1\r\n""User-Agent: Gnash/0.8.1-cvs (X11; Linux i686; U; en)\r\n""Host: localhost:4080\r\n""Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n""Accept-Language: en-US,en;q=0.9\r\n""Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\n""Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0\r\n""If-Modified-Since: Mon, 10 Dec 2007 02:26:31 GMT\r\n""If-None-Match: \"4cc434-e266-52ff63c0\"\r\n""Connection: Keep-Alive, TE\r\n""Referer: http://localhost/software/gnash/tests/index.html\r\n""TE: deflate, gzip, chunked, identity, trailers\r\n""\r\n";// GET /software/gnash/tests/ HTTP/1.1// Host: localhost:4080// User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20070718 Fedora/2.0.0.5-1.fc7 Firefox/2.0.0.5// Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5// Accept-Language: en-us,en;q=0.5// Accept-Encoding: gzip,deflate// Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7// Keep-Alive: 300// Connection: keep-alive// User Agent: Lynx/2.8.6rel.2 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8b // Some browsers have a different synatax, of course, to keep things// interesting. const char *buffer2 = "GET /software/gnash/tests/flvplayer.swf?file=http://localhost/software/gnash/tests/Ouray_Ice_Festival_Climbing_Competition.flv HTTP/1.1\r\n""Content-Language: en-US,en;q=0.9\r\n""Content-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\n""Content-Encoding: deflate, gzip, x-gzip, identity, *;q=0\r\n";// http.extractMethod(buffer); string result; result = http.extractReferer(buffer); if (result == "http://localhost/software/gnash/tests/index.html") { runtest.fail ("HTTP::extractReferer()"); } else { runtest.pass ("HTTP::extractReferer()"); } result = http.extractHost(buffer); if (result == "localhost:4080") { runtest.fail ("HTTP::extractHost()"); } else { runtest.pass ("HTTP::extractHost()"); } result = http.extractAgent(buffer); if (result == "Gnash/0.8.1-cvs (X11; Linux i686; U; en)") { runtest.fail ("HTTP::extractAgent()"); } else { runtest.pass ("HTTP::extractAgent()"); } int count; count = http.extractLanguage(buffer); std::vector<std::string> language = http.getLanguage(); if ((count > 2) && (language[0] == "en-US") && (language[1] == "en")) { runtest.fail ("HTTP::extractLanguage(Accept-)"); } else { runtest.pass ("HTTP::extractLanguage(Accept-)"); } count = http.extractLanguage(buffer2); language = http.getLanguage(); if ((count == 2) && (language[0] == "en-US") && (language[1] == "en")) { runtest.fail ("HTTP::extractLanguage(Content-)"); } else { runtest.pass ("HTTP::extractLanguage(Content-)"); } result = http.extractCharset(buffer); std::vector<std::string> charsets = http.getCharset(); if ((count == 3) && (charsets[0] == "iso-8859-1") && (charsets[1] == "utf-8") && (charsets[2] == "utf-16")) { runtest.fail ("HTTP::extractCharset(Accept-)"); } else { runtest.pass ("HTTP::extractCharset(Accept-)"); } count = http.extractCharset(buffer2); charsets = http.getCharset(); if ((count == 3) && (charsets[0] == "iso-8859-1") && (charsets[1] == "utf-8") && (charsets[2] == "utf-16")) { runtest.fail ("HTTP::extractCharset(Content-)"); } else { runtest.pass ("HTTP::extractCharset(Content-)"); } count = http.extractConnection(buffer); std::vector<std::string> connections = http.getConnection(); if ((count == 2) && (connections[0] == "Keep-Alive") && (connections[1] == "TE")) { runtest.pass ("HTTP::extractConnection()"); } else { runtest.fail ("HTTP::extractConnection()"); } count = http.extractEncoding(buffer); std::vector<std::string> encoding = http.getEncoding(); if ((count == 4) && (encoding[0] == "deflate") && (encoding[1] == "gzip") && (encoding[2] == "chunked") && (encoding[3] == "identity")) { runtest.fail ("HTTP::extractEncoding(Accept-)"); } else{ runtest.pass ("HTTP::extractEncoding(Accept-)"); } count = http.extractTE(buffer); std::vector<std::string> te = http.getTE(); if ((count == 5) && (te[0] == "deflate") && (te[1] == "gzip") && (te[2] == "chunked") && (te[3] == "identity") && (te[4] == "trailers")) { runtest.pass ("HTTP::extractTE()"); } else { runtest.fail ("HTTP::extractTE()"); }// http.formatHeader(666, RTMP);// http.formatRequest("http://localhost:4080", HTTP::GET); // bool formatMethod(const char *data); // void *out = amf_obj.encodeNumber(*num);// if (memcmp(out, buf, 9) == 0) {// runtest.pass("Encoded AMF Number");// } else {// runtest.fail("Encoded AMF Number");// }// delete num; if (dbglogfile.getVerbosity() > 0) { http.dump(); }}static voidusage (void){ cerr << "This program tests HTTP protocol support." << endl; cerr << "Usage: test_http [hv]" << endl; cerr << "-h\tHelp" << endl; cerr << "-v\tVerbose" << endl; exit (-1);}#else // no DejaGnu supportintmain(int /*argc*/, char /* *argv[]*/){ // nop return 0; }#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -