#!/usr/bin/ruby

require 'mpw/config'
require 'test/unit'
require 'locale'
require 'i18n'

class TestConfig < Test::Unit::TestCase
	def setup
		lang = Locale::Tag.parse(ENV['LANG']).to_simple.to_s[0..1]
		
		if defined?(I18n.enforce_available_locales)
			I18n.enforce_available_locales = true
		end
		
		I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
		I18n.load_path      = Dir["#{File.expand_path('../../i18n', __FILE__)}/*.yml"]
		I18n.default_locale = :en
		I18n.locale         = lang.to_sym
	end

	def test_00_config
		data = { gpg_key: 'test@example.com',
		         lang: 'en',
		         wallet_dir: '/tmp/test',
		         gpg_exe: '',
		       }

		@config = MPW::Config.new
		@config.setup(data)
		@config.load_config

		data.each do |k,v|
			assert_equal(v, @config.send(k))
		end

		@config.setup_gpg_key('password', 'test@example.com', 2048)
		assert(@config.check_gpg_key?)
	end

	def test_01_password
		data = { pwd_alpha: false,
		         pwd_numeric: false,
		         pwd_special: true,
		         pwd_length: 32,
		       }

		@config = MPW::Config.new
		@config.load_config

		assert_equal(@config.password[:length], 16)
		assert(@config.password[:alpha])
		assert(@config.password[:numeric])
		assert(!@config.password[:special])

		@config.setup(data)
		@config.load_config

		assert_equal(@config.password[:length], data[:pwd_length])
		assert(!@config.password[:alpha])
		assert(!@config.password[:numeric])
		assert(@config.password[:special])
	end
end