Implement iterable on result set
[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
7 public class ConnectionTest {
8
9   @Test
10   public void testConnection() {
11     Connection con = new Connection("z3950.indexdata.dk:210/gils", 0);
12     assertNotNull(con);
13     try {
14       con.setSyntax("sutrs");
15       System.out.println("Open connection to z3950.indexdata.dk:210/gils...");
16       con.connect();
17       ResultSet s = con.search("@attr 1=4 utah",
18         Connection.QueryType.PrefixQuery);
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     } catch (ZoomException ze) {
39       fail(ze.getMessage());
40     } finally {
41       con.close();
42     }
43   }
44
45
46   @Test
47   public void unsupportedSyntax() {
48     System.out.println("Open connection to z3950.loc.gov:7090/voyager...");
49     Connection con = new Connection("z3950.loc.gov:7090/voyager", 0);
50     try {
51       System.out.println("Set syntax to 'rusmarc'");
52       con.setSyntax("rusmarc");
53       con.connect();
54       System.out.println("Search for something that exists...");
55       ResultSet set = con.search("@attr 1=7 0253333490",
56         Connection.QueryType.PrefixQuery);
57       System.out.println("Result set size: " + set.getHitCount());
58       System.out.println("Get the first record...");
59       Record rec = set.getRecord(0);
60       if (rec == null) {
61         System.out.println("Record is null");
62       } else {
63         System.out.print(rec.render());
64       }
65     } catch (ZoomException ze) {
66       //fail(ze.getMessage());
67     } finally {
68       con.close();
69     }
70   }
71
72   @Test
73   /**
74    * This only works with local ztest
75    */
76   public void recordError() {
77     Connection con = new Connection("localhost:9999", 0);
78     assertNotNull(con);
79     try {
80       con.setSyntax("postscript");
81       System.out.println("Open connection to localhost:9999...");
82       con.connect();
83       ResultSet s = con.search("100", Connection.QueryType.PrefixQuery);
84       assertNotNull(s);
85       assertEquals(s.getHitCount(), 100);
86       Record rec = s.getRecord(0);
87       fail("We should never get here and get ZoomeException instead");
88     } catch (ZoomException ze) {
89       // we need more specific exceptions here
90       System.out.println(ze.getMessage());
91     } finally {
92       con.close();
93     }
94   }
95
96   @Test
97   public void testScan() {
98     System.out.println("Open connection to z3950cat.bl.uk:9909/BLAC");
99     Connection con = new Connection("z3950cat.bl.uk:9909/BLAC", 0);
100     try {
101       con.connect();
102       con.option("number", "20");
103       ScanSet set = con.scan("@attr 1=21 \"development\"");
104       System.out.println("getSize(): " + set.getSize());
105       assertEquals(20, set.getSize());
106
107     } catch (ZoomException ex) {
108       fail(ex.getMessage());
109     } finally {
110       con.close();
111     }
112   }
113 }