#!/usr/bin/perl -w
#
# Test various miscellaneous configurationh functions
#
BEGIN {
	$| = 1;
	push @INC, 'lib';
}

use strict;
use warnings;
use lib 'lib';

use Test::More tests => 17;
use Test::NoWarnings;
use Test::Exception;
#my $tests;
#
#plan tests => $tests + 1;
#use Data::Dumper qw(Dumper);
use Wx;
use Kephra::Config;
#
#
#####################################################################
# Kephra::Config::color
#
sub is_color {
	my ($it, $r, $g, $b, $name) = @_;
	isa_ok( $it, 'Wx::Colour' );
	is( $it->Red,   $r, "$name: ->Red ok"   );
	is( $it->Green, $g, "$name: ->Green ok" );
	is( $it->Blue,  $b, "$name: ->Blue ok"  );
}
#
SCOPE: {
	my $black1 = Kephra::Config::color('000000');
	my $white1 = Kephra::Config::color('FFFFFF');
	my $black2 = Kephra::Config::color('0,0,0');
	my $white2 = Kephra::Config::color('255,255,255');
	is_color( $black1, 0, 0, 0, 'hex black' );
	is_color( $black2, 0, 0, 0, 'dec black' );
	is_color( $white1, 255, 255, 255, 'hex white' );
	is_color( $white2, 255, 255, 255, 'dec white' );
#
	# Check errors
	#eval {
		#Kephra::Config::color();
	#};
	#like( $@, qr/Color string is not defined/, 'Caught undef error' );
	#eval {
		#Kephra::Config::color('black');
	#};
	#like( $@, qr/Unknown color string/, 'Caught bad-string error' );
    #BEGIN { $tests += 4*4 + 2; }
}

#####################################################################
# Kephra::Config::icon_bitmap
#
sub is_icon {
	my $it = shift;
	isa_ok( $it, 'Wx::Bitmap' );
}
#
#SCOPE: {
	# Set the default icon path for testing purposes
	#local $Kephra::config{app}->{iconset_path} = 'share/config/interface/icon/set/jenne';
#
# edit_delete find_previous find_next goto_last_edit find_start
#
	#my @known_good = qw{
		#};
	#foreach my $name ( @known_good ) {
		# Create using the raw name
		#my $icon1 = Kephra::Config::icon_bitmap( $name );
		#is_icon( $icon1 );
#
		# Create using the .xpm name
		#my $icon2 = Kephra::Config::icon_bitmap( $name . '.xpm' );
		#is_icon( $icon2 );
	#}
#}
#
#####################################################################
# Kephra::Config::File
#
#{
    #require_ok('Kephra::Config::File');
    #my $ref = Kephra::Config::File::load_node('share/config/interface/commands.conf', 'commandlist');
    #is( ref($ref), 'HASH', 'commandlist is HASH' );
    #BEGIN { $tests += 2; }
#}
#
#TODO: {
    #local $TODO = 'throw exception if file type is incorrect';
    #foreach my $file (qw(mainmenuyml ymainmenuyml)) {
        #throws_ok { Kephra::Config::File::_get_type($file)  } 'Kephra::Exception', "invalid extension exception $file" ;
    #}
    #BEGIN { $tests += 2; }
#}
#{
    #is( Kephra::Config::File::_get_type('/home/foo/.kephra/config/interface/mainmenu.yml'), 'yaml', 'type is yaml' );
    #is( Kephra::Config::File::_get_type('share/config/interface/mainmenu.yml'), 'yaml', 'type is yaml' );
    #BEGIN { $tests += 2; }
#}
#
#{
    #my $file_name = 'share/config/interface/mainmenu.yml';
    #is( Kephra::Config::File::_get_type($file_name), 'yaml', 'type is yaml' );
    #my $ref = Kephra::Config::File::load_node($file_name, 'full_menubar');
    #is( ref($ref), 'ARRAY', 'full_menubar is ARRAY' );
    #$Kephra::temp{path}{config} = 'share/config';
    #my $menubar_def = Kephra::Config::File::load_from_node_data ( {
          #'responsive' => 1,
          #'file' => 'interface/mainmenu.yml',
          #'node' => 'full_menubar'
        #} );
    #is( ref($menubar_def), 'ARRAY', 'full_menubar is ARRAY' );
    #BEGIN { $tests += 3; }
#}

exit(0);
