Skip to content

Commit

Permalink
Add some tests for Tree::Optimizer.register with a Tree::Optimizer::P…
Browse files Browse the repository at this point in the history
…ass as argument.
  • Loading branch information
tcurtis committed Aug 6, 2010
1 parent 826af57 commit e36f8c9
Showing 1 changed file with 37 additions and 1 deletion.
38 changes: 37 additions & 1 deletion t/tree-optimizer.t
Expand Up @@ -2,7 +2,7 @@

pir::load_bytecode('Tree/Optimizer.pbc');

plan(26);
plan(30);

{
my $opt := Tree::Optimizer.new;
Expand Down Expand Up @@ -271,6 +271,42 @@ pir::load_bytecode('PAST/Pattern.pbc');
'Null results are handled properly with :when/:recursive/:combine.');
}

{
my $opt := Tree::Optimizer.new;
my &inc := sub ($n) {
$n + 1;
};
my $pass := Tree::Optimizer::Pass.new(&inc, :name<inc>);
$opt.register($pass);
ok($opt.find-pass('inc') =:= $pass,
'.register with a pass correctly stores the pass by name.');
ok($opt.run(5) == 6,
'Passes that were directly .registered are ran.');
}

{
my &inc := sub ($n) {
$n + 1;
};
my &double := sub ($n) {
$n * 2;
};
{
my $opt := Tree::Optimizer.new;
$opt.register(Tree::Optimizer::Pass.new(&inc, :name<inc>));
$opt.register(Tree::Optimizer::Pass.new(&double, :depends-on<inc>));
ok($opt.run(5) == 12,
'.register(Pass) respects dependencies 1.');
}
{
my $opt := Tree::Optimizer.new;
$opt.register(Tree::Optimizer::Pass.new(&double, :name<double>));
$opt.register(Tree::Optimizer::Pass.new(&inc, :depends-on<double>));
ok($opt.run(5) == 11,
'.register(Pass) respects dependencies 2.');
}
}

# Local Variables:
# mode: cperl
# cperl-indent-level: 4
Expand Down

0 comments on commit e36f8c9

Please sign in to comment.