Assertions in design by contract: Difference between revisions
added Perl programming solution
m (→{{header|Phix}}: added assert()) |
(added Perl programming solution) |
||
Line 256:
2
</pre>
=={{header|Perl}}==
{{trans|Raku}}
<lang Perl># 20201201 added Perl programming solution
use strict;
use warnings;
package MessageMultiplier;
use Class::Contract;
use Test::More tests => 2;
use Test::Exception;
contract {
attr 'multiplier' => 'SCALAR';
attr 'message' => 'SCALAR';
ctor 'new';
impl { ( ${self->multiplier}, ${self->message} ) = @_ };
method 'execute';
pre { ${self->multiplier} > 1 and length ${self->message} > 0 };
impl { print ${self->message} x ${self->multiplier} , "\n" };
};
MessageMultiplier->new(2,'A')->execute;
dies_ok { MessageMultiplier->new(1,'B')->execute };
dies_ok { MessageMultiplier->new(3, '')->execute };</lang>
{{out}}
<pre>1..2
AA
ok 1
ok 2</pre>
=={{header|Phix}}==
|