define(['chai', 'tcf'], function tryCatchFinallyTests(chai, _try) {

	var expect = chai.expect;

	describe('catch', function () {

		it('should not call catch error handler if try block does not throw', function () {
			function doesNotThrow(){}

			function handleError() { throw 'expected this not to execute'; }

			_try(doesNotThrow).catch(handleError);
		});

		it('should not call catch error handler if catch by name doesn\'t match thrown error', function () {
			function throwsString(){ throw 'Literal string'; }

			function handleError() { throw 'expected this not to execute'; }

			_try(throwsString).catch('Strin', handleError);
		});

		it('should not call catch error handler if catch by constructor doesn\'t match thrown error', function () {
			function throwsString(){ throw []; }

			function handleError() { throw 'expected this not to execute'; }

			_try(throwsString).catch(String, handleError);
		});

		it('should not call catch error handler if catch by value doesn\'t match thrown error', function () {
			function throwsString(){ throw 12345; }

			function handleError() { throw 'expected this not to execute'; }

			_try(throwsString).catch(54321, handleError);
		});

	});

});
@@ -126,24 +126,261 @@
 ion () %7B%0D%0A%0D%0A
+%09%09function assert_catch_specific_fail(toThrow, toCatch) %7B%0D%0A%09%09%09function throwsString()%7B throw toThrow; %7D%0D%0A%0D%0A%09%09%09function handleError() %7B throw 'expected this not to execute'; %7D%0D%0A%0D%0A%09%09%09_try(throwsString).catch(toCatch, handleError);%0D%0A%09%09%7D%0D%0A%0D%0A
 %09%09it('should
@@ -720,747 +720,383 @@
 %0A%09%09%09
-function throwsString()%7B throw 'Literal string'; %7D%0D%0A%0D%0A%09%09%09function handleError() %7B throw 'expected this not to execute'; %7D%0D%0A%0D%0A%09%09%09_try(throwsString).catch('Strin', handleError);%0D%0A%09%09%7D);%0D%0A%0D%0A%09%09it('should not call catch error handler if catch by constructor doesn%5C't match thrown error', function () %7B%0D%0A%09%09%09function throwsString()%7B throw %5B%5D; %7D%0D%0A%0D%0A%09%09%09function handleError() %7B throw 'expected this not to execute'; %7D%0D%0A%0D%0A%09%09%09_try(throwsString).catch(String, handleError);%0D%0A%09%09%7D);%0D%0A%0D%0A%09%09it('should not call catch error handler if catch by value doesn%5C't match thrown error', function () %7B%0D%0A%09%09%09function throwsString()%7B throw 12345; %7D%0D%0A%0D%0A%09%09%09function handleError() %7B throw 'expected this not to execute'; %7D%0D%0A%0D%0A%09%09%09_try(throwsString).catch(54321, handleError
+assert_catch_specific_fail('Literal string', 'Strin');%0D%0A%09%09%7D);%0D%0A%0D%0A%09%09it('should not call catch error handler if catch by constructor doesn%5C't match thrown error', function () %7B%0D%0A%09%09%09assert_catch_specific_fail(%5B%5D, String);%0D%0A%09%09%7D);%0D%0A%0D%0A%09%09it('should not call catch error handler if catch by value doesn%5C't match thrown error', function () %7B%0D%0A%09%09%09assert_catch_specific_fail(12345, 1234
 );%0D%0A

Refactor tests