diff lib/IMPL/Test/BadUnit.pm @ 407:c6e90e02dd17 ref20150831

renamed Lib->lib
author cin
date Fri, 04 Sep 2015 19:40:23 +0300
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/IMPL/Test/BadUnit.pm	Fri Sep 04 19:40:23 2015 +0300
@@ -0,0 +1,65 @@
+package IMPL::Test::BadUnit;
+use strict;
+use warnings;
+
+use parent qw(IMPL::Test::Unit);
+use IMPL::Class::Property;
+
+BEGIN {
+    public property UnitName => prop_all;
+    public property Message => prop_all;
+    public property Error => prop_all;
+}
+
+our %CTOR = (
+    'IMPL::Test::Unit' => sub {
+        if (@_>1) {
+            # Unit construction
+            my ($unit,$message,$error) = @_;
+            return new IMPL::Test::Unit::TestInfo(
+                BadUnitTest => sub {
+                    die new IMPL::Test::FailException($message,$unit,eval {$error->isa('IMPL::Exception')} ? $error->toString(1) : $error)
+                }
+            );
+        } else {
+            # test construction
+            return @_;
+        }
+    }
+);
+
+sub CTOR {
+    my ($this,$name,$message,$error) = @_;
+    
+    $this->UnitName($name);
+    $this->Message($message);
+    $this->Error($error);
+}
+
+sub save {
+    my ($this,$ctx) = @_;
+    
+    defined ($this->$_()) and $ctx->AddVar($_ => $this->$_()) foreach qw(UnitName Message);
+}
+
+sub restore {
+    my ($class,$data,$inst) = @_;
+    
+    my %args = @$data;
+    
+    $inst ||= $class->surrogate;
+    $inst->callCTOR(@args{qw(UnitName Message)});
+}
+
+sub List {
+    my ($this) = @_;
+    my $error = $this->Error;
+    return new IMPL::Test::Unit::TestInfo(
+        BadUnitTest => sub {
+            die new IMPL::Test::FailException($this->Message,$this->UnitName,eval {$error->isa('IMPL::Exception')} ? $error->toString(1) : $error)
+        }
+    );
+}
+
+
+1;