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 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
# -*- cperl -*-
use warnings FATAL => qw(all);
use ExtUtils::testlib;
use Test::More tests => 6 ;
use Tk;
use Config::Model::TkUI;
use Config::Model ;
use Config::Model::Value ;
use Log::Log4perl qw(get_logger :levels) ;
use Test::Memory::Cycle;
use strict;
my $arg = shift || '';
my ($log,$show) = (0) x 2 ;
my $trace = $arg =~ /t/ ? 1 : 0 ;
$::debug = 1 if $arg =~ /d/;
$log = 1 if $arg =~ /l/;
$show = 1 if $arg =~ /s|i/;
print "You can play with the widget if you run the test with 's' argument\n";
my $home = $ENV{HOME} || '';
my $log4perl_user_conf_file = "$home/.log4config-model";
if (-r $log4perl_user_conf_file) {
Log::Log4perl::init($log4perl_user_conf_file);
}
else {
Log::Log4perl->easy_init($log ? $TRACE: $WARN);
}
Config::Model::Exception::Any->Trace(1) if $arg =~ /e/;
ok(1,"Compilation done");
my $model = Config::Model -> new () ;
my $inst = $model->instance (root_class_name => 'Master',
model_file => 't/big_model.pm',
instance_name => 'test1',
root_dir => 'wr_data',
);
ok($inst,"created dummy instance") ;
my $root = $inst -> config_root ;
ok($root,"Config root created") ;
$Config::Model::Value::nowarning=1;
my $step = qq!
warn_unless=qwerty
std_id:ab X=Bv -
std_id:ab2 -
std_id:bc X=Av -
std_id:"a b" X=Av -
std_id:"a b.c" X=Av -
tree_macro=mXY
a_string="toto tata"
a_long_string="a very long string with\nembedded return"
hash_a:toto=toto_value
hash_a:titi=titi_value
hash_a:"ti ti"="ti ti value"
ordered_hash:z=1
ordered_hash:y=2
ordered_hash:x=3
ordered_hash_of_nodes:N1 X=Av -
ordered_hash_of_nodes:N2 X=Bv -
lista=a,b,c,d
olist:0 X=Av -
olist:1 X=Bv -
my_ref_check_list=toto
my_reference="titi"
my_plain_check_list=AA,AC
warp warp2 aa2="foo bar"
!;
ok( $root->load( step => $step, experience => 'advanced' ),
"set up data in tree");
# use Tk::ObjScanner; Tk::ObjScanner::scan_object($root) ;
my $toto ;
# TBD eval this and skip test in case of failure.
SKIP: {
my $mw = eval {MainWindow-> new ; };
# cannot create Tk window
skip "Cannot create Tk window",2 if $@;
$mw->withdraw ;
my $cmw = $mw->ConfigModelWizard (-root => $root,
-store_cb => sub{},
) ;
my $delay = 1000 ;
sub inc_d { $delay += 500 } ;
my @test ;
foreach (1 .. 4 ) {
push @test, sub {$cmw->{keep_wiz_editor} = 0 ; $cmw->{wizard}->go_forward; } ;
}
foreach (1 .. 2 ) {
push @test, sub {$cmw->{keep_wiz_editor} = 0 ; $cmw->{wizard}->go_backward;} ;
}
# no problem if too many subs are defined: programs will exit
foreach (1 .. 100 ) {
push @test, sub {$cmw->{keep_wiz_editor} = 0 ; $cmw->{wizard}->go_forward; } ;
}
unless ($show) {
foreach my $t (@test) {
$mw->after($delay, $t);
inc_d ;
}
}
$cmw->start_wizard('master',1) ;
ok(1,"wizard done") ;
memory_cycle_ok($cmw);
}
|