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

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

require 'test/unit'
require 'rex/socket/parameters'

class Rex::Socket::Parameters::UnitTest < Test::Unit::TestCase

	def test_parameters
		h = { 
				'PeerHost'  => 'phost',
				'PeerPort'  => 12,
				'LocalHost' => 'lhost',
				'LocalPort' => 47,
				'Bare'      => true,
				'Server'    => true,
				'Comm'      => 'nothing',
				'Proto'     => 'tcp',
				'SSL'       => true
		    }

		p = Rex::Socket::Parameters.from_hash(h)

		assert_equal('phost', p.peerhost, "peerhost")
		assert_equal('phost', p.peeraddr, "peeraddr")
		assert_equal(12, p.peerport, "peerport")
		assert_equal('lhost', p.localhost, "localhost")
		assert_equal('lhost', p.localaddr, "localaddr")
		assert_equal(47, p.localport, "localport")
		assert_equal(true, p.bare?, "bare")
		assert_equal(true, p.server?, "server")
		assert_equal(false, p.client?, "client")
		assert_equal('nothing', p.comm, "comm")
		assert_equal(true, p.tcp?, "proto tcp")
		assert_equal(false, p.udp?, "proto udp")
		assert_equal(true, p.ssl, "ssl")

		p = Rex::Socket::Parameters.from_hash({})

		assert_equal(nil, p.peerhost, "null peerhost")
		assert_equal('0.0.0.0', p.localhost, "default localhost")
		assert_equal(0, p.peerport, "0 peerport")
		assert_equal(0, p.localport, "0 localport")
		assert_equal(false, p.bare, "default false bare")
		assert_equal('tcp', p.proto, "default tcp proto")
		assert_equal(false, p.server, "default false server")
		assert_equal(false, p.ssl, "default false ssl")
	end

end
