Add ResultSet#getRecords test
[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("@attr 1=4 utah",
19         Connection.QueryType.PrefixQuery);
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
56   @Test
57   public void unsupportedSyntax() {
58     System.out.println("Open connection to z3950.loc.gov:7090/voyager...");
59     Connection con = new Connection("z3950.loc.gov:7090/voyager", 0);
60     try {
61       System.out.println("Set syntax to 'rusmarc'");
62       con.setSyntax("rusmarc");
63       con.connect();
64       System.out.println("Search for something that exists...");
65       ResultSet set = con.search("@attr 1=7 0253333490",
66         Connection.QueryType.PrefixQuery);
67       System.out.println("Result set size: " + set.getHitCount());
68       System.out.println("Get the first record...");
69       Record rec = set.getRecord(0);
70       if (rec == null) {
71         System.out.println("Record is null");
72       } else {
73         System.out.print(rec.render());
74       }
75     } catch (ZoomException ze) {
76       //fail(ze.getMessage());
77     } finally {
78       con.close();
79     }
80   }
81
82   @Test
83   /**
84    * This only works with local ztest
85    */
86   public void recordError() {
87     Connection con = new Connection("localhost:9999", 0);
88     assertNotNull(con);
89     try {
90       con.setSyntax("postscript");
91       System.out.println("Open connection to localhost:9999...");
92       con.connect();
93       ResultSet s = con.search("100", Connection.QueryType.PrefixQuery);
94       assertNotNull(s);
95       assertEquals(s.getHitCount(), 100);
96       Record rec = s.getRecord(0);
97       fail("We should never get here and get ZoomeException instead");
98     } catch (ZoomException ze) {
99       // we need more specific exceptions here
100       System.out.println(ze.getMessage());
101     } finally {
102       con.close();
103     }
104   }
105
106   @Test
107   public void testScan() {
108     System.out.println("Open connection to z3950cat.bl.uk:9909/BLAC");
109     Connection con = new Connection("z3950cat.bl.uk:9909/BLAC", 0);
110     try {
111       con.connect();
112       con.option("number", "20");
113       ScanSet set = con.scan("@attr 1=21 \"development\"");
114       System.out.println("getSize(): " + set.getSize());
115       assertEquals(20, set.getSize());
116
117     } catch (ZoomException ex) {
118       fail(ex.getMessage());
119     } finally {
120       con.close();
121     }
122   }
123 }