<script src="../JavascriptTestRunner.js"></script>
<script src="../FormatDate.js"></script>
<script language="javascript">   

var runner = new TestRunner();

function makeDate(hours, minutes, seconds) 
{	
	// Hours should be in military time.
	return new Date(2011, 3, 29, hours, minutes, seconds, 0);  
} 

runner.addTestCase( 
{	
	name: 	'Pre-noon times with double digit hours, minutes, and seconds should end in "am".',  
	
	given: 	'A Javascript date object.', 
	when: 	'Military time is 11:12:13', 
	
	test: 	function() 
			{
				var aDate = makeDate(11, 12, 13); 
				runner.assertStringsEqual('formatDate(aDate) should return "11:12:13am".', formatDate(aDate), '11:12:13am' );  
			} 
});   
   
runner.addTestCase(  
{	 
	name: 	'Noon and post-noon times with double digit hours, minutes, and seconds should end in "pm".',
	
	given: 	'A Javascript date object.',
	when: 	'Military time is 23:12:13',  
	
	test: 	function() 
			{
				var aDate = makeDate(11 + 12, 12, 13);
				runner.assertStringsEqual('formatDate(aDate) should return "11:12:13pm".', formatDate(aDate), '11:12:13pm' ); 
			}
});
 
runner.addTestCase(
{	
	name: 	'Post-noon hours should not be higher than 12.',
	
	given: 	'A Javascript date object.',
	when: 	'Military time is 13:12:13',  
	
	test: 	function() 
			{
				var aDate = makeDate(1 + 12, 12, 13);
				runner.assertStringsEqual('formatDate(aDate) should return "1:12:13pm".', formatDate(aDate), '1:12:13pm' ); 
			} 
});

runner.addTestCase(
{	
	name: 	'Times with single digit minutes or seconds should be formatted correctly with leading zeroes.',
	
	given: 	'A Javascript date object.',
	when: 	'Military time is 13:02:03',  
	
	test: 	function() 
			{
				var aDate = makeDate(1 + 12, 2, 3);
				runner.assertStringsEqual('formatDate(aDate) should return "1:02:03pm".', formatDate(aDate), '1:02:03pm' ); 
			} 
});

runner.addTestCase(
{	
	name: 	'Midnight should be formatted correctly.',
	
	given: 	'A Javascript date object.',
	when: 	'Military time is 0:00:00',  
	
	test: 	function() 
			{
				var aDate = makeDate(0, 0, 0);
				runner.assertStringsEqual('formatDate(aDate) should return "12:00:00am".', formatDate(aDate), '12:00:00am' ); 
			} 
});

runner.addTestCase(
{	
	name: 	'Noon should be formatted correctly.',
	
	given: 	'A Javascript date object.',
	when: 	'Military time is 12:00:00',  
	
	test: 	function() 
			{
				var aDate = makeDate(12, 0, 0);
				runner.assertStringsEqual('formatDate(aDate) should return "12:00:00pm".', formatDate(aDate), '12:00:00pm' ); 
			} 
});

</script>
