Expose ZOOM query object
[yaz4j-moved-to-github.git] / src / test / org / yaz4j / ConnectionTest.java
1 package org.yaz4j;
2
3 import org.junit.*;
4 import static org.junit.Assert.*;
5 import org.yaz4j.exception.*;
6 import java.util.List;
7
8 public class ConnectionTest {
9   
10   @Test
11   public void testConnection() {
12     Connection con = new Connection("z3950.indexdata.dk:210/gils", 0);
13     assertNotNull(con);
14     try {
15       con.setSyntax("sutrs");
16       System.out.println("Open connection to z3950.indexdata.dk:210/gils...");
17       con.connect();
18       ResultSet s = con.search(new PrefixQuery("@attr 1=4 utah"));
19       System.out.println("Search for 'utah'...");
20       assertNotNull(s);
21       assertEquals(s.getHitCount(), 9);
22       Record rec = s.getRecord(0);
23       assertNotNull(rec);
24       byte[] content = rec.getContent();
25       // first SUTRS record
26       assertEquals(content.length, 1940);
27       assertEquals(content[0], 103);
28       assertEquals(rec.getSyntax(), "SUTRS");
29       assertEquals(rec.getDatabase(), "gils");
30       System.out.println("Read all records..");
31       // read all records
32       int i = 0;
33       for (Record r : s) {
34         assertNotNull(r);
35         System.out.println("Got "+i+" record of type "+r.getSyntax());
36         i++;
37       }
38       System.out.println("Try sorting them...");
39       s.sort("yaz", "1=4 >i 1=21 >s");
40       System.out.println("Try fetching them all at once...");
41       i = 0;
42       List<Record> all = s.getRecords(0, (int) s.getHitCount());
43       for (Record r : all) {
44         System.out.println("getRecords, rec '"+i+"'"+r.getSyntax());
45         System.out.println(r.render());
46         i++;
47       }
48     } catch (ZoomException ze) {
49       fail(ze.getMessage());
50     } finally {
51       con.close();
52     }
53   }
54
55   @Test
56   public void testConnectionDeprecated() {
57     Connection con = new Connection("z3950.indexdata.dk:210/gils", 0);
58     assertNotNull(con);
59     try {
60       con.setSyntax("sutrs");
61       System.out.println("Open connection to z3950.indexdata.dk:210/gils...");
62       con.connect();
63       ResultSet s = con.search("@attr 1=4 utah",
64         Connection.QueryType.PrefixQuery);
65       System.out.println("Search for 'utah'...");
66       assertNotNull(s);
67       assertEquals(s.getHitCount(), 9);
68       Record rec = s.getRecord(0);
69       assertNotNull(rec);
70       byte[] content = rec.getContent();
71       // first SUTRS record
72       assertEquals(content.length, 1940);
73       assertEquals(content[0], 103);
74       assertEquals(rec.getSyntax(), "SUTRS");
75       assertEquals(rec.getDatabase(), "gils");
76       System.out.println("Read all records..");
77       // read all records
78       int i = 0;
79       for (Record r : s) {
80         assertNotNull(r);
81         System.out.println("Got "+i+" record of type "+r.getSyntax());
82         i++;
83       }
84       System.out.println("Try sorting them...");
85       s.sort("yaz", "1=4 >i 1=21 >s");
86       System.out.println("Try fetching them all at once...");
87       i = 0;
88       List<Record> all = s.getRecords(0, (int) s.getHitCount());
89       for (Record r : all) {
90         System.out.println("getRecords, rec '"+i+"'"+r.getSyntax());
91         i++;
92       }
93     } catch (ZoomException ze) {
94       fail(ze.getMessage());
95     } finally {
96       con.close();
97     }
98   }
99
100
101   @Test
102   public void unsupportedSyntax() {
103     System.out.println("Open connection to z3950.loc.gov:7090/voyager...");
104     Connection con = new Connection("z3950.loc.gov:7090/voyager", 0);
105     try {
106       System.out.println("Set syntax to 'rusmarc'");
107       con.setSyntax("rusmarc");
108       con.connect();
109       System.out.println("Search for something that exists...");
110       ResultSet set = con.search("@attr 1=7 0253333490",
111         Connection.QueryType.PrefixQuery);
112       System.out.println("Result set size: " + set.getHitCount());
113       System.out.println("Get the first record...");
114       Record rec = set.getRecord(0);
115       if (rec == null) {
116         System.out.println("Record is null");
117       } else {
118         System.out.print(rec.render());
119       }
120     } catch (ZoomException ze) {
121       //fail(ze.getMessage());
122     } finally {
123       con.close();
124     }
125   }
126
127   @Test
128   /**
129    * This only works with local ztest
130    */
131   public void recordError() {
132     Connection con = new Connection("localhost:9999", 0);
133     assertNotNull(con);
134     try {
135       con.setSyntax("postscript");
136       System.out.println("Open connection to localhost:9999...");
137       con.connect();
138       ResultSet s = con.search("100", Connection.QueryType.PrefixQuery);
139       assertNotNull(s);
140       assertEquals(s.getHitCount(), 100);
141       Record rec = s.getRecord(0);
142       fail("We should never get here and get ZoomeException instead");
143     } catch (ZoomException ze) {
144       // we need more specific exceptions here
145       System.out.println(ze.getMessage());
146     } finally {
147       con.close();
148     }
149   }
150
151   @Test
152   public void testScan() {
153     System.out.println("Open connection to z3950cat.bl.uk:9909/BLAC");
154     Connection con = new Connection("z3950cat.bl.uk:9909/BLAC", 0);
155     try {
156       con.connect();
157       con.option("number", "20");
158       ScanSet set = con.scan("@attr 1=21 \"development\"");
159       System.out.println("getSize(): " + set.getSize());
160       assertEquals(20, set.getSize());
161
162     } catch (ZoomException ex) {
163       fail(ex.getMessage());
164     } finally {
165       con.close();
166     }
167   }
168 }