addValues_should_throw_exception_if_provide_null_parameter: function(test) {
		var dic = new System.Web.Routing.RouteValueDictionary({controller: 'ControllerName'});
		assert.throws(
			function() {
				dic.addValues(null);
			}, 
			System.ArgumentNullException,
			'Should throw ArgumentNullException when providing null parameter'
		);
		
		assert.throws(
			function() {
				dic.addValues(System.Web.Routing.RouteValueDictionary);
			}, 
			System.ArgumentNullException,
			'Should throw ArgumentNullException when providing null parameter'
		);
		test.done();
	},
	should_throw_exception_if_create_HttpMethodConstraint_with_not_an_array_param: function(test) {
		assert.throws(
			function() {
				var constraint = new System.Web.Routing.HttpMethodConstraint({});
			}, 
			System.ArgumentNullException,
			'Should throw ArgumentNullException when providing null parameters'
		);
		test.done();
	},
	match_when_generate_url_should_throw_exception_if_param_value_is_not_string: function(test){
		var httpContext = new System.Web.HttpContext();		
		var route = new System.Web.Routing.Route();		
		var parameterName = 'paramName';
		var routeValueDictionary = new System.Web.Routing.RouteValueDictionary();
		routeValueDictionary.add(parameterName, {});
		var constraint = new System.Web.Routing.HttpMethodConstraint(['GET', 'PUT']);		
		assert.throws(
			function() {
				var result = constraint.match(httpContext, route, parameterName, routeValueDictionary, System.Web.Routing.RouteDirection.urlGeneration);
			}, 
			System.InvalidOperationException,
			'Should throw ArgumentNullException when providing a none string object as parameterValue'
		);		
		
		test.done();
	},
	match_should_throw_exception_if_provide_invalid_parameter: function(test) {
		var httpContext = new System.Web.HttpContext();
		var route = new System.Web.Routing.Route();
		var routeValueDictionary = new System.Web.Routing.RouteValueDictionary();
		var parameterName = 'paramName';
		var constraint = new System.Web.Routing.HttpMethodConstraint(['POST']);
		
		assert.throws(
			function() {
				constraint.match(null, route, parameterName, routeValueDictionary, System.Web.Routing.RouteDirection.incomingRequest);
			}, 
			System.ArgumentNullException,
			'Should throw ArgumentNullException when providing null httpContext'
		);
		assert.throws(
			function() {
				constraint.match({}, route, parameterName, routeValueDictionary, System.Web.Routing.RouteDirection.incomingRequest);
			}, 
			System.ArgumentNullException,
			'Should throw ArgumentNullException when providing null httpContext'
		);
		
		assert.throws(
			function() {
				constraint.match(httpContext, null, parameterName, routeValueDictionary, System.Web.Routing.RouteDirection.incomingRequest);
			}, 
			System.ArgumentNullException,
			'Should throw ArgumentNullException when providing null route'
		);
		assert.throws(
			function() {
				constraint.match(httpContext, {}, parameterName, routeValueDictionary, System.Web.Routing.RouteDirection.incomingRequest);
			}, 
			System.ArgumentNullException,
			'Should throw ArgumentNullException when providing null route'
		);
		
		assert.throws(
			function() {
				constraint.match(httpContext, route, null, routeValueDictionary, System.Web.Routing.RouteDirection.incomingRequest);
			}, 
			System.ArgumentNullException,
			'Should throw ArgumentNullException when providing null route'
		);
		assert.throws(
			function() {
				constraint.match(httpContext, route, {}, routeValueDictionary, System.Web.Routing.RouteDirection.incomingRequest);
			}, 
			System.ArgumentNullException,
			'Should throw ArgumentNullException when providing null route'
		);
		
		assert.throws(
			function() {
				constraint.match(httpContext, route, parameterName, null, System.Web.Routing.RouteDirection.incomingRequest);
			}, 
			System.ArgumentNullException,
			'Should throw ArgumentNullException when providing null route'
		);
		assert.throws(
			function() {
				constraint.match(httpContext, route, parameterName, {}, System.Web.Routing.RouteDirection.incomingRequest);
			}, 
			System.ArgumentNullException,
			'Should throw ArgumentNullException when providing null route'
		);		
		test.done();
	},