Tests as separate object implementations
[yazpp-moved-to-github.git] / zlint / zlint.h
1 /*
2  * Copyright (c) 2004, Index Data.
3  * See the file LICENSE for details.
4  * 
5  * $Id: zlint.h,v 1.1 2004-03-25 23:14:07 adam Exp $
6  */
7
8 #include <yaz++/z-assoc.h>
9
10 enum Zlint_code {
11     TEST_FINISHED,
12     TEST_CONTINUE,
13     TEST_REOPEN,
14 };
15
16 class Zlint_test;
17 class Zlint_t;
18
19 class Zlint : public Yaz_Z_Assoc {
20 public:
21     Zlint(IYaz_PDU_Observable *the_PDU_Observable);
22     ~Zlint();
23     void add_test(Zlint_test *i);
24     void set_host(const char *cp);
25     int initResponseGetVersion(Z_InitResponse *init);
26     Z_ReferenceId *mk_refid(const char *buf, int len);
27     void msg_check_for(const char *fmt, ...);
28     void msg_check_ok();
29     void msg_check_fail(const char *fmt, ...);
30     void msg_check_info(const char *fmt, ...);
31     void msg_check_notapp();
32     void getDatabase(char ***db, int *num);
33 private:
34     void connectNotify();
35     void timeoutNotify();
36     void failNotify();
37     void recv_GDU(Z_GDU *apdu, int len);
38     IYaz_PDU_Observable *m_PDU_Observable;
39     IYaz_PDU_Observer *sessionNotify(
40         IYaz_PDU_Observable *the_PDU_Observable, int fd);
41     Zlint_t *m_tests;
42     Zlint_t *m_cur_test;
43     char *m_host;
44     char *m_database;
45     void close_goto_next();
46 };
47
48 class Zlint_test {
49 public:
50     virtual Zlint_code init(Zlint *z) = 0;
51     virtual Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu) = 0;
52     virtual Zlint_code recv_fail(Zlint *z, int reason) = 0;
53 };
54
55 class Zlint_test_simple : public Zlint_test {
56 public:
57     virtual Zlint_code init(Zlint *z) = 0;
58     virtual Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu) = 0;
59     virtual Zlint_code recv_fail(Zlint *z, int reason);
60 };
61
62 class Zlint_test_init_01 : public Zlint_test_simple {
63 public:
64     Zlint_test_init_01();
65     virtual ~Zlint_test_init_01();
66     Zlint_code init(Zlint *z);
67     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
68 };
69
70 class Zlint_test_init_02 : public Zlint_test_simple {
71 public:
72     Zlint_test_init_02();
73     virtual ~Zlint_test_init_02();
74     Zlint_code init(Zlint *z);
75     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
76 };
77
78 class Zlint_test_init_03 : public Zlint_test_simple {
79 public:
80     Zlint_test_init_03();
81     virtual ~Zlint_test_init_03();
82     Zlint_code init(Zlint *z);
83     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
84 };
85
86 class Zlint_test_init_04 : public Zlint_test_simple {
87 public:
88     Zlint_test_init_04();
89     virtual ~Zlint_test_init_04();
90     Zlint_code init(Zlint *z);
91     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
92 };
93
94 class Zlint_test_init_05 : public Zlint_test_simple {
95     int m_init_response_no;
96 public:
97     Zlint_test_init_05();
98     virtual ~Zlint_test_init_05();
99     Zlint_code init(Zlint *z);
100     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
101 };
102
103 class Zlint_test_init_06 : public Zlint_test_simple {
104 public:
105     Zlint_test_init_06();
106     virtual ~Zlint_test_init_06();
107     Zlint_code init(Zlint *z);
108     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
109 };
110
111 class Zlint_test_init_07 : public Zlint_test_simple {
112 public:
113     Zlint_test_init_07();
114     virtual ~Zlint_test_init_07();
115     Zlint_code init(Zlint *z);
116     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
117 };
118
119 class Zlint_test_init_08 : public Zlint_test {
120     int m_no;
121 public:
122     Zlint_test_init_08();
123     virtual ~Zlint_test_init_08();
124     Zlint_code init(Zlint *z);
125     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
126     Zlint_code recv_fail(Zlint *z, int reason);
127 };
128
129 class Zlint_test_search_01 : public Zlint_test {
130     int m_query_no;
131     int m_got_result_set;
132     int m_record_syntax_no;
133     int m_sort_no;
134     Zlint_code sendTest(Zlint *z);
135 public:
136     Zlint_test_search_01();
137     virtual ~Zlint_test_search_01();
138     Zlint_code init(Zlint *z);
139     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
140     Zlint_code recv_fail(Zlint *z, int reason);
141 };
142
143 class Zlint_test_scan_01 : public Zlint_test {
144     int m_scan_no;
145     Zlint_code sendTest(Zlint *z);
146 public:
147     Zlint_test_scan_01();
148     virtual ~Zlint_test_scan_01();
149     Zlint_code init(Zlint *z);
150     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
151     Zlint_code recv_fail(Zlint *z, int reason);
152 };