83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Prolog
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Prolog
		
	
	
	
	
	
| :- module(test_http,
 | |
| 	  [ test_http/0
 | |
| 	  ]).
 | |
| :- asserta(user:file_search_path(foreign, '.')).
 | |
| :- asserta(user:file_search_path(foreign, '../clib')).
 | |
| :- asserta(user:file_search_path(foreign, '../sgml')).
 | |
| :- asserta(user:file_search_path(library, '..')).
 | |
| :- asserta(user:file_search_path(library, '../sgml')).
 | |
| :- asserta(user:file_search_path(library, '../plunit')).
 | |
| :- asserta(user:file_search_path(library, '../clib')).
 | |
| 
 | |
| :- use_module(library(http/http_open)).
 | |
| :- use_module(library(http/http_client)).
 | |
| :- use_module(library(http/http_stream)).
 | |
| :- use_module(library(plunit)).
 | |
| :- use_module(library(readutil)).
 | |
| :- use_module(library(socket)).
 | |
| :- use_module(library(debug)).
 | |
| :- use_module(library(lists)).
 | |
| 
 | |
| test_http :-
 | |
| 	run_tests([ http_open,
 | |
| 		    http_get
 | |
| 		  ]).
 | |
| 
 | |
| 
 | |
| :- begin_tests(http_open).
 | |
| 
 | |
| test(gollem, true) :-
 | |
|      http_open('http://gollem.science.uva.nl/', In, []),
 | |
|      read_stream_to_codes(In, Codes),
 | |
|      close(In),
 | |
|      appendchk(_, "http://www.swi-prolog.org/", _, Codes).
 | |
| test(gollem_redirect, true) :-
 | |
|      http_open('http://gollem.science.uva.nl', In, []),
 | |
|      read_stream_to_codes(In, Codes),
 | |
|      close(In),
 | |
|      appendchk(_, "http://www.swi-prolog.org/", _, Codes).
 | |
| test(gollem_chunked, true(Codes == Ref)) :-
 | |
|      http_open('http://gollem.science.uva.nl/cgi-bin/chunked', In, []),
 | |
|      read_stream_to_codes(In, Codes),
 | |
|      close(In),
 | |
|      chunked_data(Ref).
 | |
| 
 | |
| :- end_tests(http_open).
 | |
| 
 | |
| :- begin_tests(http_get).
 | |
| 
 | |
| test(gollem, true) :-
 | |
|      http_get('http://gollem.science.uva.nl/', Data, [to(codes)]),
 | |
|      appendchk(_, "http://www.swi-prolog.org/", _, Data).
 | |
| 
 | |
| test(gollem_chunked, true(Data == Ref)) :-
 | |
|      http_get('http://gollem.science.uva.nl/cgi-bin/chunked',
 | |
| 	      Data, [to(codes)]),
 | |
|      chunked_data(Ref).
 | |
| 
 | |
| :- end_tests(http_get).
 | |
| 
 | |
| 		 /*******************************
 | |
| 		 *	       UTIL		*
 | |
| 		 *******************************/
 | |
| 
 | |
| read_file_to_codes(File, Codes) :-
 | |
| 	open(File, read, In),
 | |
| 	call_cleanup(read_stream_to_codes(In, Codes), close(In)).
 | |
| 
 | |
| appendchk(Pre, Middle, Post, List) :-
 | |
| 	append(Pre, Rest, List),
 | |
| 	append(Middle, Post, Rest), !.
 | |
| 
 | |
| %%	chunked_data(-String) is det.
 | |
| %
 | |
| %	Content of the chunked data that is sent by cgi-bin/chunked.
 | |
| 
 | |
| chunked_data(S) :-
 | |
| 	findall(C,
 | |
| 		(   between(1, 1000, X),
 | |
| 		    C is "a" + X mod 26
 | |
| 		), S).
 | |
| 
 | |
| 
 |