#!./perl BEGIN { require './test.pl'; } plan( tests => 26 ); # simple error object. { my $err = error::create("my message"); my $line1 = __LINE__; ok $err, "error object created"; is ref $err, "error"; is $err->{description}, "my message"; is $err->message, "my message at ../lib/error.t line $line1.\n", "message function"; } # a bit more complex one, with stack trace. { my ($line1, $line2, $line3); sub new_error { return error::create("my message"); } $line1 = __LINE__; sub new_error2 { return new_error(); } $line2 = __LINE__; $err = new_error2(); $line3 = __LINE__; is( (scalar @{$err->{stack}}), 2); is((join '**', @{$err->{stack}[0]}), "main**../lib/error.t**$line2**main::new_error**"); is((join '**', @{$err->{stack}[1]}), "main**../lib/error.t**$line3**main::new_error2**"); is $err->message, <{description}, "foobar"; is $@->message, <message, <message, <message, <message, <