=head1 Name

TransFehler


=head1 Ziel

Testen der Fehlerbehandlungsroutinen mit Transaktionen.


=cut


package Test::Fehler;
use utf8;
use warnings;
use strict; use warnings;
BEGIN { unshift(@INC,($ENV{'POPHOME'}||'@POPHOME@').'/lib')
			unless $ENV{'KUNDE_NO_PERLPATH'};
      }


use Test::More tests => 3; $|=1;
use Dbase::Test;
use Dbase::Help qw(DoTrans);
use Fehler qw(warnung problem fehler warnungen probleme ohne_warnung ffehler hat_warnung hat_problem);

sub Warnung() {
	warnung("WaR","nUnG");
}

sub Problem() {
	problem("PrObLeM","","");
}

sub Fehler() {
	fehler("FeHlEr!");
}

{
	ffehler {
		DoTrans {
			Fehler();
		};
		fail("Fehler 1 falsch");
	} sub {
		pass("im Fehler 1");
	};
}

# OK beim zweiten Durchgang
{
	my $num=0;

	ffehler {
		DoTrans {
			print "# run $num\n";
			Fehler() unless $num++;
			print "# after run $num\n";
		} 2;
		pass("Fehler 2 OK");
	} sub {
		fail("im Fehler 2");
	};
}

# Abbruch
ok(system("perl test/x29_test.pl >/dev/null 2>&1"),"test run");
