#!/usr/bin/perl -w
use strict;
use Test::More qw(no_plan);
BEGIN {
use_ok('TidyView::Options');
};
require_ok('TidyView::Options');
can_ok('TidyView::Options', qw(
assembleOptions
build
)
);
use Log::Log4perl qw(:levels get_logger);
Log::Log4perl->init_and_watch('bin/log.conf', 10);
my $logger = get_logger((caller(0))[3]);
# test _getCategoryType()
is(TidyView::Options->_getTypeCategory(), 'checkbox', 'no type falls back to checkbox' );
is(TidyView::Options->_getTypeCategory(type => undef), 'checkbox', 'undef falls back to checkbox' );
is(TidyView::Options->_getTypeCategory(type => '!'), 'checkbox', 'type of ! means checkbox' );
is(TidyView::Options->_getTypeCategory(type => '=s'), 'string', 'type of =s means string entry' );
is(TidyView::Options->_getTypeCategory(type => '=i'), 'integer', 'type of =i means spinbox' );
is(TidyView::Options->_getTypeCategory(type => 'ARRAY'), 'list', 'type of array means listbox' );
my @die = ();
eval {
local $SIG{__DIE__} = sub {push @die, @_};
TidyView::Options->_getTypeCategory(type => 'UNKNOWN');
};
diag("dont worry - we expected that!");
is(@die, 1, 'expected we died'); # died
like(shift(@die), qr(^unknown entry type UNKNOWN at ), 'expected suicide note');
# test _mapRangeToList()
is(TidyView::Options->_mapRangeToList(), undef, 'no range returns no range');
is(TidyView::Options->_mapRangeToList(undef), undef, 'undefined range returns undefined range');
is(TidyView::Options->_mapRangeToList('SIMPLE'), 'SIMPLE', 'scalar range returns scalar range');
is_deeply(TidyView::Options->_mapRangeToList([]), [], 'empty range returns empty range');
is_deeply(TidyView::Options->_mapRangeToList([0]), [0], 'single range returns single range');
is_deeply(TidyView::Options->_mapRangeToList([0, 1, 2]), [0, 1, 2], 'overlong range returns overlong range');
is_deeply(TidyView::Options->_mapRangeToList([3, 1]), [3, 1], 'inverted range returns inverted range');
is_deeply(TidyView::Options->_mapRangeToList(['a', 'c']), ['a', 'c'], 'unmappable range returns unmappable range');
# the one we really want
is_deeply(TidyView::Options->_mapRangeToList([1, 5]), [1, 2, 3, 4, 5], 'mappable range returns mapped range');
# test _differentToDefault
is(TidyView::Options->_differentToDefault(), 1, 'nothing is defined to be different to the default');
is(TidyView::Options->_differentToDefault(name => undef), 1, 'nothing is defined to be different to the default');
is(TidyView::Options->_differentToDefault(name => undef), 1, 'nothing is defined to be different to the default');
is(TidyView::Options->_differentToDefault(name => 'UNKNOWN'), 1, 'invalid entry has no default, hence is different');
is(TidyView::Options->_differentToDefault(name => 'perl-syntax-check-flags'), 1, 'undefined current value means is diff to default');
is(TidyView::Options->_differentToDefault(name => 'perl-syntax-check-flags',
currentValue => undef), 1, 'undefined current value means is diff to default');
is(TidyView::Options->_differentToDefault(name => 'perl-syntax-check-flags',
currentValue => 'different'), 1, 'current value diff to default');
is(TidyView::Options->_differentToDefault(name => 'perl-syntax-check-flags',
currentValue => '-c -T'), '', 'current value same as default');
# test assemble options
is(TidyView::Options->assembleOptions(), '', 'assemble before anything is set');
# test assemble unsupported options
TidyView::Options->storeUnsupportedOptions(rawOptions => {
'standard-output' => 1, # unsupported
'check-syntax' => 1, # supported
});
is(TidyView::Options->assembleUnsupportedOptions(), '--standard-output ', 'assemble unsupported options');
TidyView::Options->clearUnsupportedOptions();
is(TidyView::Options->assembleUnsupportedOptions(), '', 'assemble unsupported options');