File: term_ui.t

package info (click to toggle)
libconfig-model-perl 2.021-3%2Bdeb7u1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 3,104 kB
  • sloc: perl: 20,550; makefile: 11
file content (103 lines) | stat: -rw-r--r-- 2,645 bytes parent folder | download
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
# -*- cperl -*-
# $Author$
# $Date$
# $Revision$

use ExtUtils::testlib;
use Test::More ;

# this block is necessary to avoid failure on some automatic cpan
# testers setup which fail while loading Term::ReadLine
BEGIN { 
    my $ok 
      = eval { require Term::ReadLine ;
	       my $test = new Term::ReadLine 'Test' ;
	       1;
	   } 
      and (
	      eval {require Term::ReadLine::Gnu  ; 1;} 
	   or eval {require Term::ReadLine::Perl ; 1;} 
	  );


    if ($ok) {
	plan tests => 11;
    }
    else {
	plan skip_all => "Cannot load Term::ReadLine" ;
    }
}

use Test::Memory::Cycle;
use Config::Model;
use Config::Model::TermUI ;

use warnings;
no warnings qw(once);

use strict;

use Data::Dumper;

use vars qw/$model/;

$model = Config::Model -> new(legacy => 'ignore',)  ;

my $arg = shift || '';

my $trace = $arg =~ /t/ ? 1 : 0 ;
$::verbose          = 1 if $arg =~ /v/;
$::debug            = 1 if $arg =~ /d/;
Config::Model::Exception::Any->Trace(1) if $arg =~ /e/;

use Log::Log4perl qw(:easy) ;
Log::Log4perl->easy_init($arg =~ /l/ ? $TRACE: $WARN);

ok(1,"compiled");

my $inst = $model->instance (root_class_name => 'Master', 
			     model_file => 't/big_model.pm',
			     instance_name => 'test1');
ok($inst,"created dummy instance") ;

my $root = $inst -> config_root ;

my $step = 'std_id:ab X=Bv - '
         . 'std_id:bc X=Av - '
         . 'std_id:"abc def" X=Av - '
         . 'std_id:"abc hij" X=Av - '
         . 'a_string="toto tata"';

ok( $root->load( step => $step, experience => 'advanced' ),
  "set up data in tree with '$step'");

# this test test only execution of user command, not their actual
# input
my $prompt = 'Test Prompt' ;

my $term_ui = Config::Model::TermUI->new( root => $root ,
					  title => 'Test Title',
					  prompt => $prompt,
					);

my @test 
  = ( # text line start ## expected completions
     [ [ '', '',0 ], [ qw/cd delete desc description display dump help ll ls save set/] ],
     [ [ '', 'cd ',3 ], ['!', '-', 'std_id:', 'olist:', 'warp ', 'slave_y '] ],
     [ [ 's', 'cd s',3 ], ['std_id:', 'slave_y '] ],
     [ [ 'sl', 'cd sl',3 ], [ 'slave_y '] ],
     [ [ '', 'cd std_id:',10 ], [ 'ab ', '"abc def" ', '"abc hij" ','bc ' ] ],
     [ [ '', 'cd std_id:"',11 ], [ 'ab ', 'abc def" ', 'abc hij" ','bc ' ] ],
#     [ [ '"abc', 'cd std_id:"abc',14 ], [ ' def" ', ' hij" ' ] ],
     [ [ 'a', 'cd std_id:a',3 ], [ 'ab '] ],
    ) ;

foreach my $a_test (@test) {
    my ($input,$expect) = @$a_test ;

    my @comp = $term_ui->completion(@$input) ;
    print Dumper (\@comp) if $trace ;
    is_deeply(\@comp,$expect ,"exec '".join("', '",@$input)."'") ;

}
memory_cycle_ok($model);