Index: includes/tests/xmlrpc.test
===================================================================
RCS file: /cvs/drupal/drupal/includes/tests/xmlrpc.test,v
retrieving revision 1.1
diff -u -r1.1 xmlrpc.test
--- includes/tests/xmlrpc.test	26 Jun 2008 21:04:17 -0000	1.1
+++ includes/tests/xmlrpc.test	26 Jun 2008 23:05:03 -0000
@@ -1,126 +1,185 @@
 <?php
 // $Id: xmlrpc.test,v 1.1 2008/06/26 21:04:17 dries Exp $
 
-class XMLRPCValidator1Test extends DrupalWebTestCase {
-  /**
-   * Implementation of getInfo().
-   */
-  function getInfo() {
-    return array(
-      'name'  => t('XML-RPC validator'),
-      'description'  => t('See !validator-link. note: simpletest_xmlrpc.module must be enabled', array('!validator-link' => l('the xmlrpc validator1 specification', 'http://www.xmlrpc.com/validator1Docs'))),
-      'group' => t('XML-RPC')
-    );
-  }
-
-  function setUp() {
-    parent::setUp('simpletest_xmlrpc');
-  }
-
-  function test_run_all_tests() {
-    if (!module_exists('simpletest_xmlrpc')) {
-      return FALSE;
-    }
-    $xml_url = url(NULL, array('absolute' => TRUE)) . 'xmlrpc.php';
-    srand();
-    mt_srand();
-
-
-    $array_1 = array(array('curly' => mt_rand(-100,100)),
-                   array('curly' => mt_rand(-100,100)),
-                   array('larry' => mt_rand(-100,100)),
-                   array('larry' => mt_rand(-100,100)),
-                   array('moe' => mt_rand(-100,100)),
-                   array('moe' => mt_rand(-100,100)),
-                   array('larry' => mt_rand(-100,100)));
-    shuffle($array_1);
-    $l_res_1 = simpletest_xmlrpc_arrayOfStructsTest($array_1);
-    $r_res_1 = xmlrpc($xml_url, 'validator1.arrayOfStructsTest', $array_1);
-    $this->assertIdentical($l_res_1, $r_res_1, 'array of structs test: %s');
-
-
-    $string_2 = 't\'&>>zf"md>yr>xlcev<h<"k&j<og"w&&>">>uai"np&s>>q\'&b<>"&&&';
-    $l_res_2 = simpletest_xmlrpc_countTheEntities($string_2);
-    $r_res_2 = xmlrpc($xml_url, 'validator1.countTheEntities', $string_2);
-    $this->assertIdentical($l_res_2, $r_res_2, 'count the entities test: %s');
-
-
-    $struct_3 = array('moe' => mt_rand(-100,100), 'larry' => mt_rand(-100,100), 'curly' => mt_rand(-100,100), 'homer' => mt_rand(-100,100));
-    $l_res_3 = simpletest_xmlrpc_easyStructTest($struct_3);
-    $r_res_3 = xmlrpc($xml_url, 'validator1.easyStructTest', $struct_3);
-    $this->assertIdentical($l_res_3, $r_res_3, 'easy struct test: %s');
-
-
-    $struct_4 = array('sub1' => array('bar' => 13),
-                    'sub2' => 14,
-                    'sub3' => array('foo' => 1, 'baz' => 2),
-                    'sub4' => array('ss' => array('sss' => array('ssss' => 'sssss'))));
-    $l_res_4 = simpletest_xmlrpc_echoStructTest($struct_4);
-    $r_res_4 = xmlrpc($xml_url, 'validator1.echoStructTest', $struct_4);
-    $this->assertIdentical($l_res_4, $r_res_4, 'echo struct test: %s');
-
-    $int_5     = mt_rand(-100,100);
-    $bool_5    = (($int_5 % 2) == 0);
-    $string_5  = $this->randomName();
-    $double_5  = (double)(mt_rand(-1000,1000) / 100);
-    $time_5    = time();
-    $base64_5  = $this->randomName(100);
-    $l_res_5 = simpletest_xmlrpc_manyTypesTest($int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), $base64_5);
-    $l_res_5[5] = $l_res_5[5]->data; /* override warpping */
-    $r_res_5 = xmlrpc($xml_url, 'validator1.manyTypesTest', $int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), xmlrpc_base64($base64_5));
-    /* Contains objects, objects are not equal */
-    // See http://drupal.org/node/37766 why this currnetly fails
-    $this->assertEqual($l_res_5, $r_res_5, 'many types test: %s');
-
-
-    $size = mt_rand(100,200);
-    $array_6 = array();
-    for ($i = 0; $i < $size; $i++) {
-      $array_6[] = $this->randomName(mt_rand(8,12));
+// Make sure we are not running in simpletest call.
+if (!preg_match("/^simpletest\d+/", $GLOBALS['db_prefix'])) {
+  class XMLRPCValidator1Test extends DrupalWebTestCase {
+    /**
+     * Implementation of getInfo().
+     */
+    function getInfo() {
+      return array(
+        'name'  => t('XML-RPC validator'),
+        'description'  => t('See !validator-link.', array('!validator-link' => l('the xmlrpc validator1 specification', 'http://www.xmlrpc.com/validator1Docs'))),
+        'group' => t('XML-RPC'),
+        'test_modules' => array('xmlrpc_validator1_test')
+      );
     }
 
-    $l_res_6 = simpletest_xmlrpc_moderateSizeArrayCheck($array_6);
-    $r_res_6 = xmlrpc($xml_url, 'validator1.moderateSizeArrayCheck', $array_6);
-    $this->assertIdentical($l_res_6, $r_res_6, 'moderate size array check: %s');
-
+    /**
+     * Run validator1 tests.
+     */
+    function testValidator1() {
+      $xml_url = url(NULL, array('absolute' => TRUE)) . 'xmlrpc.php';
+      srand();
+      mt_srand();
+
+
+      $array_1 = array(array('curly' => mt_rand(-100,100)),
+                     array('curly' => mt_rand(-100,100)),
+                     array('larry' => mt_rand(-100,100)),
+                     array('larry' => mt_rand(-100,100)),
+                     array('moe' => mt_rand(-100,100)),
+                     array('moe' => mt_rand(-100,100)),
+                     array('larry' => mt_rand(-100,100)));
+      shuffle($array_1);
+      $l_res_1 = xmlrpc_validator1_test_arrayOfStructsTest($array_1);
+      $r_res_1 = xmlrpc($xml_url, 'validator1.arrayOfStructsTest', $array_1);
+      $this->assertIdentical($l_res_1, $r_res_1, 'array of structs test: %s');
+
+
+      $string_2 = 't\'&>>zf"md>yr>xlcev<h<"k&j<og"w&&>">>uai"np&s>>q\'&b<>"&&&';
+      $l_res_2 = xmlrpc_validator1_test_countTheEntities($string_2);
+      $r_res_2 = xmlrpc($xml_url, 'validator1.countTheEntities', $string_2);
+      $this->assertIdentical($l_res_2, $r_res_2, 'count the entities test: %s');
+
+
+      $struct_3 = array('moe' => mt_rand(-100,100), 'larry' => mt_rand(-100,100), 'curly' => mt_rand(-100,100), 'homer' => mt_rand(-100,100));
+      $l_res_3 = xmlrpc_validator1_test_easyStructTest($struct_3);
+      $r_res_3 = xmlrpc($xml_url, 'validator1.easyStructTest', $struct_3);
+      $this->assertIdentical($l_res_3, $r_res_3, 'easy struct test: %s');
+
+
+      $struct_4 = array('sub1' => array('bar' => 13),
+                      'sub2' => 14,
+                      'sub3' => array('foo' => 1, 'baz' => 2),
+                      'sub4' => array('ss' => array('sss' => array('ssss' => 'sssss'))));
+      $l_res_4 = xmlrpc_validator1_test_echoStructTest($struct_4);
+      $r_res_4 = xmlrpc($xml_url, 'validator1.echoStructTest', $struct_4);
+      $this->assertIdentical($l_res_4, $r_res_4, 'echo struct test: %s');
+
+      $int_5     = mt_rand(-100,100);
+      $bool_5    = (($int_5 % 2) == 0);
+      $string_5  = $this->randomName();
+      $double_5  = (double)(mt_rand(-1000,1000) / 100);
+      $time_5    = time();
+      $base64_5  = $this->randomName(100);
+      $l_res_5 = xmlrpc_validator1_test_manyTypesTest($int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), $base64_5);
+      $l_res_5[5] = $l_res_5[5]->data; /* override warpping */
+      $r_res_5 = xmlrpc($xml_url, 'validator1.manyTypesTest', $int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), xmlrpc_base64($base64_5));
+      /* Contains objects, objects are not equal */
+      // See http://drupal.org/node/37766 why this currnetly fails
+      $this->assertEqual($l_res_5, $r_res_5, 'many types test: %s');
+
+
+      $size = mt_rand(100,200);
+      $array_6 = array();
+      for ($i = 0; $i < $size; $i++) {
+        $array_6[] = $this->randomName(mt_rand(8,12));
+      }
 
-    $struct_7 = array();
-    for ($y = 2000; $y < 2002; $y++) {
-      for ($m = 3; $m < 5; $m++) {
-        for ($d = 1; $d < 6; $d++) {
-          $ys = (string)$y;
-          $ms = sprintf('%02d', $m);
-          $ds = sprintf('%02d', $d);
-          $struct_7[$ys][$ms][$ds]['moe']   = mt_rand(-100,100);
-          $struct_7[$ys][$ms][$ds]['larry'] = mt_rand(-100,100);
-          $struct_7[$ys][$ms][$ds]['curly'] = mt_rand(-100,100);
+      $l_res_6 = xmlrpc_validator1_test_moderateSizeArrayCheck($array_6);
+      $r_res_6 = xmlrpc($xml_url, 'validator1.moderateSizeArrayCheck', $array_6);
+      $this->assertIdentical($l_res_6, $r_res_6, 'moderate size array check: %s');
+
+
+      $struct_7 = array();
+      for ($y = 2000; $y < 2002; $y++) {
+        for ($m = 3; $m < 5; $m++) {
+          for ($d = 1; $d < 6; $d++) {
+            $ys = (string)$y;
+            $ms = sprintf('%02d', $m);
+            $ds = sprintf('%02d', $d);
+            $struct_7[$ys][$ms][$ds]['moe']   = mt_rand(-100,100);
+            $struct_7[$ys][$ms][$ds]['larry'] = mt_rand(-100,100);
+            $struct_7[$ys][$ms][$ds]['curly'] = mt_rand(-100,100);
+          }
         }
       }
+      $l_res_7 = xmlrpc_validator1_test_nestedStructTest($struct_7);
+      $r_res_7 = xmlrpc($xml_url, 'validator1.nestedStructTest', $struct_7);
+      $this->assertIdentical($l_res_7, $r_res_7, 'nested struct test: %s');
+
+
+      $int_8 = mt_rand(-100,100);
+      $l_res_8 = xmlrpc_validator1_test_simpleStructReturnTest($int_8);
+      $r_res_8 = xmlrpc($xml_url, 'validator1.simpleStructReturnTest', $int_8);
+      $this->assertIdentical($l_res_8, $r_res_8, 'nested struct test: %s');
+
+      /* Now test multicall */
+      $x = array();
+      $x[] = array('validator1.arrayOfStructsTest',     $array_1);
+      $x[] = array('validator1.countTheEntities',       $string_2);
+      $x[] = array('validator1.easyStructTest',         $struct_3);
+      $x[] = array('validator1.echoStructTest',         $struct_4);
+      $x[] = array('validator1.manyTypesTest',          $int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), xmlrpc_base64($base64_5));
+      $x[] = array('validator1.moderateSizeArrayCheck', $array_6);
+      $x[] = array('validator1.nestedStructTest',       $struct_7);
+      $x[] = array('validator1.simpleStructReturnTest', $int_8);
+
+      $a_l_res = array($l_res_1, $l_res_2, $l_res_3, $l_res_4, $l_res_5, $l_res_6, $l_res_7, $l_res_8);
+      $a_r_res = xmlrpc($xml_url, $x);
+      $this->assertEqual($a_l_res, $a_r_res, 'multicall equals result');
     }
-    $l_res_7 = simpletest_xmlrpc_nestedStructTest($struct_7);
-    $r_res_7 = xmlrpc($xml_url, 'validator1.nestedStructTest', $struct_7);
-    $this->assertIdentical($l_res_7, $r_res_7, 'nested struct test: %s');
-
-
-    $int_8 = mt_rand(-100,100);
-    $l_res_8 = simpletest_xmlrpc_simpleStructReturnTest($int_8);
-    $r_res_8 = xmlrpc($xml_url, 'validator1.simpleStructReturnTest', $int_8);
-    $this->assertIdentical($l_res_8, $r_res_8, 'nested struct test: %s');
-
-    /* Now test multicall */
-    $x = array();
-    $x[] = array('validator1.arrayOfStructsTest',     $array_1);
-    $x[] = array('validator1.countTheEntities',       $string_2);
-    $x[] = array('validator1.easyStructTest',         $struct_3);
-    $x[] = array('validator1.echoStructTest',         $struct_4);
-    $x[] = array('validator1.manyTypesTest',          $int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), xmlrpc_base64($base64_5));
-    $x[] = array('validator1.moderateSizeArrayCheck', $array_6);
-    $x[] = array('validator1.nestedStructTest',       $struct_7);
-    $x[] = array('validator1.simpleStructReturnTest', $int_8);
-
-    $a_l_res = array($l_res_1, $l_res_2, $l_res_3, $l_res_4, $l_res_5, $l_res_6, $l_res_7, $l_res_8);
-    $a_r_res = xmlrpc($xml_url, $x);
-    $this->assertEqual($a_l_res, $a_r_res, 'multicall equals result');
   }
 }
-?>
+
+function xmlrpc_validator1_test_arrayOfStructsTest($array) {
+  $sum = 0;
+  foreach ($array as $struct) {
+    if (isset($struct['curly'])) {
+      $sum += $struct['curly'];
+    }
+  }
+  return $sum;
+}
+
+function xmlrpc_validator1_test_countTheEntities($string) {
+  return array(
+    'ctLeftAngleBrackets' => substr_count($string, '<'),
+    'ctRightAngleBrackets' => substr_count($string, '>'),
+    'ctAmpersands' => substr_count($string, '&'),
+    'ctApostrophes' => substr_count($string, "'"),
+    'ctQuotes' => substr_count($string, '"'),
+    );
+}
+
+function xmlrpc_validator1_test_easyStructTest($array) {
+  return $array["curly"] + $array["moe"] + $array["larry"];
+}
+
+function xmlrpc_validator1_test_echoStructTest($array) {
+  return $array;
+}
+
+function xmlrpc_validator1_test_manyTypesTest($number, $boolean, $string, $double, $dateTime, $base64) {
+  $timestamp = mktime($dateTime->hour, $dateTime->minute, $dateTime->second, $dateTime->month, $dateTime->day, $dateTime->year);
+  return array($number, $boolean, $string, $double, xmlrpc_date($timestamp), xmlrpc_Base64($base64));
+}
+
+function xmlrpc_validator1_test_moderateSizeArrayCheck($array) {
+  return array_shift($array) . array_pop($array);
+}
+
+function xmlrpc_validator1_test_nestedStructTest($array) {
+  return $array["2000"]["04"]["01"]["larry"] + $array["2000"]["04"]["01"]["moe"] + $array["2000"]["04"]["01"]["curly"];
+}
+
+function xmlrpc_validator1_test_simpleStructReturnTest($number) {
+  return array("times10" => ($number*10), "times100" => ($number*100), "times1000" => ($number*1000));
+}
+
+/**
+ * Implementation of hook_xmlrpc()
+ */
+function xmlrpc_validator1_test_xmlrpc() {
+  return array(
+    'validator1.arrayOfStructsTest' => 'xmlrpc_validator1_test_arrayOfStructsTest',
+    'validator1.countTheEntities' => 'xmlrpc_validator1_test_countTheEntities',
+    'validator1.easyStructTest' => 'xmlrpc_validator1_test_easyStructTest',
+    'validator1.echoStructTest' => 'xmlrpc_validator1_test_echoStructTest',
+    'validator1.manyTypesTest' => 'xmlrpc_validator1_test_manyTypesTest',
+    'validator1.moderateSizeArrayCheck' => 'xmlrpc_validator1_test_moderateSizeArrayCheck',
+    'validator1.nestedStructTest' => 'xmlrpc_validator1_test_nestedStructTest',
+    'validator1.simpleStructReturnTest' => 'xmlrpc_validator1_test_simpleStructReturnTest');
+}
