r64621 - in /branches/upstream/libmouse-perl/current: ./ lib/ lib/Mouse/ lib/Mouse/Meta/ lib/Mouse/Meta/Method/ lib/Mouse/Meta/Role/ lib/Mouse/Util/ t/001_mouse/ t/040_type_constraints/

ansgar at users.alioth.debian.org ansgar at users.alioth.debian.org
Sat Nov 6 14:31:41 UTC 2010


Author: ansgar
Date: Sat Nov  6 14:31:22 2010
New Revision: 64621

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=64621
Log:
[svn-upgrade] new version libmouse-perl (0.82)

Added:
    branches/upstream/libmouse-perl/current/t/040_type_constraints/016_subtyping_parameterized_types.t
Modified:
    branches/upstream/libmouse-perl/current/Changes
    branches/upstream/libmouse-perl/current/MANIFEST
    branches/upstream/libmouse-perl/current/META.yml
    branches/upstream/libmouse-perl/current/lib/Mouse.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Exporter.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Attribute.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Class.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Accessor.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Constructor.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Delegation.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Destructor.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Module.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Application.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Composite.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Method.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/TypeConstraint.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Object.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/PurePerl.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Role.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Spec.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Tiny.pod
    branches/upstream/libmouse-perl/current/lib/Mouse/Util.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Util/TypeConstraints.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/XS.pod
    branches/upstream/libmouse-perl/current/t/001_mouse/043-parameterized-type.t

Modified: branches/upstream/libmouse-perl/current/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/Changes?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/Changes (original)
+++ branches/upstream/libmouse-perl/current/Changes Sat Nov  6 14:31:22 2010
@@ -1,4 +1,11 @@
 Revision history for Mouse
+
+0.82 2010-11-05 18:12:28
+    [BUG FIXES]
+    * Wrong name for a method in Mouse::Meta::TypeConstraint:
+      s/is_a_subtype_of/is_a_type_of/
+    * $type_constraint->type_parameter didn't return the correct value
+      if it's a subtype of paramterized type constraints
 
 0.81 2010-10-28 21:49:40
     [BUG FIXES]

Modified: branches/upstream/libmouse-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/MANIFEST?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/MANIFEST (original)
+++ branches/upstream/libmouse-perl/current/MANIFEST Sat Nov  6 14:31:22 2010
@@ -247,6 +247,7 @@
 t/040_type_constraints/010_misc_type_tests.t
 t/040_type_constraints/011_container_type_constraint.t
 t/040_type_constraints/015_enum.t
+t/040_type_constraints/016_subtyping_parameterized_types.t
 t/040_type_constraints/017_subtyping_union_types.t
 t/040_type_constraints/018_custom_parameterized_types.t
 t/040_type_constraints/022_custom_type_errors.t

Modified: branches/upstream/libmouse-perl/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/META.yml?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/META.yml (original)
+++ branches/upstream/libmouse-perl/current/META.yml Sat Nov  6 14:31:22 2010
@@ -30,4 +30,4 @@
 resources:
   license: http://dev.perl.org/licenses/
   repository: git://git.moose.perl.org/Mouse.git
-version: 0.81
+version: 0.82

Modified: branches/upstream/libmouse-perl/current/lib/Mouse.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse.pm Sat Nov  6 14:31:22 2010
@@ -3,7 +3,7 @@
 
 use Mouse::Exporter; # enables strict and warnings
 
-our $VERSION = '0.81';
+our $VERSION = '0.82';
 
 use Carp         qw(confess);
 use Scalar::Util qw(blessed);
@@ -155,7 +155,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 SYNOPSIS
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Exporter.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Exporter.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Exporter.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Exporter.pm Sat Nov  6 14:31:22 2010
@@ -268,7 +268,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 SYNOPSIS
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Attribute.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Attribute.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Attribute.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Attribute.pm Sat Nov  6 14:31:22 2010
@@ -342,7 +342,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 DESCRIPTION
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Class.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Class.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Class.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Class.pm Sat Nov  6 14:31:22 2010
@@ -468,7 +468,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 DESCRIPTION
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method.pm Sat Nov  6 14:31:22 2010
@@ -54,7 +54,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 DESCRIPTION
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Accessor.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Accessor.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Accessor.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Accessor.pm Sat Nov  6 14:31:22 2010
@@ -183,7 +183,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Constructor.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Constructor.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Constructor.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Constructor.pm Sat Nov  6 14:31:22 2010
@@ -232,7 +232,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Delegation.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Delegation.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Delegation.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Delegation.pm Sat Nov  6 14:31:22 2010
@@ -61,7 +61,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Destructor.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Destructor.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Destructor.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Destructor.pm Sat Nov  6 14:31:22 2010
@@ -65,7 +65,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Module.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Module.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Module.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Module.pm Sat Nov  6 14:31:22 2010
@@ -315,7 +315,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 DESCRIPTION
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role.pm Sat Nov  6 14:31:22 2010
@@ -131,7 +131,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 DESCRIPTION
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Application.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Application.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Application.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Application.pm Sat Nov  6 14:31:22 2010
@@ -206,7 +206,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Composite.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Composite.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Composite.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Composite.pm Sat Nov  6 14:31:22 2010
@@ -156,7 +156,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Method.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Method.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Method.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Method.pm Sat Nov  6 14:31:22 2010
@@ -23,7 +23,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/TypeConstraint.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/TypeConstraint.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/TypeConstraint.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/TypeConstraint.pm Sat Nov  6 14:31:22 2010
@@ -7,31 +7,54 @@
 
     $args{name} = '__ANON__' if !defined $args{name};
 
-    if(defined $args{parent}) {
+    my $type_parameter;
+    if(defined $args{parent}) { # subtyping
         %args = (%{$args{parent}}, %args);
+
         # a child type must not inherit 'compiled_type_constraint'
         # and 'hand_optimized_type_constraint' from the parent
-        delete $args{compiled_type_constraint};
-        delete $args{hand_optimized_type_constraint};
+        delete $args{compiled_type_constraint};       # don't inherit it
+        delete $args{hand_optimized_type_constraint}; # don't inherit it
+
+        $type_parameter = $args{type_parameter};
         if(defined(my $parent_tp = $args{parent}{type_parameter})) {
-            delete $args{type_parameter} if $parent_tp == $args{type_parameter};
+            if($parent_tp != $type_parameter) {
+                $type_parameter->is_a_type_of($parent_tp)
+                    or $class->throw_error(
+                        "$type_parameter is not a subtype of $parent_tp",
+                    );
+            }
+            else {
+                $type_parameter = undef;
+            }
         }
     }
 
     my $check;
 
-    if($check = delete $args{optimized}) {
+    if($check = delete $args{optimized}) { # likely to be builtins
         $args{hand_optimized_type_constraint} = $check;
         $args{compiled_type_constraint}       = $check;
     }
-    elsif(my $param = $args{type_parameter}) {
+    elsif(defined $type_parameter) { # parameterizing
         my $generator = $args{constraint_generator}
-            || $class->throw_error("The $args{name} constraint cannot be used,"
-                . " because $param doesn't subtype from a parameterizable type");
-        # it must be 'constraint'
-        $check = $args{constraint} = $generator->($param);
-    }
-    else {
+            || $class->throw_error(
+                  "The $args{name} constraint cannot be used,"
+                . " because $type_parameter doesn't subtype"
+                . " from a parameterizable type");
+
+        my $parameterized_check = $generator->($type_parameter);
+        if(defined(my $my_check = $args{constraint})) {
+            $check = sub {
+                return $parameterized_check->($_) && $my_check->($_);
+            };
+        }
+        else {
+            $check = $parameterized_check;
+        }
+        $args{constraint} = $check;
+    }
+    else { # common cases
         $check = $args{constraint};
     }
 
@@ -237,7 +260,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 DESCRIPTION
 
@@ -262,7 +285,7 @@
 
 =item C<< $constraint->message >>
 
-=item C<< $constraint->is_a_subtype_of($name or $object) >>
+=item C<< $constraint->is_a_type_of($name or $object) >>
 
 =item C<< $constraint->coerce($value) >>
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Object.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Object.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Object.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Object.pm Sat Nov  6 14:31:22 2010
@@ -10,7 +10,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 METHODS
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/PurePerl.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/PurePerl.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/PurePerl.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/PurePerl.pm Sat Nov  6 14:31:22 2010
@@ -750,7 +750,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Role.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Role.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Role.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Role.pm Sat Nov  6 14:31:22 2010
@@ -1,7 +1,7 @@
 package Mouse::Role;
 use Mouse::Exporter; # enables strict and warnings
 
-our $VERSION = '0.81';
+our $VERSION = '0.82';
 
 use Carp         qw(confess);
 use Scalar::Util qw(blessed);
@@ -137,7 +137,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 SYNOPSIS
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Spec.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Spec.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Spec.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Spec.pm Sat Nov  6 14:31:22 2010
@@ -2,7 +2,7 @@
 use strict;
 use warnings;
 
-our $VERSION = '0.81';
+our $VERSION = '0.82';
 
 our $MouseVersion = $VERSION;
 our $MooseVersion = '1.13';
@@ -19,7 +19,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 SYNOPSIS
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Tiny.pod
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Tiny.pod?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Tiny.pod (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Tiny.pod Sat Nov  6 14:31:22 2010
@@ -5,7 +5,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 DESCRIPTION
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Util.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Util.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Util.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Util.pm Sat Nov  6 14:31:22 2010
@@ -48,7 +48,7 @@
         },
     );
 
-    our $VERSION = '0.81';
+    our $VERSION = '0.82';
 
     my $xs = !(defined(&is_valid_class_name) || $ENV{MOUSE_PUREPERL} || $ENV{PERL_ONLY});
 
@@ -388,7 +388,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 SYNOPSIS
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Util/TypeConstraints.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Util/TypeConstraints.pm?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Util/TypeConstraints.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Util/TypeConstraints.pm Sat Nov  6 14:31:22 2010
@@ -427,7 +427,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head2 SYNOPSIS
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/XS.pod
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/XS.pod?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/XS.pod (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/XS.pod Sat Nov  6 14:31:22 2010
@@ -5,7 +5,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.81
+This document describes Mouse version 0.82
 
 =head1 DESCRIPTION
 

Modified: branches/upstream/libmouse-perl/current/t/001_mouse/043-parameterized-type.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/t/001_mouse/043-parameterized-type.t?rev=64621&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/t/001_mouse/043-parameterized-type.t (original)
+++ branches/upstream/libmouse-perl/current/t/001_mouse/043-parameterized-type.t Sat Nov  6 14:31:22 2010
@@ -1,7 +1,7 @@
-#!/usr/bin/env perl
+#!perl
 use strict;
 use warnings;
-use Test::More tests => 54;
+use Test::More;
 use Test::Exception;
 
 use Tie::Hash;
@@ -222,3 +222,30 @@
 }
 
 is_deeply \%th_clone, \%th, 'the hash iterator is initialized';
+
+{
+    my $myhashref = subtype 'MyHashRef',
+        as 'HashRef[Value]',
+        where { keys %$_ > 1 };
+
+    ok  $myhashref->is_a_type_of('HashRef'), "$myhashref";
+    ok  $myhashref->check({ a => 43, b => 100 });
+    ok  $myhashref->check({ a => 43, b => 3.14 });
+    ok !$myhashref->check({});
+    ok !$myhashref->check({ a => 42, b => [] });
+
+    is $myhashref->type_parameter, 'Value';
+
+    $myhashref = subtype 'H', as 'MyHashRef[Int]';
+
+    ok  $myhashref->is_a_type_of('HashRef'), "$myhashref";
+    ok  $myhashref->check({ a => 43, b => 100 });
+    ok !$myhashref->check({ a => 43, b => 3.14 });
+    ok !$myhashref->check({});
+    ok !$myhashref->check({ a => 42, b => [] });
+
+    is $myhashref->type_parameter, 'Int';
+}
+
+done_testing;
+

Added: branches/upstream/libmouse-perl/current/t/040_type_constraints/016_subtyping_parameterized_types.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/t/040_type_constraints/016_subtyping_parameterized_types.t?rev=64621&op=file
==============================================================================
--- branches/upstream/libmouse-perl/current/t/040_type_constraints/016_subtyping_parameterized_types.t (added)
+++ branches/upstream/libmouse-perl/current/t/040_type_constraints/016_subtyping_parameterized_types.t Sat Nov  6 14:31:22 2010
@@ -1,0 +1,136 @@
+#!/usr/bin/perl
+# This is automatically generated by author/import-moose-test.pl.
+# DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!!
+use t::lib::MooseCompat;
+
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Exception;
+
+BEGIN {
+    use_ok("Mouse::Util::TypeConstraints");
+}
+
+lives_ok {
+    subtype 'MySpecialHash' => as 'HashRef[Int]';
+} '... created the subtype special okay';
+
+{
+    my $t = find_type_constraint('MySpecialHash');
+    isa_ok($t, 'Mouse::Meta::TypeConstraint');
+
+    is($t->name, 'MySpecialHash', '... name is correct');
+
+    my $p = $t->parent;
+    isa_ok($p, 'Mouse::Meta::TypeConstraint');
+    isa_ok($p, 'Mouse::Meta::TypeConstraint');
+
+    is($p->name, 'HashRef[Int]', '... parent name is correct');
+
+    ok($t->check({ one => 1, two => 2 }), '... validated {one=>1, two=>2} correctly');
+    ok(!$t->check({ one => "ONE", two => "TWO" }), '... validated it correctly');
+
+    #ok( $t->equals($t), "equals to self" );
+    #ok( !$t->equals( $t->parent ), "not equal to parent" );
+    #ok( $t->parent->equals( $t->parent ), "parent equals to self" );
+
+    ok( !$t->is_a_type_of("ThisTypeDoesNotExist"), "not a non existant type" );
+    ok( !$t->is_subtype_of("ThisTypeDoesNotExist"), "not a subtype of a non existant type" );
+}
+
+lives_ok {
+    subtype 'MySpecialHashExtended'
+        => as 'HashRef[Int]'
+        => where {
+            # all values are less then 10
+            (scalar grep { $_ < 10 } values %{$_}) ? 1 : undef
+        };
+} '... created the subtype special okay';
+
+{
+    my $t = find_type_constraint('MySpecialHashExtended');
+    isa_ok($t, 'Mouse::Meta::TypeConstraint');
+
+    is($t->name, 'MySpecialHashExtended', '... name is correct');
+
+    my $p = $t->parent;
+    isa_ok($p, 'Mouse::Meta::TypeConstraint');
+    isa_ok($p, 'Mouse::Meta::TypeConstraint');
+
+    is($p->name, 'HashRef[Int]', '... parent name is correct');
+
+    ok($t->check({ one => 1, two => 2 }), '... validated it correctly');
+    ok(!$t->check({ zero => 10, one => 11, two => 12 }), '... validated { zero => 10, one => 11, two => 12 } correctly') or diag $t->dump;
+    ok(!$t->check({ one => "ONE", two => "TWO" }), '... validated it correctly');
+}
+
+lives_ok {
+    subtype 'MyNonSpecialHash'
+        => as "HashRef"
+        => where { keys %$_ == 3 };
+};
+
+{
+    my $t = find_type_constraint('MyNonSpecialHash');
+
+    isa_ok($t, 'Mouse::Meta::TypeConstraint');
+    isa_ok($t, 'Mouse::Meta::TypeConstraint');
+
+    ok( $t->check({ one => 1, two => "foo", three => [] }), "validated" );
+    ok( !$t->check({ one => 1 }), "failed" );
+}
+
+{
+    my $t = Mouse::Util::TypeConstraints::find_or_parse_type_constraint('MyNonSpecialHash[Int]');
+
+    isa_ok($t, 'Mouse::Meta::TypeConstraint');
+
+    ok( $t->check({ one => 1, two => 2, three => 3 }), "validated" );
+    ok( !$t->check({ one => 1, two => "foo", three => [] }), "failed" )
+        or diag $t->dump;
+    ok( !$t->check({ one => 1 }), "failed" );
+}
+
+{
+    ## Because to throw errors in M:M:Parameterizable needs Mouse loaded in
+    ## order to throw errors.  In theory the use Mouse belongs to that class
+    ## but when I put it there causes all sorts or trouble.  In theory this is
+    ## never a real problem since you are likely to use Mouse somewhere when you
+    ## are creating type constraints.
+    use Mouse ();
+
+    my $MyArrayRefInt =  subtype 'MyArrayRefInt',
+        as 'ArrayRef[Int]';
+
+    my $BiggerInt = subtype 'BiggerInt',
+        as 'Int',
+        where {$_>10};
+
+    my $SubOfMyArrayRef = subtype 'SubOfMyArrayRef',
+        as 'MyArrayRefInt[BiggerInt]';
+
+    ok $MyArrayRefInt->check([1,2,3]), '[1,2,3] is okay';
+    ok ! $MyArrayRefInt->check(["a","b"]), '["a","b"] is not';
+    ok $BiggerInt->check(100), '100 is  big enough';
+    ok ! $BiggerInt->check(5), '5 is  big enough';
+    ok $SubOfMyArrayRef->check([15,20,25]), '[15,20,25] is a bunch of big ints';
+    ok ! $SubOfMyArrayRef->check([15,5,25]), '[15,5,25] is NOT a bunch of big ints';
+
+    throws_ok sub {
+        my $SubOfMyArrayRef = subtype 'SubSubOfMyArrayRef',
+            as 'SubOfMyArrayRef[Str]';
+    }, qr/Str is not a subtype of BiggerInt/, 'Failed to parameterize with a bad type parameter';
+}
+
+{
+    last; # ScalarRef[] is not supported
+    my $RefToInt = subtype as 'ScalarRef[Int]';
+
+    ok $RefToInt->check(\1), '\1 is okay';
+    ok !$RefToInt->check(1), '1 is not';
+    ok !$RefToInt->check(\"foo"), '\"foo" is not';
+}
+
+done_testing;




More information about the Pkg-perl-cvs-commits mailing list