1#!/usr/bin/perl -w
2
3use lib '.','./t','./blib/lib','../blib/lib';
4# can run from here or distribution base
5
6# Before installation is performed this script should be runnable with
7# `perl test4.t time' which pauses `time' seconds (1..5) between pages
8
9######################### We start with some black magic to print on failure.
10
11use Test::More;
12eval "use DefaultPort;";
13if ($@) {
14    plan skip_all => 'No serial port selected for use with testing';
15}
16else {
17    plan tests => 340;
18}
19
20use AltPort 0.10;		# check inheritance & export
21
22######################### End of black magic.
23
24# Insert your test code below (better if it prints "ok 13"
25# (correspondingly "not ok 13") depending on the success of chunk 13
26# of the test code):
27
28# tests start using file created by test1.t
29
30use strict;
31
32my $file = "/dev/ttyS0";
33if ($SerialJunk::Makefile_Test_Port) {
34    $file = $SerialJunk::Makefile_Test_Port;
35}
36if (exists $ENV{Makefile_Test_Port}) {
37    $file = $ENV{Makefile_Test_Port};
38}
39
40my $naptime = 0;	# pause between output pages
41if (@ARGV) {
42    $naptime = shift @ARGV;
43    unless ($naptime =~ /^[0-5]$/) {
44	die "Usage: perl test?.t [ page_delay (0..5) ] [ /dev/ttyxx ]";
45    }
46}
47if (@ARGV) {
48    $file = shift @ARGV;
49}
50
51my $cfgfile = $file."_test.cfg";
52$cfgfile =~ s/.*\///;
53
54my $fault = 0;
55my $ob;
56my $pass;
57my $fail;
58my $in;
59my $in2;
60my @opts;
61my $out;
62my $blk;
63my $err;
64my $e;
65my $patt;
66my $instead;
67my $tick;
68my $tock;
69my @necessary_param = AltPort->set_test_mode_active(1);
70
71sub is_ok {
72    local $Test::Builder::Level = $Test::Builder::Level + 1;
73    return ok(shift);
74}
75
76sub is_zero {
77    local $Test::Builder::Level = $Test::Builder::Level + 1;
78    return ok(shift == 0);
79}
80
81sub is_bad {
82    local $Test::Builder::Level = $Test::Builder::Level + 1;
83    return ok(!shift);
84}
85
86# 2: Constructor
87
88unless (is_ok ($ob = AltPort->start ($cfgfile))) {
89    printf "could not open port from $cfgfile\n";
90    exit 1;
91    # next test would die at runtime without $ob
92}
93
94#### 3 - 11: Check Port Capabilities Match Save
95
96is_ok ($ob->baudrate == 9600);			# 3
97is_ok ($ob->parity eq "none");			# 4
98is_ok ($ob->databits == 8);			# 5
99is_ok ($ob->stopbits == 1);			# 6
100is_ok ($ob->handshake eq "none");		# 7
101is_ok ($ob->read_const_time == 0);		# 8
102is_ok ($ob->read_char_time == 0);		# 9
103is_ok ($ob->alias eq "AltPort");		# 10
104is_ok ($ob->parity_enable == 0);		# 11
105
106#### 12 - 18: Application Parameter Defaults
107
108is_ok ($ob->devicetype eq 'none');		# 12
109is_ok ($ob->hostname eq 'localhost');		# 13
110is_zero ($ob->hostaddr);			# 14
111is_ok ($ob->datatype eq 'raw');			# 15
112is_ok ($ob->cfg_param_1 eq 'none');		# 16
113is_ok ($ob->cfg_param_2 eq 'none');		# 17
114is_ok ($ob->cfg_param_3 eq 'none');		# 18
115
116# 19 - 21: "Instant" return for read_xx_time=0
117
118$tick=$ob->get_tick_count;
119($in, $in2) = $ob->read(10);
120$tock=$ob->get_tick_count;
121
122is_zero ($in);					# 19
123is_bad ($in2);					# 20
124$out=$tock - $tick;
125is_ok ($out < 150);				# 21
126print "<0> elapsed time=$out\n";
127
128if ($naptime) {
129    print "++++ page break\n";
130    sleep $naptime;
131}
132
133print "Beginning Timed Tests at 2-5 Seconds per Set\n";
134
135# 22 - 25: 2 Second Constant Timeout
136
137is_ok (2000 == $ob->read_const_time(2000));	# 22
138$tick=$ob->get_tick_count;
139($in, $in2) = $ob->read(10);
140$tock=$ob->get_tick_count;
141
142is_zero ($in);					# 23
143is_bad ($in2);					# 24
144$out=$tock - $tick;
145is_bad (($out < 1800) or ($out > 2400));	# 25
146print "<2000> elapsed time=$out\n";
147
148# 26 - 29: 4 Second Timeout Constant+Character
149
150is_ok (100 == $ob->read_char_time(100));	# 26
151
152$tick=$ob->get_tick_count;
153($in, $in2) = $ob->read(20);
154$tock=$ob->get_tick_count;
155
156is_zero ($in);					# 27
157is_bad ($in2);					# 28
158$out=$tock - $tick;
159is_bad (($out < 3800) or ($out > 4400));	# 29
160print "<4000> elapsed time=$out\n";
161
162
163# 30 - 33: 3 Second Character Timeout
164
165is_zero ($ob->read_const_time(0));		# 30
166
167$tick=$ob->get_tick_count;
168($in, $in2) = $ob->read(30);
169$tock=$ob->get_tick_count;
170
171is_zero ($in);					# 31
172is_bad ($in2);					# 32
173$out=$tock - $tick;
174is_bad (($out < 2800) or ($out > 3400));	# 33
175print "<3000> elapsed time=$out\n";
176
177#### 34 - 64: Verify Parameter Settings
178
179is_zero ($ob->read_char_time(0));		# 34
180
181is_ok ("rts" eq $ob->handshake("rts"));		# 35
182is_ok ($ob->purge_rx);				# 36
183is_ok ($ob->purge_all);				# 37
184is_ok ($ob->purge_tx);				# 38
185
186if ($naptime) {
187    print "++++ page break\n";
188    sleep $naptime;
189}
190
191is_ok(1 == $ob->user_msg);			# 39
192is_zero(scalar $ob->user_msg(0));		# 40
193is_ok(1 == $ob->user_msg(1));			# 41
194is_ok(1 == $ob->error_msg);			# 42
195is_zero(scalar $ob->error_msg(0));		# 43
196is_ok(1 == $ob->error_msg(1));			# 44
197
198print "Stty Shortcut Parameters\n";
199
200my $vstart_1 = $ob->is_xon_char;
201is_ok(defined $vstart_1);			# 45
202my $vstop_1 = $ob->is_xoff_char;
203is_ok(defined $vstop_1);			# 46
204my $vintr_1 = $ob->is_stty_intr;
205is_ok(defined $vintr_1);			# 47
206my $vquit_1 = $ob->is_stty_quit;
207is_ok(defined $vquit_1);			# 48
208
209my $veof_1 = $ob->is_stty_eof;
210is_ok(defined $veof_1);				# 49
211my $veol_1 = $ob->is_stty_eol;
212is_ok(defined $veol_1);				# 50
213my $verase_1 = $ob->is_stty_erase;
214is_ok(defined $verase_1);			# 51
215my $vkill_1 = $ob->is_stty_kill;
216is_ok(defined $vkill_1);			# 52
217my $vsusp_1 = $ob->is_stty_susp;
218is_ok(defined $vsusp_1);			# 53
219
220is_zero $ob->stty_echo;				# 54
221my $echoe_1 = $ob->stty_echoe;
222is_ok(defined $echoe_1);			# 55
223my $echok_1 = $ob->stty_echok;
224is_ok(defined $echok_1);			# 56
225
226is_zero $ob->stty_echonl;			# 57
227is_zero $ob->stty_istrip;			# 58
228is_zero $ob->stty_icrnl;			# 59
229is_zero $ob->stty_igncr;			# 60
230
231if ($naptime) {
232    print "++++ page break\n";
233    sleep $naptime;
234}
235
236is_zero $ob->stty_inlcr;			# 61
237is_zero $ob->stty_opost;			# 62
238is_zero $ob->stty_isig;				# 63
239is_zero $ob->stty_icanon;			# 64
240
241print "Change all the parameters\n";
242
243#### 65 - 102: Modify All Port Capabilities
244
245is_ok ($ob->baudrate(1200) == 1200);		# 65
246is_ok ($ob->parity("odd") eq "odd");		# 66
247is_ok ($ob->databits(7) == 7);			# 67
248is_ok ($ob->stopbits(2) == 2);			# 68
249is_ok ($ob->handshake("xoff") eq "xoff");	# 69
250is_ok ($ob->read_const_time(1000) == 1000);	# 70
251is_ok ($ob->read_char_time(50) == 50);		# 71
252is_ok ($ob->alias("oddPort") eq "oddPort");	# 72
253is_ok (scalar $ob->parity_enable(1));		# 73
254is_zero ($ob->user_msg(0));			# 74
255is_zero ($ob->error_msg(0));			# 75
256
257is_ok(64 == $ob->is_xon_char(64));		# 76
258is_ok(65 == $ob->is_xoff_char(65));		# 77
259is_ok(66 == $ob->is_stty_intr(66));		# 78
260is_ok(67 == $ob->is_stty_quit(67));		# 79
261is_ok(68 == $ob->is_stty_eof(68));		# 80
262is_ok(69 == $ob->is_stty_eol(69));		# 81
263is_ok(70 == $ob->is_stty_erase(70));		# 82
264
265if ($naptime) {
266    print "++++ page break\n";
267    sleep $naptime;
268}
269
270is_ok(71 == $ob->is_stty_kill(71));		# 83
271is_ok(72 == $ob->is_stty_susp(72));		# 84
272
273is_ok($echoe_1 != $ob->stty_echoe(! $echoe_1));	# 85
274is_ok($echok_1 != $ob->stty_echok(! $echok_1));	# 86
275is_ok(1 == $ob->stty_echonl(1));		# 87
276is_ok(1 == $ob->stty_istrip(1));		# 88
277is_ok(1 == $ob->stty_icrnl(1));			# 89
278is_ok(1 == $ob->stty_igncr(1));			# 90
279is_ok(1 == $ob->stty_inlcr(1));			# 91
280is_ok(1 == $ob->stty_opost(1));			# 92
281is_ok(1 == $ob->stty_isig(1));			# 93
282is_ok(1 == $ob->stty_icanon(1));		# 94
283is_ok(1 == $ob->stty_echo(1));			# 95
284
285is_ok ($ob->devicetype('type') eq 'type');	# 96
286is_ok ($ob->hostname('any') eq 'any');		# 97
287is_ok ($ob->hostaddr(9000) == 9000);		# 98
288is_ok ($ob->datatype('fixed') eq 'fixed');	# 99
289is_ok ($ob->cfg_param_1('p1') eq 'p1');		# 100
290is_ok ($ob->cfg_param_2('p2') eq 'p2');		# 101
291is_ok ($ob->cfg_param_3('p3') eq 'p3');		# 102
292
293#### 103 - 140: Check Port Capabilities Match Changes
294
295is_ok ($ob->baudrate == 1200);			# 103
296is_ok ($ob->parity eq "odd");			# 104
297
298if ($naptime) {
299    print "++++ page break\n";
300    sleep $naptime;
301}
302
303is_ok ($ob->databits == 7);			# 105
304is_ok ($ob->stopbits == 2);			# 106
305is_ok ($ob->handshake eq "xoff");		# 107
306is_ok ($ob->read_const_time == 1000);		# 108
307is_ok ($ob->read_char_time == 50);		# 109
308is_ok ($ob->alias eq "oddPort");		# 110
309is_ok (scalar $ob->parity_enable);		# 111
310is_zero ($ob->user_msg);			# 112
311is_zero ($ob->error_msg);			# 113
312
313is_ok(64 == $ob->is_xon_char);			# 114
314is_ok(65 == $ob->is_xoff_char);			# 115
315is_ok(66 == $ob->is_stty_intr);			# 116
316is_ok(67 == $ob->is_stty_quit);			# 117
317is_ok(68 == $ob->is_stty_eof);			# 118
318is_ok(69 == $ob->is_stty_eol);			# 119
319is_ok(70 == $ob->is_stty_erase);		# 126
320is_ok(71 == $ob->is_stty_kill);			# 121
321is_ok(72 == $ob->is_stty_susp);			# 122
322
323is_ok($echoe_1 != $ob->stty_echoe);		# 123
324is_ok($echok_1 != $ob->stty_echok);		# 124
325is_ok(1 == $ob->stty_echonl);			# 125
326
327if ($naptime) {
328    print "++++ page break\n";
329    sleep $naptime;
330}
331
332is_ok(1 == $ob->stty_istrip);			# 126
333is_ok(1 == $ob->stty_icrnl);			# 127
334is_ok(1 == $ob->stty_igncr);			# 128
335is_ok(1 == $ob->stty_inlcr);			# 129
336is_ok(1 == $ob->stty_opost);			# 130
337is_ok(1 == $ob->stty_isig);			# 131
338is_ok(1 == $ob->stty_icanon);			# 132
339is_ok(1 == $ob->stty_echo);			# 133
340
341is_ok ($ob->devicetype eq 'type');		# 134
342is_ok ($ob->hostname eq 'any');			# 135
343is_ok ($ob->hostaddr == 9000);			# 136
344is_ok ($ob->datatype eq 'fixed');		# 137
345is_ok ($ob->cfg_param_1 eq 'p1');		# 138
346is_ok ($ob->cfg_param_2 eq 'p2');		# 139
347is_ok ($ob->cfg_param_3 eq 'p3');		# 140
348
349print "Restore all the parameters\n";
350
351is_ok ($ob->restart($cfgfile));			# 141
352
353#### 142 - 179: Check Port Capabilities Match Original
354
355is_ok ($ob->baudrate == 9600);			# 142
356is_ok ($ob->parity eq "none");			# 143
357is_ok ($ob->databits == 8);			# 144
358is_ok ($ob->stopbits == 1);			# 145
359is_ok ($ob->handshake eq "none");		# 146
360
361if ($naptime) {
362    print "++++ page break\n";
363    sleep $naptime;
364}
365
366is_ok ($ob->read_const_time == 0);		# 147
367is_ok ($ob->read_char_time == 0);		# 148
368is_ok ($ob->alias eq "AltPort");		# 149
369is_zero (scalar $ob->parity_enable);		# 150
370is_ok ($ob->user_msg == 1);			# 151
371is_ok ($ob->error_msg == 1);			# 152
372
373is_ok($vstart_1 == $ob->is_xon_char);		# 153
374is_ok($vstop_1 == $ob->is_xoff_char);		# 154
375is_ok($vintr_1 == $ob->is_stty_intr);		# 155
376is_ok($vquit_1 == $ob->is_stty_quit);		# 156
377is_ok($veof_1 == $ob->is_stty_eof);		# 157
378is_ok($veol_1 == $ob->is_stty_eol);		# 158
379is_ok($verase_1 == $ob->is_stty_erase);		# 159
380is_ok($vkill_1 == $ob->is_stty_kill);		# 160
381is_ok($vsusp_1 == $ob->is_stty_susp);		# 161
382
383is_ok(0 == $ob->stty_echo);			# 162
384is_ok($echoe_1 == $ob->stty_echoe);		# 163
385is_ok($echok_1 == $ob->stty_echok);		# 164
386is_ok(0 == $ob->stty_echonl);			# 165
387is_ok(0 == $ob->stty_istrip);			# 166
388
389if ($naptime) {
390    print "++++ page break\n";
391    sleep $naptime;
392}
393
394is_ok(0 == $ob->stty_icrnl);			# 167
395is_ok(0 == $ob->stty_igncr);			# 168
396is_ok(0 == $ob->stty_inlcr);			# 169
397is_ok(0 == $ob->stty_opost);			# 170
398is_ok(0 == $ob->stty_isig);			# 171
399is_ok(0 == $ob->stty_icanon);			# 172
400
401is_ok ($ob->devicetype eq 'none');		# 173
402is_ok ($ob->hostname eq 'localhost');		# 174
403is_zero ($ob->hostaddr);			# 175
404is_ok ($ob->datatype eq 'raw');			# 176
405is_ok ($ob->cfg_param_1 eq 'none');		# 177
406is_ok ($ob->cfg_param_2 eq 'none');		# 178
407is_ok ($ob->cfg_param_3 eq 'none');		# 179
408
409#### 180 - 182: "Instant" return for read(0)
410
411is_ok (2000 == $ob->read_const_time(2000));	# 180
412$tick=$ob->get_tick_count;
413($in, $in2) = $ob->read(0);
414$tock=$ob->get_tick_count;
415
416# behavior changed in 1.0.2 to return "0" on a "0"-requested read
417is_ok ($in == 0);				# 181
418$out=$tock - $tick;
419is_ok ($out < 100);				# 182
420print "<0> elapsed time=$out\n";
421
422### 183 - 198: Defaults for lookfor
423
424@opts = $ob->are_match;
425is_ok ($#opts == 0);				# 183
426is_ok ($opts[0] eq "\n");			# 184
427is_ok ($ob->lookclear == 1);			# 185
428is_ok ($ob->lookfor eq "");			# 186
429is_ok ($ob->streamline eq "");			# 187
430
431if ($naptime) {
432    print "++++ page break\n";
433    sleep $naptime;
434}
435
436($in, $out, $patt, $instead) = $ob->lastlook;
437is_ok ($in eq "");				# 188
438is_ok ($out eq "");				# 189
439is_ok ($patt eq "");				# 190
440is_ok ($instead eq "");				# 191
441is_ok ($ob->matchclear eq "");			# 192
442
443is_ok ("" eq $ob->output_record_separator);		# 193
444is_ok ("" eq $ob->output_record_separator("ab"));	# 194
445is_ok ("ab" eq $ob->output_record_separator);		# 195
446is_ok ("ab" eq $ob->output_record_separator(""));	# 196
447is_ok ("" eq $ob->output_record_separator);		# 197
448is_ok ("" eq $ob->output_field_separator);		# 198
449
450@opts = $ob->are_match ("END","Bye");
451is_ok ($#opts == 1);				# 199
452is_ok ($opts[0] eq "END");			# 200
453is_ok ($opts[1] eq "Bye");			# 201
454is_ok ($ob->lookclear("Good Bye, Hello") == 1);	# 202
455is_ok (1);					# 203
456is_ok ($ob->lookfor eq "Good ");		# 204
457
458($in, $out, $patt, $instead) = $ob->lastlook;
459is_ok ($in eq "Bye");				# 205
460is_ok ($out eq ", Hello");			# 206
461is_ok ($patt eq "Bye");				# 207
462is_ok ($instead eq "");				# 208
463is_ok ($ob->matchclear eq "Bye");		# 209
464
465if ($naptime) {
466    print "++++ page break\n";
467    sleep $naptime;
468}
469
470is_ok ($ob->matchclear eq "");			# 210
471is_ok ($ob->lookclear("Bye, Bye, Love. The END has come") == 1);	# 211
472is_ok ($ob->lookfor eq "");			# 212
473
474($in, $out, $patt, $instead) = $ob->lastlook;
475is_ok ($in eq "Bye");				# 213
476is_ok ($out eq ", Bye, Love. The END has come");# 214
477
478is_ok ($patt eq "Bye");				# 215
479is_ok ($instead eq "");				# 216
480is_ok ($ob->matchclear eq "Bye");		# 217
481
482($in, $out, $patt, $instead) = $ob->lastlook;
483is_ok ($in eq "");				# 218
484is_ok ($out eq ", Bye, Love. The END has come");# 219
485is_ok ($patt eq "Bye");				# 220
486is_ok ($instead eq "");				# 221
487
488is_ok ($ob->lookfor eq ", ");			# 222
489($in, $out, $patt, $instead) = $ob->lastlook;
490is_ok ($in eq "Bye");				# 223
491is_ok ($out eq ", Love. The END has come");	# 224
492is_ok ($patt eq "Bye");				# 225
493is_ok ($instead eq "");				# 226
494is_ok ($ob->matchclear eq "Bye");		# 227
495
496is_ok ($ob->lookfor eq ", Love. The ");		# 228
497($in, $out, $patt, $instead) = $ob->lastlook;
498is_ok ($in eq "END");				# 229
499is_ok ($out eq " has come");			# 230
500is_ok ($patt eq "END");				# 231
501
502if ($naptime) {
503    print "++++ page break\n";
504    sleep $naptime;
505}
506
507is_ok ($instead eq "");				# 232
508is_ok ($ob->matchclear eq "END");		# 233
509is_ok ($ob->lookfor eq "");			# 234
510is_ok ($ob->matchclear eq "");			# 235
511
512($in, $out, $patt, $instead) = $ob->lastlook;
513is_ok ($in eq "");				# 236
514is_ok ($patt eq "");				# 237
515is_ok ($instead eq " has come");		# 238
516
517is_ok ($ob->lookclear("First\nSecond\nThe END") == 1);	# 239
518is_ok ($ob->lookfor eq "First\nSecond\nThe ");	# 240
519($in, $out, $patt, $instead) = $ob->lastlook;
520is_ok ($in eq "END");				# 241
521is_ok ($out eq "");				# 242
522is_ok ($patt eq "END");				# 243
523is_ok ($instead eq "");				# 244
524
525is_ok ($ob->lookclear("Good Bye, Hello") == 1);	# 245
526is_ok ($ob->streamline eq "Good ");		# 246
527
528($in, $out, $patt, $instead) = $ob->lastlook;
529is_ok ($in eq "Bye");				# 247
530is_ok ($out eq ", Hello");			# 248
531is_ok ($patt eq "Bye");				# 249
532is_ok ($instead eq "");				# 250
533
534is_ok ($ob->lookclear("Bye, Bye, Love. The END has come") == 1);	# 251
535is_ok ($ob->streamline eq "");			# 252
536
537($in, $out, $patt, $instead) = $ob->lastlook;
538is_ok ($in eq "Bye");				# 253
539
540if ($naptime) {
541    print "++++ page break\n";
542    sleep $naptime;
543}
544
545is_ok ($out eq ", Bye, Love. The END has come");# 254
546is_ok ($patt eq "Bye");				# 255
547is_ok ($instead eq "");				# 256
548is_ok ($ob->matchclear eq "Bye");		# 257
549
550($in, $out, $patt, $instead) = $ob->lastlook;
551is_ok ($in eq "");				# 258
552is_ok ($out eq ", Bye, Love. The END has come");# 259
553is_ok ($patt eq "Bye");				# 260
554is_ok ($instead eq "");				# 261
555
556is_ok ($ob->streamline eq ", ");		# 262
557($in, $out, $patt, $instead) = $ob->lastlook;
558is_ok ($in eq "Bye");				# 263
559is_ok ($out eq ", Love. The END has come");	# 264
560is_ok ($patt eq "Bye");				# 265
561is_ok ($instead eq "");				# 266
562is_ok ($ob->matchclear eq "Bye");		# 267
563
564is_ok ($ob->streamline eq ", Love. The ");	# 268
565($in, $out, $patt, $instead) = $ob->lastlook;
566is_ok ($in eq "END");				# 269
567is_ok ($out eq " has come");			# 270
568is_ok ($patt eq "END");				# 271
569is_ok ($instead eq "");				# 272
570is_ok ($ob->matchclear eq "END");		# 273
571is_ok ($ob->streamline eq "");			# 274
572is_ok ($ob->matchclear eq "");			# 275
573
574if ($naptime) {
575    print "++++ page break\n";
576    sleep $naptime;
577}
578
579($in, $out, $patt, $instead) = $ob->lastlook;
580is_ok ($in eq "");				# 276
581is_ok ($patt eq "");				# 277
582is_ok ($instead eq " has come");		# 278
583
584is_ok ($ob->lookclear("First\nSecond\nThe END") == 1);	# 279
585is_ok ($ob->streamline eq "First\nSecond\nThe ");	# 280
586($in, $out, $patt, $instead) = $ob->lastlook;
587is_ok ($in eq "END");				# 281
588is_ok ($out eq "");				# 282
589is_ok ($patt eq "END");				# 283
590is_ok ($instead eq "");				# 284
591
592# 257 - 303 Test and Normal "lookclear"
593
594@opts = $ob->are_match("\n");
595is_ok ($opts[0] eq "\n");			# 285
596is_ok ($ob->lookclear("Before\nAfter") == 1);	# 286
597is_ok ($ob->lookfor eq "Before");		# 287
598
599($in, $out, $patt, $instead) = $ob->lastlook;
600is_ok ($in eq "\n");				# 288
601is_ok ($out eq "After");			# 289
602is_ok ($patt eq "\n");				# 290
603is_ok ($instead eq "");				# 291
604
605is_ok ($ob->lookfor eq "");			# 292
606($in, $out, $patt, $instead) = $ob->lastlook;
607is_ok ($in eq "");				# 293
608is_ok ($patt eq "");				# 294
609is_ok ($instead eq "After");			# 295
610
611@opts = $ob->are_match ("B*e","ab..ef","-re","12..56","END");
612is_ok ($#opts == 4);				# 296
613is_ok ($opts[2] eq "-re");			# 297
614
615if ($naptime) {
616    print "++++ page break\n";
617    sleep $naptime;
618}
619
620is_ok ($ob->lookclear("Good Bye, the END, Hello") == 1);	# 298
621is_ok ($ob->lookfor eq "Good Bye, the ");	# 299
622
623($in, $out, $patt, $instead) = $ob->lastlook;
624is_ok ($in eq "END");				# 300
625is_ok ($out eq ", Hello");			# 301
626is_ok ($patt eq "END");				# 302
627is_ok ($instead eq "");				# 303
628
629is_ok ($ob->lookclear("Good Bye, the END, Hello") == 1);	# 304
630is_ok ($ob->streamline eq "Good Bye, the ");	# 305
631
632($in, $out, $patt, $instead) = $ob->lastlook;
633is_ok ($in eq "END");				# 306
634is_ok ($out eq ", Hello");			# 307
635is_ok ($patt eq "END");				# 308
636is_ok ($instead eq "");				# 309
637
638is_ok ($ob->lookclear("Good B*e, abcdef, 123456") == 1);	# 310
639is_ok ($ob->lookfor eq "Good ");		# 311
640
641($in, $out, $patt, $instead) = $ob->lastlook;
642is_ok ($in eq "B*e");				# 312
643is_ok ($out eq ", abcdef, 123456");		# 313
644is_ok ($patt eq "B*e");				# 314
645is_ok ($instead eq "");				# 315
646
647is_ok ($ob->lookfor eq ", abcdef, ");		# 316
648
649($in, $out, $patt, $instead) = $ob->lastlook;
650is_ok ($in eq "123456");			# 317
651is_ok ($out eq "");				# 318
652
653if ($naptime) {
654    print "++++ page break\n";
655    sleep $naptime;
656}
657
658is_ok ($patt eq "12..56");			# 319
659is_ok ($instead eq "");				# 320
660is_ok ($ob->lookclear("Good B*e, abcdef, 123456") == 1);	# 321
661is_ok ($ob->streamline eq "Good ");		# 322
662
663($in, $out, $patt, $instead) = $ob->lastlook;
664is_ok ($in eq "B*e");				# 323
665is_ok ($out eq ", abcdef, 123456");		# 324
666is_ok ($patt eq "B*e");				# 325
667is_ok ($instead eq "");				# 326
668
669is_ok ($ob->streamline eq ", abcdef, ");	# 327
670
671($in, $out, $patt, $instead) = $ob->lastlook;
672is_ok ($in eq "123456");			# 328
673is_ok ($out eq "");				# 329
674is_ok ($patt eq "12..56");			# 330
675is_ok ($instead eq "");				# 331
676
677@necessary_param = AltPort->set_test_mode_active(0);
678
679is_bad ($ob->lookclear("Good\nBye"));		# 332
680is_ok ($ob->lookfor eq "");			# 333
681($in, $out, $patt, $instead) = $ob->lastlook;
682is_ok ($in eq "");				# 334
683is_ok ($out eq "");				# 335
684is_ok ($patt eq "");				# 336
685
686is_ok ("" eq $ob->output_field_separator(":"));	# 337
687is_ok (":" eq $ob->output_field_separator);	# 338
688is_ok (":" eq $ob->output_field_separator(""));	# 339
689is_ok ("" eq $ob->output_field_separator);	# 340
690
691is_ok ($ob->close);				# 341
692undef $ob;
693