#!/usr/bin/perl -w

use lib '.','./t','./blib/lib','../blib/lib';
# can run from here or distribution base

# Before installation is performed this script should be runnable with
# `perl test4.t time' which pauses `time' seconds (1..5) between pages

######################### We start with some black magic to print on failure.

use Test::More;
eval "use DefaultPort;";
if ($@) {
    plan skip_all => 'No serial port selected for use with testing';
}
else {
    plan tests => 340;
}

use AltPort 0.10;		# check inheritance & export

######################### End of black magic.

# Insert your test code below (better if it prints "ok 13"
# (correspondingly "not ok 13") depending on the success of chunk 13
# of the test code):

# tests start using file created by test1.t

use strict;

my $file = "/dev/ttyS0";
if ($SerialJunk::Makefile_Test_Port) {
    $file = $SerialJunk::Makefile_Test_Port;
}
if (exists $ENV{Makefile_Test_Port}) {
    $file = $ENV{Makefile_Test_Port};
}

my $naptime = 0;	# pause between output pages
if (@ARGV) {
    $naptime = shift @ARGV;
    unless ($naptime =~ /^[0-5]$/) {
	die "Usage: perl test?.t [ page_delay (0..5) ] [ /dev/ttyxx ]";
    }
}
if (@ARGV) {
    $file = shift @ARGV;
}

my $cfgfile = $file."_test.cfg";
$cfgfile =~ s/.*\///;

my $fault = 0;
my $ob;
my $pass;
my $fail;
my $in;
my $in2;
my @opts;
my $out;
my $blk;
my $err;
my $e;
my $patt;
my $instead;
my $tick;
my $tock;
my @necessary_param = AltPort->set_test_mode_active(1);

sub is_ok {
    local $Test::Builder::Level = $Test::Builder::Level + 1;
    return ok(shift);
}

sub is_zero {
    local $Test::Builder::Level = $Test::Builder::Level + 1;
    return ok(shift == 0);
}

sub is_bad {
    local $Test::Builder::Level = $Test::Builder::Level + 1;
    return ok(!shift);
}

# 2: Constructor

unless (is_ok ($ob = AltPort->start ($cfgfile))) {
    printf "could not open port from $cfgfile\n";
    exit 1;
    # next test would die at runtime without $ob
}

#### 3 - 11: Check Port Capabilities Match Save

is_ok ($ob->baudrate == 9600);			# 3
is_ok ($ob->parity eq "none");			# 4
is_ok ($ob->databits == 8);			# 5
is_ok ($ob->stopbits == 1);			# 6
is_ok ($ob->handshake eq "none");		# 7
is_ok ($ob->read_const_time == 0);		# 8
is_ok ($ob->read_char_time == 0);		# 9
is_ok ($ob->alias eq "AltPort");		# 10
is_ok ($ob->parity_enable == 0);		# 11

#### 12 - 18: Application Parameter Defaults

is_ok ($ob->devicetype eq 'none');		# 12
is_ok ($ob->hostname eq 'localhost');		# 13
is_zero ($ob->hostaddr);			# 14
is_ok ($ob->datatype eq 'raw');			# 15
is_ok ($ob->cfg_param_1 eq 'none');		# 16
is_ok ($ob->cfg_param_2 eq 'none');		# 17
is_ok ($ob->cfg_param_3 eq 'none');		# 18

# 19 - 21: "Instant" return for read_xx_time=0

$tick=$ob->get_tick_count;
($in, $in2) = $ob->read(10);
$tock=$ob->get_tick_count;

is_zero ($in);					# 19
is_bad ($in2);					# 20
$out=$tock - $tick;
is_ok ($out < 150);				# 21
print "<0> elapsed time=$out\n";

if ($naptime) {
    print "++++ page break\n";
    sleep $naptime;
}

print "Beginning Timed Tests at 2-5 Seconds per Set\n";

# 22 - 25: 2 Second Constant Timeout

is_ok (2000 == $ob->read_const_time(2000));	# 22
$tick=$ob->get_tick_count;
($in, $in2) = $ob->read(10);
$tock=$ob->get_tick_count;

is_zero ($in);					# 23
is_bad ($in2);					# 24
$out=$tock - $tick;
is_bad (($out < 1800) or ($out > 2400));	# 25
print "<2000> elapsed time=$out\n";

# 26 - 29: 4 Second Timeout Constant+Character

is_ok (100 == $ob->read_char_time(100));	# 26

$tick=$ob->get_tick_count;
($in, $in2) = $ob->read(20);
$tock=$ob->get_tick_count;

is_zero ($in);					# 27
is_bad ($in2);					# 28
$out=$tock - $tick;
is_bad (($out < 3800) or ($out > 4400));	# 29
print "<4000> elapsed time=$out\n";


# 30 - 33: 3 Second Character Timeout

is_zero ($ob->read_const_time(0));		# 30

$tick=$ob->get_tick_count;
($in, $in2) = $ob->read(30);
$tock=$ob->get_tick_count;

is_zero ($in);					# 31
is_bad ($in2);					# 32
$out=$tock - $tick;
is_bad (($out < 2800) or ($out > 3400));	# 33
print "<3000> elapsed time=$out\n";

#### 34 - 64: Verify Parameter Settings

is_zero ($ob->read_char_time(0));		# 34

is_ok ("rts" eq $ob->handshake("rts"));		# 35
is_ok ($ob->purge_rx);				# 36 
is_ok ($ob->purge_all);				# 37 
is_ok ($ob->purge_tx);				# 38 

if ($naptime) {
    print "++++ page break\n";
    sleep $naptime;
}

is_ok(1 == $ob->user_msg);			# 39
is_zero(scalar $ob->user_msg(0));		# 40
is_ok(1 == $ob->user_msg(1));			# 41
is_ok(1 == $ob->error_msg);			# 42
is_zero(scalar $ob->error_msg(0));		# 43
is_ok(1 == $ob->error_msg(1));			# 44

print "Stty Shortcut Parameters\n";

my $vstart_1 = $ob->is_xon_char;
is_ok(defined $vstart_1);			# 45
my $vstop_1 = $ob->is_xoff_char;
is_ok(defined $vstop_1);			# 46
my $vintr_1 = $ob->is_stty_intr;
is_ok(defined $vintr_1);			# 47
my $vquit_1 = $ob->is_stty_quit;
is_ok(defined $vquit_1);			# 48

my $veof_1 = $ob->is_stty_eof;
is_ok(defined $veof_1);				# 49
my $veol_1 = $ob->is_stty_eol;
is_ok(defined $veol_1);				# 50
my $verase_1 = $ob->is_stty_erase;
is_ok(defined $verase_1);			# 51
my $vkill_1 = $ob->is_stty_kill;
is_ok(defined $vkill_1);			# 52
my $vsusp_1 = $ob->is_stty_susp;
is_ok(defined $vsusp_1);			# 53

is_zero $ob->stty_echo;				# 54
my $echoe_1 = $ob->stty_echoe;
is_ok(defined $echoe_1);			# 55
my $echok_1 = $ob->stty_echok;
is_ok(defined $echok_1);			# 56

is_zero $ob->stty_echonl;			# 57
is_zero $ob->stty_istrip;			# 58
is_zero $ob->stty_icrnl;			# 59
is_zero $ob->stty_igncr;			# 60

if ($naptime) {
    print "++++ page break\n";
    sleep $naptime;
}

is_zero $ob->stty_inlcr;			# 61
is_zero $ob->stty_opost;			# 62
is_zero $ob->stty_isig;				# 63
is_zero $ob->stty_icanon;			# 64

print "Change all the parameters\n";

#### 65 - 102: Modify All Port Capabilities

is_ok ($ob->baudrate(1200) == 1200);		# 65
is_ok ($ob->parity("odd") eq "odd");		# 66
is_ok ($ob->databits(7) == 7);			# 67
is_ok ($ob->stopbits(2) == 2);			# 68
is_ok ($ob->handshake("xoff") eq "xoff");	# 69
is_ok ($ob->read_const_time(1000) == 1000);	# 70
is_ok ($ob->read_char_time(50) == 50);		# 71
is_ok ($ob->alias("oddPort") eq "oddPort");	# 72
is_ok (scalar $ob->parity_enable(1));		# 73
is_zero ($ob->user_msg(0));			# 74
is_zero ($ob->error_msg(0));			# 75

is_ok(64 == $ob->is_xon_char(64));		# 76
is_ok(65 == $ob->is_xoff_char(65));		# 77
is_ok(66 == $ob->is_stty_intr(66));		# 78
is_ok(67 == $ob->is_stty_quit(67));		# 79
is_ok(68 == $ob->is_stty_eof(68));		# 80
is_ok(69 == $ob->is_stty_eol(69));		# 81
is_ok(70 == $ob->is_stty_erase(70));		# 82

if ($naptime) {
    print "++++ page break\n";
    sleep $naptime;
}

is_ok(71 == $ob->is_stty_kill(71));		# 83
is_ok(72 == $ob->is_stty_susp(72));		# 84

is_ok($echoe_1 != $ob->stty_echoe(! $echoe_1));	# 85
is_ok($echok_1 != $ob->stty_echok(! $echok_1));	# 86
is_ok(1 == $ob->stty_echonl(1));		# 87
is_ok(1 == $ob->stty_istrip(1));		# 88
is_ok(1 == $ob->stty_icrnl(1));			# 89
is_ok(1 == $ob->stty_igncr(1));			# 90
is_ok(1 == $ob->stty_inlcr(1));			# 91
is_ok(1 == $ob->stty_opost(1));			# 92
is_ok(1 == $ob->stty_isig(1));			# 93
is_ok(1 == $ob->stty_icanon(1));		# 94
is_ok(1 == $ob->stty_echo(1));			# 95

is_ok ($ob->devicetype('type') eq 'type');	# 96
is_ok ($ob->hostname('any') eq 'any');		# 97
is_ok ($ob->hostaddr(9000) == 9000);		# 98
is_ok ($ob->datatype('fixed') eq 'fixed');	# 99
is_ok ($ob->cfg_param_1('p1') eq 'p1');		# 100
is_ok ($ob->cfg_param_2('p2') eq 'p2');		# 101
is_ok ($ob->cfg_param_3('p3') eq 'p3');		# 102

#### 103 - 140: Check Port Capabilities Match Changes

is_ok ($ob->baudrate == 1200);			# 103
is_ok ($ob->parity eq "odd");			# 104

if ($naptime) {
    print "++++ page break\n";
    sleep $naptime;
}

is_ok ($ob->databits == 7);			# 105
is_ok ($ob->stopbits == 2);			# 106
is_ok ($ob->handshake eq "xoff");		# 107
is_ok ($ob->read_const_time == 1000);		# 108
is_ok ($ob->read_char_time == 50);		# 109
is_ok ($ob->alias eq "oddPort");		# 110
is_ok (scalar $ob->parity_enable);		# 111
is_zero ($ob->user_msg);			# 112
is_zero ($ob->error_msg);			# 113

is_ok(64 == $ob->is_xon_char);			# 114
is_ok(65 == $ob->is_xoff_char);			# 115
is_ok(66 == $ob->is_stty_intr);			# 116
is_ok(67 == $ob->is_stty_quit);			# 117
is_ok(68 == $ob->is_stty_eof);			# 118
is_ok(69 == $ob->is_stty_eol);			# 119
is_ok(70 == $ob->is_stty_erase);		# 126
is_ok(71 == $ob->is_stty_kill);			# 121
is_ok(72 == $ob->is_stty_susp);			# 122

is_ok($echoe_1 != $ob->stty_echoe);		# 123
is_ok($echok_1 != $ob->stty_echok);		# 124
is_ok(1 == $ob->stty_echonl);			# 125

if ($naptime) {
    print "++++ page break\n";
    sleep $naptime;
}

is_ok(1 == $ob->stty_istrip);			# 126
is_ok(1 == $ob->stty_icrnl);			# 127
is_ok(1 == $ob->stty_igncr);			# 128
is_ok(1 == $ob->stty_inlcr);			# 129
is_ok(1 == $ob->stty_opost);			# 130
is_ok(1 == $ob->stty_isig);			# 131
is_ok(1 == $ob->stty_icanon);			# 132
is_ok(1 == $ob->stty_echo);			# 133

is_ok ($ob->devicetype eq 'type');		# 134
is_ok ($ob->hostname eq 'any');			# 135
is_ok ($ob->hostaddr == 9000);			# 136
is_ok ($ob->datatype eq 'fixed');		# 137
is_ok ($ob->cfg_param_1 eq 'p1');		# 138
is_ok ($ob->cfg_param_2 eq 'p2');		# 139
is_ok ($ob->cfg_param_3 eq 'p3');		# 140

print "Restore all the parameters\n";

is_ok ($ob->restart($cfgfile));			# 141

#### 142 - 179: Check Port Capabilities Match Original

is_ok ($ob->baudrate == 9600);			# 142
is_ok ($ob->parity eq "none");			# 143
is_ok ($ob->databits == 8);			# 144
is_ok ($ob->stopbits == 1);			# 145
is_ok ($ob->handshake eq "none");		# 146

if ($naptime) {
    print "++++ page break\n";
    sleep $naptime;
}

is_ok ($ob->read_const_time == 0);		# 147
is_ok ($ob->read_char_time == 0);		# 148
is_ok ($ob->alias eq "AltPort");		# 149
is_zero (scalar $ob->parity_enable);		# 150
is_ok ($ob->user_msg == 1);			# 151
is_ok ($ob->error_msg == 1);			# 152

is_ok($vstart_1 == $ob->is_xon_char);		# 153
is_ok($vstop_1 == $ob->is_xoff_char);		# 154
is_ok($vintr_1 == $ob->is_stty_intr);		# 155
is_ok($vquit_1 == $ob->is_stty_quit);		# 156
is_ok($veof_1 == $ob->is_stty_eof);		# 157
is_ok($veol_1 == $ob->is_stty_eol);		# 158
is_ok($verase_1 == $ob->is_stty_erase);		# 159
is_ok($vkill_1 == $ob->is_stty_kill);		# 160
is_ok($vsusp_1 == $ob->is_stty_susp);		# 161

is_ok(0 == $ob->stty_echo);			# 162
is_ok($echoe_1 == $ob->stty_echoe);		# 163
is_ok($echok_1 == $ob->stty_echok);		# 164
is_ok(0 == $ob->stty_echonl);			# 165
is_ok(0 == $ob->stty_istrip);			# 166

if ($naptime) {
    print "++++ page break\n";
    sleep $naptime;
}

is_ok(0 == $ob->stty_icrnl);			# 167
is_ok(0 == $ob->stty_igncr);			# 168
is_ok(0 == $ob->stty_inlcr);			# 169
is_ok(0 == $ob->stty_opost);			# 170
is_ok(0 == $ob->stty_isig);			# 171
is_ok(0 == $ob->stty_icanon);			# 172

is_ok ($ob->devicetype eq 'none');		# 173
is_ok ($ob->hostname eq 'localhost');		# 174
is_zero ($ob->hostaddr);			# 175
is_ok ($ob->datatype eq 'raw');			# 176
is_ok ($ob->cfg_param_1 eq 'none');		# 177
is_ok ($ob->cfg_param_2 eq 'none');		# 178
is_ok ($ob->cfg_param_3 eq 'none');		# 179

#### 180 - 182: "Instant" return for read(0)

is_ok (2000 == $ob->read_const_time(2000));	# 180
$tick=$ob->get_tick_count;
($in, $in2) = $ob->read(0);
$tock=$ob->get_tick_count;

# behavior changed in 1.0.2 to return "0" on a "0"-requested read
is_ok ($in == 0);				# 181
$out=$tock - $tick;
is_ok ($out < 100);				# 182
print "<0> elapsed time=$out\n";

### 183 - 198: Defaults for lookfor

@opts = $ob->are_match;
is_ok ($#opts == 0);				# 183
is_ok ($opts[0] eq "\n");			# 184
is_ok ($ob->lookclear == 1);			# 185
is_ok ($ob->lookfor eq "");			# 186
is_ok ($ob->streamline eq "");			# 187

if ($naptime) {
    print "++++ page break\n";
    sleep $naptime;
}

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "");				# 188
is_ok ($out eq "");				# 189
is_ok ($patt eq "");				# 190
is_ok ($instead eq "");				# 191
is_ok ($ob->matchclear eq "");			# 192

is_ok ("" eq $ob->output_record_separator);		# 193
is_ok ("" eq $ob->output_record_separator("ab"));	# 194
is_ok ("ab" eq $ob->output_record_separator);		# 195
is_ok ("ab" eq $ob->output_record_separator(""));	# 196
is_ok ("" eq $ob->output_record_separator);		# 197
is_ok ("" eq $ob->output_field_separator);		# 198

@opts = $ob->are_match ("END","Bye");
is_ok ($#opts == 1);				# 199
is_ok ($opts[0] eq "END");			# 200
is_ok ($opts[1] eq "Bye");			# 201
is_ok ($ob->lookclear("Good Bye, Hello") == 1);	# 202
is_ok (1);					# 203
is_ok ($ob->lookfor eq "Good ");		# 204

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "Bye");				# 205
is_ok ($out eq ", Hello");			# 206
is_ok ($patt eq "Bye");				# 207
is_ok ($instead eq "");				# 208
is_ok ($ob->matchclear eq "Bye");		# 209

if ($naptime) {
    print "++++ page break\n";
    sleep $naptime;
}

is_ok ($ob->matchclear eq "");			# 210
is_ok ($ob->lookclear("Bye, Bye, Love. The END has come") == 1);	# 211
is_ok ($ob->lookfor eq "");			# 212

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "Bye");				# 213
is_ok ($out eq ", Bye, Love. The END has come");# 214

is_ok ($patt eq "Bye");				# 215
is_ok ($instead eq "");				# 216
is_ok ($ob->matchclear eq "Bye");		# 217

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "");				# 218
is_ok ($out eq ", Bye, Love. The END has come");# 219
is_ok ($patt eq "Bye");				# 220
is_ok ($instead eq "");				# 221

is_ok ($ob->lookfor eq ", ");			# 222
($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "Bye");				# 223
is_ok ($out eq ", Love. The END has come");	# 224
is_ok ($patt eq "Bye");				# 225
is_ok ($instead eq "");				# 226
is_ok ($ob->matchclear eq "Bye");		# 227

is_ok ($ob->lookfor eq ", Love. The ");		# 228
($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "END");				# 229
is_ok ($out eq " has come");			# 230
is_ok ($patt eq "END");				# 231

if ($naptime) {
    print "++++ page break\n";
    sleep $naptime;
}

is_ok ($instead eq "");				# 232
is_ok ($ob->matchclear eq "END");		# 233
is_ok ($ob->lookfor eq "");			# 234
is_ok ($ob->matchclear eq "");			# 235

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "");				# 236
is_ok ($patt eq "");				# 237
is_ok ($instead eq " has come");		# 238

is_ok ($ob->lookclear("First\nSecond\nThe END") == 1);	# 239
is_ok ($ob->lookfor eq "First\nSecond\nThe ");	# 240
($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "END");				# 241
is_ok ($out eq "");				# 242
is_ok ($patt eq "END");				# 243
is_ok ($instead eq "");				# 244

is_ok ($ob->lookclear("Good Bye, Hello") == 1);	# 245
is_ok ($ob->streamline eq "Good ");		# 246

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "Bye");				# 247
is_ok ($out eq ", Hello");			# 248
is_ok ($patt eq "Bye");				# 249
is_ok ($instead eq "");				# 250

is_ok ($ob->lookclear("Bye, Bye, Love. The END has come") == 1);	# 251
is_ok ($ob->streamline eq "");			# 252

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "Bye");				# 253

if ($naptime) {
    print "++++ page break\n";
    sleep $naptime;
}

is_ok ($out eq ", Bye, Love. The END has come");# 254
is_ok ($patt eq "Bye");				# 255
is_ok ($instead eq "");				# 256
is_ok ($ob->matchclear eq "Bye");		# 257

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "");				# 258
is_ok ($out eq ", Bye, Love. The END has come");# 259
is_ok ($patt eq "Bye");				# 260
is_ok ($instead eq "");				# 261

is_ok ($ob->streamline eq ", ");		# 262
($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "Bye");				# 263
is_ok ($out eq ", Love. The END has come");	# 264
is_ok ($patt eq "Bye");				# 265
is_ok ($instead eq "");				# 266
is_ok ($ob->matchclear eq "Bye");		# 267

is_ok ($ob->streamline eq ", Love. The ");	# 268
($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "END");				# 269
is_ok ($out eq " has come");			# 270
is_ok ($patt eq "END");				# 271
is_ok ($instead eq "");				# 272
is_ok ($ob->matchclear eq "END");		# 273
is_ok ($ob->streamline eq "");			# 274
is_ok ($ob->matchclear eq "");			# 275

if ($naptime) {
    print "++++ page break\n";
    sleep $naptime;
}

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "");				# 276
is_ok ($patt eq "");				# 277
is_ok ($instead eq " has come");		# 278

is_ok ($ob->lookclear("First\nSecond\nThe END") == 1);	# 279
is_ok ($ob->streamline eq "First\nSecond\nThe ");	# 280
($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "END");				# 281
is_ok ($out eq "");				# 282
is_ok ($patt eq "END");				# 283
is_ok ($instead eq "");				# 284

# 257 - 303 Test and Normal "lookclear"

@opts = $ob->are_match("\n");
is_ok ($opts[0] eq "\n");			# 285
is_ok ($ob->lookclear("Before\nAfter") == 1);	# 286
is_ok ($ob->lookfor eq "Before");		# 287

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "\n");				# 288
is_ok ($out eq "After");			# 289
is_ok ($patt eq "\n");				# 290
is_ok ($instead eq "");				# 291

is_ok ($ob->lookfor eq "");			# 292
($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "");				# 293
is_ok ($patt eq "");				# 294
is_ok ($instead eq "After");			# 295

@opts = $ob->are_match ("B*e","ab..ef","-re","12..56","END");
is_ok ($#opts == 4);				# 296
is_ok ($opts[2] eq "-re");			# 297

if ($naptime) {
    print "++++ page break\n";
    sleep $naptime;
}

is_ok ($ob->lookclear("Good Bye, the END, Hello") == 1);	# 298
is_ok ($ob->lookfor eq "Good Bye, the ");	# 299

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "END");				# 300
is_ok ($out eq ", Hello");			# 301
is_ok ($patt eq "END");				# 302
is_ok ($instead eq "");				# 303

is_ok ($ob->lookclear("Good Bye, the END, Hello") == 1);	# 304
is_ok ($ob->streamline eq "Good Bye, the ");	# 305

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "END");				# 306
is_ok ($out eq ", Hello");			# 307
is_ok ($patt eq "END");				# 308
is_ok ($instead eq "");				# 309

is_ok ($ob->lookclear("Good B*e, abcdef, 123456") == 1);	# 310
is_ok ($ob->lookfor eq "Good ");		# 311

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "B*e");				# 312
is_ok ($out eq ", abcdef, 123456");		# 313
is_ok ($patt eq "B*e");				# 314
is_ok ($instead eq "");				# 315

is_ok ($ob->lookfor eq ", abcdef, ");		# 316

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "123456");			# 317
is_ok ($out eq "");				# 318

if ($naptime) {
    print "++++ page break\n";
    sleep $naptime;
}

is_ok ($patt eq "12..56");			# 319
is_ok ($instead eq "");				# 320
is_ok ($ob->lookclear("Good B*e, abcdef, 123456") == 1);	# 321
is_ok ($ob->streamline eq "Good ");		# 322

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "B*e");				# 323
is_ok ($out eq ", abcdef, 123456");		# 324
is_ok ($patt eq "B*e");				# 325
is_ok ($instead eq "");				# 326

is_ok ($ob->streamline eq ", abcdef, ");	# 327

($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "123456");			# 328
is_ok ($out eq "");				# 329
is_ok ($patt eq "12..56");			# 330
is_ok ($instead eq "");				# 331

@necessary_param = AltPort->set_test_mode_active(0);

is_bad ($ob->lookclear("Good\nBye"));		# 332
is_ok ($ob->lookfor eq "");			# 333
($in, $out, $patt, $instead) = $ob->lastlook;
is_ok ($in eq "");				# 334
is_ok ($out eq "");				# 335
is_ok ($patt eq "");				# 336

is_ok ("" eq $ob->output_field_separator(":"));	# 337
is_ok (":" eq $ob->output_field_separator);	# 338
is_ok (":" eq $ob->output_field_separator(""));	# 339
is_ok ("" eq $ob->output_field_separator);	# 340

is_ok ($ob->close);				# 341
undef $ob;
