Merge branch 'master' into jp2levels
[bookreader.git] / BookReaderIA / test / unit / Search.js
1 // Tests for Search
2
3 // $$$ TODO -- make the test host configurable/automagic
4 // $$$ Refactor common code across tests
5
6 module("Search");
7
8 // $$$ set to test host
9 var gTestAccount = 'testflip';
10 //var gTestAccount = 'mang';
11 var gTestHost = 'http://www-' + gTestAccount + '.archive.org';
12
13 // Holds search text
14 var gSearchText = '';
15
16 test("Hello test", function() {
17     expect(1);
18     equals("Hello world", "Hello world", "Hi there");
19 });
20
21 // Returns locator URL for the given id
22 function jsLocateURL(identifier, book) {
23     var bookURL = gTestHost + '/bookreader/BookReaderJSLocate.php?id=' + identifier;
24     if (book) {
25         bookURL += '&book=' + book;
26     }
27     return bookURL;
28 }
29
30 // Build search URL
31 function searchURL(bookReader, term, callback) {
32     var url = 'http://' + bookReader.server
33                + '/BookReader/flipbook_search_br.php?url='+escape(bookReader.bookPath + '_djvu.xml')
34                +'&term='+escape(term)+'&format=XML&callback=' + callback;
35     return url;
36 }
37
38 // Search, results to xmlCallback(txtData, textstatus) or errorCallback
39 function search(searchURL, xmlCallback, errorCallback) {
40     $.ajax({
41         type: 'GET',
42         dataType: 'script',
43         url: searchURL,
44         success: xmlCallback,
45         error: errorCallback
46     }); 
47 }
48
49 function setSearchText(txtData) {
50     gSearchText = txtData;
51 }
52
53 // Set up dummy BookReader class for JSLocate
54 function BookReader() {
55 };
56
57 BookReader.prototype.init = function() {
58     return true;
59 };
60
61 function locateTest(title, identifier, book) {
62     asyncTest("JSLocate for " + identifier, function() {
63         expect(2);
64         var locateURL = jsLocateURL(identifier, book);
65         
66         $.ajax({
67             url: locateURL,
68             dataType: 'script',
69             complete: function() {
70                 try {
71                     equals(typeof(br) != 'undefined', true, 'br is not undefined');
72                     equals(br.bookTitle, title, 'Title');
73                 } catch (e) {
74                 }
75                 start();
76             }
77         });
78     });
79 };
80
81 function searchXMLTest(bookReader, term, expected) {
82     asyncTest("XML search results for " + term, function() {
83         expect(1);
84         setSearchText(undefined);
85         var searchDataURL = searchURL(br, term, 'setSearchText');
86         
87         $.ajax({
88             type: 'GET',
89             url: searchDataURL,
90             dataType: 'script',            
91             complete: function() {
92                 equals(gSearchText, expected, "XML search results");
93                 start();
94             }
95         });
96     });
97 };
98
99 locateTest('The Zenith Yearbook, 1993 High Point University', 'TheZenithYearbook1993HighPointUniversity', 'THE_ZENITH_1993');
100 var cassidyExpected = '<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/css" href="blank.css"?><SEARCH><PAGE file="THE_ZENITH_1993_0021.djvu" width="2700" height="3451"><CONTEXT> Carr Mike </CONTEXT><WORD coords="1350,2937,1493,2903,2932">Cassidy</WORD><CONTEXT>  Mhari Cattell  Seniors </CONTEXT></PAGE></SEARCH>';
101 searchXMLTest(this.br, 'cassidy', cassidyExpected);
102
103 locateTest('A Nestable Tapered Column Concept for Large Space Structures', 'ANestableTaperedColumnConceptForLargeSpaceStructures', '19760022270_1976022270');
104 var nasaExpected = '<?xml version=\"1.0\" encoding=\"utf-8\"?><?xml-stylesheet type=\"text/css\" href=\"blank.css\"?><SEARCH><PAGE file=\"19760022270_1976022270_0001.djvu\" width=\"2504\" height=\"3112\"><CONTEXT> the Space </CONTEXT><WORD coords=\"1894,1738,2062,1700,1736\">Shuttle</WORD><CONTEXT>  and that nestable, tapered columns easily </CONTEXT></PAGE><PAGE file=\"19760022270_1976022270_0002.djvu\" width=\"2481\" height=\"3104\"><CONTEXT> for Space </CONTEXT><WORD coords=\"308,2896,479,2859,2895\">Shuttle</WORD><CONTEXT>  to be achieved and thereby minimize the </CONTEXT></PAGE><PAGE file=\"19760022270_1976022270_0003.djvu\" width=\"2468\" height=\"3099\"><CONTEXT> with Space </CONTEXT><WORD coords=\"1924,1137,2093,1100,1136\">Shuttle</WORD><CONTEXT>  to be achieved. All studies in </CONTEXT></PAGE><PAGE file=\"19760022270_1976022270_0004.djvu\" width=\"2475\" height=\"3099\"><CONTEXT> one Space </CONTEXT><WORD coords=\"881,1431,1048,1394,1430\">Shuttle</WORD><CONTEXT>  cargo bay, using various efficient structural </CONTEXT></PAGE><PAGE file=\"19760022270_1976022270_0007.djvu\" width=\"2488\" height=\"3114\"><CONTEXT> for Space </CONTEXT><WORD coords=\"1339,2376,1508,2340,2375\">Shuttle</WORD><CONTEXT>  with very efficient lightweight, structural components.</CONTEXT></PAGE><PAGE file=\"19760022270_1976022270_0008.djvu\" width=\"2488\" height=\"3102\"><CONTEXT> requires fewer </CONTEXT><WORD coords=\"1853,1687,2023,1650,1686\">shuttle</WORD><CONTEXT>  flights. Also it is shown that </CONTEXT></PAGE><PAGE file=\"19760022270_1976022270_0009.djvu\" width=\"2497\" height=\"3108\"><CONTEXT> for Space </CONTEXT><WORD coords=\"1953,1607,2121,1569,1605\">Shuttle</WORD><CONTEXT>  to offload cargos of men and/or </CONTEXT></PAGE><PAGE file=\"19760022270_1976022270_0010.djvu\" width=\"2459\" height=\"3078\"><CONTEXT> the Space </CONTEXT><WORD coords=\"1688,1063,1864,1022,1062\">Shuttle</WORD><CONTEXT>  and that nestable tapered columns easily eliminate </CONTEXT></PAGE><PAGE file=\"19760022270_1976022270_0014.djvu\" width=\"2464\" height=\"3081\"><CONTEXT> * </CONTEXT><WORD coords=\"335,1088,493,1052,1087\">Shuttle</WORD><CONTEXT>  Limit S o IS u u V </CONTEXT></PAGE><PAGE file=\"19760022270_1976022270_0015.djvu\" width=\"2460\" height=\"3087\"><CONTEXT> Number of </CONTEXT><WORD coords=\"870,2793,1040,2754,2792\">shuttle</WORD><CONTEXT>  flights required for placing a tetrahedral truss </CONTEXT></PAGE></SEARCH>';
105 searchXMLTest(this.br, 'shuttle', nasaExpected);
106