#!/usr/bin/env perl
use
5.008;
OK
=>
'ALL BLOCKS SUCCESSFULLY LOADED'
,
CANNOT
=>
'Cannot parse'
,
};
my
%contents
= (
"Util::SetGlobal language=en\nRead::Text\n#cs_synthesis_a2w.scen"
=> OK,
"Util::SetGlobal language=en\nRead::Text\n# cs_synthesis_a2w.scen"
=> OK,
"Util::SetGlobal language=en\nRead::Text\n#cs_synthesis_a2w.scen\n"
=> OK,
"Util::SetGlobal language=en\nRead::Text\n# cs_synthesis_a2w.scen\n"
=> OK,
'\\'
=> CANNOT,
'aaa aaa'
=> CANNOT,
'XXX XXX'
=>
q{Can't use block Treex::Block::XXX}
,
);
my
%create
= (
'cs_synthesis_pdt.scen'
=>
<<'EOF',
Util::SetGlobal language=cs selector=T
cs_synthesis_goldt.scen
#cs_synthesis_t2a.scen
#cs_synthesis_a2w.scen
EOF
'cs_synthesis_goldt.scen'
=>
<<'EOF',
Read::Text
#in release there won't be T2T blocks, so I'm using basic for testing
#T2T::CopyTtree
#T2A::SentenceNegationToVerb
#T2A::DeleteGeneratedNodes
#T2A::CS::TransformTLemmas
#T2A::RenamePunctuationTLemmas
#T2A::CS::SetFormemes
#T2A::CS::MarkClauseHeads
#T2T::SetClauseNumber
EOF
);
my
%files
= (
'cs_synthesis_pdt.scen'
=> OK,
);
my
@filenames
;
BEGIN { use_ok(
'Treex::Core::Scenario'
); }
foreach
my
$content
(
keys
%contents
) {
my
$expected
=
$contents
{
$content
};
my
$name
=
'test'
.
int
(
rand
(10000) ) .
'.scen'
;
SKIP: {
push
@filenames
,
$name
;
note(
"Writing '$content' to $name"
);
write_file(
$name
,
$content
) or skip
"cannot write testing scenario to $name"
, 1;
combined_like(
sub
{
eval
{
my
$scenario
= Treex::Core::Scenario->new(
from_file
=>
$name
);
$scenario
->loaded_blocks;
};
},
qr/$expected/
,
"Output of parsing '$content' contains '$expected' "
);
}
}
foreach
my
$name
(
keys
%create
) {
write_file(
$name
,
$create
{
$name
} );
push
@filenames
,
$name
;
}
foreach
my
$file
(
keys
%files
) {
my
$expected
=
$files
{
$file
};
combined_like(
sub
{
eval
{
my
$scenario
= Treex::Core::Scenario->new(
from_file
=>
$file
);
$scenario
->loaded_blocks;
};
},
qr/$expected/
,
"Output of parsing '$file' contains '$expected' "
);
}
done_testing();
END {
map
{
unlink
}
@filenames
;
}