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