#!/usr/bin/env ruby
# -*- coding: binary -*-

$:.unshift(File.join(File.dirname(__FILE__), '..', '..'))

require 'test/unit'
require 'msf/core/exceptions'

module Msf
module Exceptions

class UnitTest < Test::Unit::TestCase

	def test_exceptions
		Msf.constants.each { |const|
			mod = Msf.const_get(const)

			if ((mod.kind_of?(Class) == false) ||
			    (mod.ancestors.include?(Msf::Exception) == false))
				next
			end

			begin
				raise mod.new
			rescue mod => detail
				assert_respond_to(detail, 'to_s', "#{mod} does not implement to_s")
				assert_not_nil(detail.to_s, "invalid to_s")
			end
		}

		begin
			raise OptionValidateError.new([ 'test', 'best' ])
		rescue OptionValidateError => detail
			assert_match(/^The following/, detail.to_s)
		end
	end

end

end
end
