diff --git a/tests/PureHTMLDefinition.php b/tests/PureHTMLDefinition.php
index 39297798..b2048ce1 100644
--- a/tests/PureHTMLDefinition.php
+++ b/tests/PureHTMLDefinition.php
@@ -53,7 +53,65 @@ class Test_PureHTMLDefinition extends UnitTestCase
foreach ($inputs as $i => $input) {
$result = $this->def->removeForeignElements($input);
- $this->assertEqual($result, $expect[$i]);
+ $this->assertEqual($expect[$i], $result);
+ paintIf($result, $result != $expect[$i]);
+ }
+
+ }
+
+ function test_makeWellFormed() {
+
+ $inputs = array();
+ $expect = array();
+
+ $inputs[0] = array();
+ $expect[0] = $inputs[0];
+
+ $inputs[1] = array(
+ new MF_Text('This is ')
+ ,new MF_StartTag('b')
+ ,new MF_Text('bold')
+ ,new MF_EndTag('b')
+ ,new MF_Text(' text')
+ );
+ $expect[1] = $inputs[1];
+
+ $inputs[2] = array(
+ new MF_StartTag('b')
+ ,new MF_Text('Unclosed tag, gasp!')
+ );
+ $expect[2] = array(
+ new MF_StartTag('b')
+ ,new MF_Text('Unclosed tag, gasp!')
+ ,new MF_EndTag('b')
+ );
+
+ $inputs[3] = array(
+ new MF_StartTag('b')
+ ,new MF_StartTag('i')
+ ,new MF_Text('The b is closed, but the i is not')
+ ,new MF_EndTag('b')
+ );
+ $expect[3] = array(
+ new MF_StartTag('b')
+ ,new MF_StartTag('i')
+ ,new MF_Text('The b is closed, but the i is not')
+ ,new MF_EndTag('i')
+ ,new MF_EndTag('b')
+ );
+
+ $inputs[4] = array(
+ new MF_Text('Hey, recycle unused end tags!')
+ ,new MF_EndTag('b')
+ );
+ $expect[4] = array(
+ new MF_Text('Hey, recycle unused end tags!')
+ ,new MF_Text('')
+ );
+
+ foreach ($inputs as $i => $input) {
+ $result = $this->def->removeForeignElements($input);
+ $this->assertEqual($expect[$i], $result);
paintIf($result, $result != $expect[$i]);
}