#!perl -w
; use strict
; use warnings
; use Test::More tests => 6
#; use Data::Dumper
; package My::Test1
; use Class::constr
{ default => { a => 2
, b => 3
}
, no_strict => 1
}
; package main
; is_deeply ( scalar My::Test1->new()
, { a => 2
, b => 3
}
)
; package My::Test2
; use Class::constr
{ default => sub{ +{ a => 2
, b => 3
}
}
, no_strict => 1
}
; package main
; is_deeply ( scalar My::Test2->new()
, { a => 2
, b => 3
}
)
; package My::Test3
; use Class::constr
{ default => 'def'
, no_strict => 1
}
; sub def
{ +{ a => 2
, b => 3
}
}
; package main
; is_deeply ( scalar My::Test3->new()
, { a => 2
, b => 3
}
)
; package My::Test4
; use Class::constr
{ default => sub{ +{ a => 2
, b => 3
}
}
, no_strict => 1
}
; package main
; is_deeply ( scalar My::Test2->new(a=>5)
, { a => 5
, b => 3
}
)
# overwriting
; package My::Test5
; use Class::constr
{ default => { a => 2
, b => 3
}
, no_strict => 1
}
; use Class::constr
{ name => 'copy_me'
, default => { a => 4
, b => 5
, c => 5
}
, copy => 1
, no_strict => 1
}
; package main
; my $o = My::Test5->new()
; is_deeply ( $o
, { a => 2
, b => 3
}
)
; is_deeply ( scalar $o->copy_me(a=>8)
, { a => 8
, b => 3
, c => 5
}
)