aboutsummaryrefslogtreecommitdiff
path: root/t/steps/rest-splitlang.t
blob: 10283b4b1c7c3bfa2dbcf3dc3bc4110f7b809a6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/usr/bin/perl 
use strict;
use warnings;
use Path::Class;
use Test::More 'no_plan';
use Test::Differences;
use WebCoso::Resource;
 
BEGIN {use_ok('WebCoso::Step::ReST::SplitLang')}
my $step=WebCoso::Step::ReST::SplitLang->new();
 
sub make_res {
    my ($rst_doc,$key)=@_;
    $key||='datastream';
    my $resource=WebCoso::Resource->new();
    open my $rst_fh,'<',\$rst_doc;
    $resource->set_property({filename=>'mydoc.rest.txt'},$key=>$rst_fh);
 
    return $resource;
}
 
my $resource=make_res(<<'END_REST');
riga comune
.. lang::
ancora comune
.. lang:: it
italiano
.. lang:: en
inglese
  .. lang::
  any nested
.. lang:: it
italiano ancora
.. lang::   
comune (con spazi)
END_REST
 
 
$step->process($resource,'gen');
is_deeply([$resource->get_axes()],
          ['filename'],
          'no action on second pass');
 
$step->process($resource,'meta');
 
is_deeply([sort $resource->get_axes()],
          ['filename','language'],
          'action on first pass');
is_deeply([sort $resource->get_axis_values('language')],
          ['en','it'],
          'lingue giuste');
eq_or_diff($resource->get_property_string({language=>'it'},'rstdoc'),<<'END_REST_IT','italiano');
riga comune
ancora comune
italiano
  any nested
italiano ancora
comune (con spazi)
END_REST_IT
 
eq_or_diff($resource->get_property_string({language=>'en'},'rstdoc'),<<'END_REST_EN','inglese');
riga comune
ancora comune
inglese
  any nested
comune (con spazi)
END_REST_EN
 
my $rst_doc=<<'END_REST';
tutto a comune
monolingua
END_REST
 
$resource=make_res($rst_doc);
 
$step->process($resource,'meta');
is_deeply([$resource->get_axes()],
          ['filename'],
          'monolingua');
eq_or_diff($resource->get_property_string('rstdoc'),$rst_doc,'monolingua cat');
 
$rst_doc=<<'END_REST';
.. lang::
tutto a comune
monolingua
END_REST
 
$resource=make_res($rst_doc);
 
$step->process($resource,'meta');
is_deeply([$resource->get_axes()],
          ['filename'],
          'monolingua 2');
eq_or_diff($resource->get_property_string('rstdoc'),$rst_doc,'monolingua 2 cat');
 
# test per le chiavi arbitrarie 
$step=WebCoso::Step::ReST::SplitLang->new({from=>'source',to=>'dest'});
$rst_doc=<<'END_REST';
dati vari
END_REST
$resource=make_res($rst_doc,'source');
$step->process($resource,'meta');
eq_or_diff($resource->get_property_string('dest'),$rst_doc,'chiavi arbitrarie');