Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision b1e8bade

Von Sven Schöling vor mehr als 3 Jahren hinzugefügt

  • ID b1e8badeab608b91ded10f5f32082430a7b7cd42
  • Vorgänger cb53cdd0
  • Nachfolger 900bb49e

t/x/expections.t - Tests für Exception-Seialisierung

Unterschiede anzeigen:

t/x/exceptions.t
1
use Test::More tests => 25;
2

  
3
use lib 't';
4

  
5
use SL::X;
6

  
7
# check exception serialization
8

  
9
my @classes = qw(
10
  SL::X::DBError
11
  SL::X::Inventory::Allocation
12
  SL::X::ZUGFeRDValidation
13
);
14

  
15
# check basic mesage / error serialization
16

  
17
for my $error_class (@classes) {
18

  
19
  my $x = $error_class->new(message => "test message");
20

  
21
  is $x->error,   "test message", "$error_class(message): error works";
22
  is $x->message, "test message", "$error_class(message): message works";
23
  is "$x",        "test message", "$error_class(message): stringify works";
24

  
25
  my $x = $error_class->new(error => "test message");
26

  
27
  is $x->error,   "test message", "$error_class(error): error works";
28
  is $x->message, "test message", "$error_class(error): message works";
29
  is "$x",        "test message", "$error_class(error): stringify works";
30
}
31

  
32

  
33
# now create some classes with message templates and extra fields
34

  
35
my $x = SL::X::DBError->new(msg => "stuff", db_error => "broke");
36

  
37
is $x->error,   "stuff: broke", "template: error works";
38
is $x->message, "stuff: broke", "tempalte: message works";
39
is "$x",        "stuff: broke", "template: stringify works";
40

  
41

  
42
my $x = SL::X::Inventory::Allocation->new(code => "DEADCOFFEE", message => "something went wrong");
43

  
44
is $x->code,   "DEADCOFFEE", "extra fields work";
45

  
46

  
47

  
48
# check stack traces
49

  
50
sub a { b() }
51
sub b { c() }
52
sub c { d() }
53
sub d { e() }
54
sub e { f() }
55
sub f { SL::X::DBError->throw() }
56

  
57
eval {
58
  a();
59
} or do {
60
  if (my $e = SL::X::DBError->caught) {
61
    ok 1, "caught db error";
62
    ok $e->trace->as_string =~ /main::a/, "trace contains function a";
63
    ok $e->trace->as_string =~ /main::f/, "trace contains function f";
64

  
65
  } else {
66
    ok 0, "didn't catch db error";
67
  }
68
};

Auch abrufbar als: Unified diff