From 8256ca4376417f6082a806e01531f7475090c97a Mon Sep 17 00:00:00 2001
From: "Edward Z. Yang" <edwardzyang@thewritingpot.com>
Date: Sun, 22 Oct 2006 03:38:32 +0000
Subject: [PATCH] [1.2.0] Migrate AttrTransform tests to use the Harness
 supertype.

git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@496 48356398-32a2-884e-a903-53898d9a118a
---
 .../HTMLPurifier/AttrTransform/BdoDirTest.php | 31 ++++------
 .../AttrTransform/ImgRequiredTest.php         | 42 +++++++------
 tests/HTMLPurifier/AttrTransform/LangTest.php | 39 ++++++------
 .../AttrTransform/TextAlignTest.php           | 60 +++++++++++--------
 tests/HTMLPurifier/AttrTransformHarness.php   | 19 ++----
 5 files changed, 99 insertions(+), 92 deletions(-)

diff --git a/tests/HTMLPurifier/AttrTransform/BdoDirTest.php b/tests/HTMLPurifier/AttrTransform/BdoDirTest.php
index 0762359d..4f880046 100644
--- a/tests/HTMLPurifier/AttrTransform/BdoDirTest.php
+++ b/tests/HTMLPurifier/AttrTransform/BdoDirTest.php
@@ -5,29 +5,24 @@ require_once 'HTMLPurifier/AttrTransform/BdoDir.php';
 class HTMLPurifier_AttrTransform_BdoDirTest extends HTMLPurifier_AttrTransformHarness
 {
     
+    function setUp() {
+        parent::setUp();
+        $this->obj = new HTMLPurifier_AttrTransform_BdoDir();
+    }
+    
     function test() {
         
-        $this->transform = new HTMLPurifier_AttrTransform_BdoDir();
-        
-        $inputs = array();
-        $expect = array();
-        $config = array();
-        
-        // add dir
-        $inputs[0] = array();
-        $expect[0] = array('dir' => 'ltr');
+        $this->assertResult( array(), array('dir' => 'ltr') );
         
         // leave existing dir alone
-        $inputs[1] = array('dir' => 'rtl');
-        $expect[1] = array('dir' => 'rtl');
+        $this->assertResult( array('dir' => 'rtl') );
         
-        $config_rtl = HTMLPurifier_Config::createDefault();
-        $config_rtl->set('Attr', 'DefaultTextDir', 'rtl');
-        $inputs[2] = array();
-        $expect[2] = array('dir' => 'rtl');
-        $config[2] = $config_rtl;
-        
-        $this->assertTransform($inputs, $expect, $config);
+        // use a different default
+        $this->assertResult(
+            array(),
+            array('dir' => 'rtl'),
+            array('Attr.DefaultTextDir' => 'rtl')
+        );
         
     }
     
diff --git a/tests/HTMLPurifier/AttrTransform/ImgRequiredTest.php b/tests/HTMLPurifier/AttrTransform/ImgRequiredTest.php
index c410b29f..f8b89f44 100644
--- a/tests/HTMLPurifier/AttrTransform/ImgRequiredTest.php
+++ b/tests/HTMLPurifier/AttrTransform/ImgRequiredTest.php
@@ -5,28 +5,36 @@ require_once 'HTMLPurifier/AttrTransform/ImgRequired.php';
 class HTMLPurifier_AttrTransform_ImgRequiredTest extends HTMLPurifier_AttrTransformHarness
 {
     
+    function setUp() {
+        parent::setUp();
+        $this->obj = new HTMLPurifier_AttrTransform_ImgRequired();
+    }
+    
     function test() {
         
-        $this->transform = new HTMLPurifier_AttrTransform_ImgRequired();
+        $this->assertResult(
+            array(),
+            array('src' => '', 'alt' => 'Invalid image')
+        );
         
-        $inputs = $expect = $config = array();
+        $this->assertResult(
+            array(),
+            array('src' => 'blank.png', 'alt' => 'Pawned!'),
+            array(
+                'Attr.DefaultInvalidImage' => 'blank.png',
+                'Attr.DefaultInvalidImageAlt' => 'Pawned!'
+            )
+        );
         
-        $inputs[0] = array();
-        $expect[0] = array('src' => '', 'alt' => 'Invalid image');
+        $this->assertResult(
+            array('src' => '/path/to/foobar.png'),
+            array('src' => '/path/to/foobar.png', 'alt' => 'foobar.png')
+        );
         
-        $inputs[1] = array();
-        $expect[1] = array('src' => 'blank.png', 'alt' => 'Pawned!');
-        $config[1] = HTMLPurifier_Config::createDefault();
-        $config[1]->set('Attr', 'DefaultInvalidImage', 'blank.png');
-        $config[1]->set('Attr', 'DefaultInvalidImageAlt', 'Pawned!');
-        
-        $inputs[2] = array('src' => '/path/to/foobar.png');
-        $expect[2] = array('src' => '/path/to/foobar.png', 'alt' => 'foobar.png');
-        
-        $inputs[3] = array('alt' => 'intrigue');
-        $expect[3] = array('src' => '', 'alt' => 'intrigue');
-        
-        $this->assertTransform($inputs, $expect, $config);
+        $this->assertResult(
+            array('alt' => 'intrigue'),
+            array('src' => '', 'alt' => 'intrigue')
+        );
         
     }
     
diff --git a/tests/HTMLPurifier/AttrTransform/LangTest.php b/tests/HTMLPurifier/AttrTransform/LangTest.php
index 9609e137..b4800990 100644
--- a/tests/HTMLPurifier/AttrTransform/LangTest.php
+++ b/tests/HTMLPurifier/AttrTransform/LangTest.php
@@ -8,34 +8,39 @@ class HTMLPurifier_AttrTransform_LangTest
     extends HTMLPurifier_AttrTransformHarness
 {
     
+    function setUp() {
+        parent::setUp();
+        $this->obj = new HTMLPurifier_AttrTransform_Lang();
+    }
+    
     function test() {
         
-        $this->transform = new HTMLPurifier_AttrTransform_Lang();
-        
-        $inputs = array();
-        $expect = array();
-        
         // leave non-lang'ed elements alone
-        $inputs[0] = array();
-        $expect[0] = true;
+        $this->assertResult(array(), true);
         
         // copy lang to xml:lang
-        $inputs[1] = array('lang' => 'en');
-        $expect[1] = array('lang' => 'en', 'xml:lang' => 'en');
+        $this->assertResult(
+            array('lang' => 'en'),
+            array('lang' => 'en', 'xml:lang' => 'en')
+        );
         
         // preserve attributes
-        $inputs[2] = array('src' => 'vert.png', 'lang' => 'fr');
-        $expect[2] = array('src' => 'vert.png', 'lang' => 'fr', 'xml:lang' => 'fr');
+        $this->assertResult(
+            array('src' => 'vert.png', 'lang' => 'fr'),
+            array('src' => 'vert.png', 'lang' => 'fr', 'xml:lang' => 'fr')
+        );
         
         // copy xml:lang to lang
-        $inputs[3] = array('xml:lang' => 'en');
-        $expect[3] = array('lang' => 'en', 'xml:lang' => 'en');
+        $this->assertResult(
+            array('xml:lang' => 'en'),
+            array('lang' => 'en', 'xml:lang' => 'en')
+        );
         
         // both set, override lang with xml:lang
-        $inputs[4] = array('lang' => 'fr', 'xml:lang' => 'de');
-        $expect[4] = array('lang' => 'de', 'xml:lang' => 'de');
-        
-        $this->assertTransform($inputs, $expect);
+        $this->assertResult(
+            array('lang' => 'fr', 'xml:lang' => 'de'),
+            array('lang' => 'de', 'xml:lang' => 'de')
+        );
         
     }
     
diff --git a/tests/HTMLPurifier/AttrTransform/TextAlignTest.php b/tests/HTMLPurifier/AttrTransform/TextAlignTest.php
index c750b8b3..858db75c 100644
--- a/tests/HTMLPurifier/AttrTransform/TextAlignTest.php
+++ b/tests/HTMLPurifier/AttrTransform/TextAlignTest.php
@@ -5,48 +5,58 @@ require_once 'HTMLPurifier/AttrTransform/TextAlign.php';
 class HTMLPurifier_AttrTransform_TextAlignTest extends HTMLPurifier_AttrTransformHarness
 {
     
+    function setUp() {
+        parent::setUp();
+        $this->obj = new HTMLPurifier_AttrTransform_TextAlign();
+    }
+    
     function test() {
         
-        $this->transform = new HTMLPurifier_AttrTransform_TextAlign();
-        
-        $inputs = array();
-        $expect = array();
-        
         // leave empty arrays alone
-        $inputs[0] = array();
-        $expect[0] = true;
+        $this->assertResult( array() );
         
         // leave arrays without interesting stuff alone
-        $inputs[1] = array('style' => 'font-weight:bold;');
-        $expect[1] = true;
+        $this->assertResult( array('style' => 'font-weight:bold;') );
         
         // test each of the conversions
         
-        $inputs[2] = array('align' => 'left');
-        $expect[2] = array('style' => 'text-align:left;');
+        $this->assertResult(
+            array('align' => 'left'),
+            array('style' => 'text-align:left;')
+        );
         
-        $inputs[3] = array('align' => 'right');
-        $expect[3] = array('style' => 'text-align:right;');
+        $this->assertResult(
+            array('align' => 'right'),
+            array('style' => 'text-align:right;')
+        );
         
-        $inputs[4] = array('align' => 'center');
-        $expect[4] = array('style' => 'text-align:center;');
+        $this->assertResult(
+            array('align' => 'center'),
+            array('style' => 'text-align:center;')
+        );
         
-        $inputs[5] = array('align' => 'justify');
-        $expect[5] = array('style' => 'text-align:justify;');
+        $this->assertResult(
+            array('align' => 'justify'),
+            array('style' => 'text-align:justify;')
+        );
         
         // drop garbage value
-        $inputs[6] = array('align' => 'invalid');
-        $expect[6] = array();
+        $this->assertResult(
+            array('align' => 'invalid'),
+            array()
+        );
         
         // test CSS munging
-        $inputs[7] = array('align' => 'left', 'style' => 'font-weight:bold;');
-        $expect[7] = array('style' => 'text-align:left;font-weight:bold;');
+        $this->assertResult(
+            array('align' => 'left', 'style' => 'font-weight:bold;'),
+            array('style' => 'text-align:left;font-weight:bold;')
+        );
         
         // test case insensitivity
-        $inputs[8] = array('align' => 'CENTER');
-        $expect[8] = array('style' => 'text-align:center;');
-        
-        $this->assertTransform($inputs, $expect);
+        $this->assertResult(
+            array('align' => 'CENTER'),
+            array('style' => 'text-align:center;')
+        );
         
     }
     
diff --git a/tests/HTMLPurifier/AttrTransformHarness.php b/tests/HTMLPurifier/AttrTransformHarness.php
index 689799c4..aff1d6b7 100644
--- a/tests/HTMLPurifier/AttrTransformHarness.php
+++ b/tests/HTMLPurifier/AttrTransformHarness.php
@@ -1,23 +1,12 @@
 <?php
 
-// todo: change testing harness from accepting arrays to 
-// have one call per test
+require_once 'HTMLPurifier/Harness.php';
 
-class HTMLPurifier_AttrTransformHarness extends UnitTestCase
+class HTMLPurifier_AttrTransformHarness extends HTMLPurifier_Harness
 {
     
-    var $transform;
-    
-    function assertTransform($inputs, $expect, $config = array(), $context = array()) {
-        $default_config = HTMLPurifier_Config::createDefault();
-        $default_context = new HTMLPurifier_Context();
-        foreach ($inputs as $i => $input) {
-            if (!isset($config[$i])) $config[$i] = $default_config;
-            if (!isset($context[$i])) $context[$i] = $default_context;
-            $result = $this->transform->transform($input, $config[$i], $context[$i]);
-            if ($expect[$i] === true) $expect[$i] = $input;
-            $this->assertEqual($expect[$i], $result, "Test $i: %s");
-        }
+    function setUp() {
+        $this->func = 'transform';
     }
     
 }