File: test/test.php

Recommend this page to a friend!
  Classes of Manuel Lemos  >  PHP Markdown Parser  >  test/test.php  >  Download  
File: test/test.php
Role: Unit test script
Content type: text/plain
Description: Main test script
Class: PHP Markdown Parser
Parse Markdown documents and generate HTML tags
Author: By
Last change: Removed debug code.
Added support to test the own and original test sets separately.
Date: 5 years ago
Size: 11,169 bytes
 

Contents

Class file image Download
<?php

/*
 * test.php
 *
 * @(#) $Id: test.php,v 1.13 2015/06/27 20:38:48 mlemos Exp $
 *
 */

	$__test_sets = array(
		'own'=>array(
			'images',
			'sample',
			'headers',
			'lists',
			'links',
			'strong',
			'emphasis',
			'code',
			'image_links'
		),
		'original'=>array(
			'Amps and angle encoding',
			'Auto links',
			'Backslash escapes',
			'Blockquotes with code blocks',
			'Hard-wrapped paragraphs with list-like lines',
			'Horizontal rules',
			'Inline HTML (Advanced)',
			'Inline HTML comments',
			'Inline HTML (Simple)',
			'Links, inline style',
			'Links, reference style',
			'Literal quotes in titles',
			'Markdown Documentation - Basics',
			'Markdown Documentation - Syntax',
			'Nested blockquotes',
			'Ordered and unordered lists',
			'Strong and em together',
			'Tabs',
			'Tidyness',
		)
	);
	$__tests=array(
		'images'=>array(
			'script'=>'../test_markdown_parser.php',
			'generatedfile'=>'generated/images.txt',
			'expectedfile'=>'expect/images.txt',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/images.md'
				)
			)
		),
		'sample'=>array(
			'script'=>'../test_markdown_parser.php',
			'generatedfile'=>'generated/sample.txt',
			'expectedfile'=>'expect/sample.txt',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/sample.md'
				)
			)
		),
		'headers'=>array(
			'script'=>'../test_markdown_parser.php',
			'generatedfile'=>'generated/headers.txt',
			'expectedfile'=>'expect/headers.txt',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/headers.md'
				)
			)
		),
		'lists'=>array(
			'script'=>'../test_markdown_parser.php',
			'generatedfile'=>'generated/lists.txt',
			'expectedfile'=>'expect/lists.txt',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/lists.md'
				)
			)
		),
		'links'=>array(
			'script'=>'../test_markdown_parser.php',
			'generatedfile'=>'generated/links.txt',
			'expectedfile'=>'expect/links.txt',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/links.md'
				)
			)
		),
		'strong'=>array(
			'script'=>'../test_markdown_parser.php',
			'generatedfile'=>'generated/strong.txt',
			'expectedfile'=>'expect/strong.txt',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/strong.md'
				)
			)
		),
		'emphasis'=>array(
			'script'=>'../test_markdown_parser.php',
			'generatedfile'=>'generated/emphasis.txt',
			'expectedfile'=>'expect/emphasis.txt',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/emphasis.md'
				)
			)
		),
		'code'=>array(
			'script'=>'../test_markdown_parser.php',
			'generatedfile'=>'generated/code.txt',
			'expectedfile'=>'expect/code.txt',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/code.md'
				)
			)
		),
		'image_links'=>array(
			'script'=>'../test_markdown_parser.php',
			'generatedfile'=>'generated/image_links.txt',
			'expectedfile'=>'expect/image_links.txt',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/image_links.md'
				)
			)
		),
		'Amps and angle encoding'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Amps-and-angle-encoding.html',
			'expectedfile'=>'expect/Amps-and-angle-encoding.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Amps-and-angle-encoding.text'
				)
			)
		),
		'Auto links'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Auto-links.html',
			'expectedfile'=>'expect/Auto-links.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Auto-links.text'
				)
			)
		),
		'Backslash escapes'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Backslash-escapes.html',
			'expectedfile'=>'expect/Backslash-escapes.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Backslash-escapes.text'
				)
			)
		),
		'Blockquotes with code blocks'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Blockquotes-with-code-blocks.html',
			'expectedfile'=>'expect/Blockquotes-with-code-blocks.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Blockquotes-with-code-blocks.text'
				)
			)
		),
		'Hard-wrapped paragraphs with list-like lines'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Hard-wrapped-paragraphs-with-list-like-lines.html',
			'expectedfile'=>'expect/Hard-wrapped-paragraphs-with-list-like-lines.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Hard-wrapped-paragraphs-with-list-like-lines.text'
				)
			)
		),
		'Horizontal rules'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Horizontal-rules.html',
			'expectedfile'=>'expect/Horizontal-rules.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Horizontal-rules.text'
				)
			)
		),
		'Inline HTML (Advanced)'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Inline-HTML-Advanced.html',
			'expectedfile'=>'expect/Inline-HTML-Advanced.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Inline-HTML-Advanced.text'
				)
			)
		),
		'Inline HTML comments'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Inline-HTML-comments.html',
			'expectedfile'=>'expect/Inline-HTML-comments.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Inline-HTML-comments.text'
				)
			)
		),
		'Inline HTML (Simple)'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Inline-HTML-Simple.html',
			'expectedfile'=>'expect/Inline-HTML-Simple.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Inline-HTML-Simple.text'
				)
			)
		),
		'Links, inline style'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Links-inline-style.html',
			'expectedfile'=>'expect/Links-inline-style.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Links-inline-style.text'
				)
			)
		),
		'Links, reference style'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Links-reference-style.html',
			'expectedfile'=>'expect/Links-reference-style.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Links-reference-style.text'
				)
			)
		),
		'Literal quotes in titles'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Literal-quotes-in-titles.html',
			'expectedfile'=>'expect/Literal-quotes-in-titles.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Literal-quotes-in-titles.text'
				)
			)
		),
		'Markdown Documentation - Basics'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Markdown-Documentation-Basics.html',
			'expectedfile'=>'expect/Markdown-Documentation-Basics.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Markdown-Documentation-Basics.text'
				)
			)
		),
		'Markdown Documentation - Syntax'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Markdown-Documentation-Syntax.html',
			'expectedfile'=>'expect/Markdown-Documentation-Syntax.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Markdown-Documentation-Syntax.text'
				)
			)
		),
		'Nested blockquotes'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Nested-blockquotes.html',
			'expectedfile'=>'expect/Nested-blockquotes.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Nested-blockquotes.text'
				)
			)
		),
		'Ordered and unordered lists'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Ordered-and-unordered-lists.html',
			'expectedfile'=>'expect/Ordered-and-unordered-lists.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Ordered-and-unordered-lists.text'
				)
			)
		),
		'Strong and em together'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Strong-and-em-together.html',
			'expectedfile'=>'expect/Strong-and-em-together.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Strong-and-em-together.text'
				)
			)
		),
		'Tabs'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Tabs.html',
			'expectedfile'=>'expect/Tabs.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Tabs.text'
				)
			)
		),
		'Tidyness'=>array(
			'script'=>'../markdown_to_html.php',
			'generatedfile'=>'generated/Tidyness.html',
			'expectedfile'=>'expect/Tidyness.html',
			'options'=>array(
				'parameters'=>array(
					'File'=>'sample/Tidyness.text'
				)
			)
		),
	);

	define('__TEST',1);
	if(IsSet($_SERVER['argv'])
	&& GetType($_SERVER['argv']) == 'array'
	&& Count($_SERVER['argv']) > 1)
	{
		$__few = array();
		for($__a = 1; $__a < count($_SERVER['argv']); ++$__a)
		{
			$__name = $_SERVER['argv'][$__a];
			if(!IsSet($__tests[$__name]))
			{
				if(!IsSet($__test_sets[$__name]))
					die($__name." is not a valid test name.\n");
				foreach($__test_sets[$__name] as $__set_name)
				{
					if(!IsSet($__tests[$__set_name]))
						die($__set_name." is not a valid test name from the set ".$__name.".\n");
					$__few[$__set_name] = $__tests[$__set_name];
				}
			}
			else
				$__few[$__name] = $__tests[$__name];
		}
		$__tests = $__few;
	}
	for($__different=$__test=$__checked=0, Reset($__tests); $__test<count($__tests); Next($__tests), $__test++)
	{
		$__name=Key($__tests);
		$__script=$__tests[$__name]['script'];
		if(!file_exists($__script))
		{
			echo "\n".'Test script '.$__script.' does not exist.'."\n".str_repeat('_',80)."\n";
			continue;
		}
		echo 'Test "'.$__name.'": ... ';
		flush();
		if(IsSet($__tests[$__name]['options']))
			$__test_options=$__tests[$__name]['options'];
		else
			$__test_options=array();
		ob_start();
		require($__script);
		$output=ob_get_contents();
		ob_end_clean();
		$generated=$__tests[$__name]['generatedfile'];
		if(!($file = fopen($generated, 'wb')))
			die('Could not create the generated output file '.$generated."\n");
		if(!fputs($file, $output)
		|| !fclose($file))
			die('Could not save the generated output to the file '.$generated."\n");
		$expected=$__tests[$__name]['expectedfile'];
		if(!file_exists($expected))
		{
			echo "\n".'Expected output file '.$expected.' does not exist.'."\n".str_repeat('_',80)."\n";
			continue;
		}
		$diff=array();
		exec('diff "'.$expected.'" "'.$generated.'"', $diff);
		if(count($diff))
		{
			echo "FAILED\n".'Output of script '.$__script.' is different from the expected file '.$expected." .\n".str_repeat('_',80)."\n";
			for($line=0; $line<count($diff); $line++)
				echo $diff[$line]."\n";
			echo str_repeat('_',80)."\n";
			flush();
			$__different++;
		}
		else
			echo "OK\n";
		$__checked++;
	}
	echo $__checked.' test '.($__checked==1 ? 'was' : 'were').' performed, '.($__checked!=$__test ? (($__test-$__checked==1) ? ' 1 test was skipped, ' : ($__test-$__checked).' tests were skipped, ') : '').($__different ? $__different.' failed' : 'none has failed').'.'."\n";

?>

For more information send a message to info at phpclasses dot org.