summaryrefslogtreecommitdiff
path: root/modules/simpletest/tests/common.test
blob: d9c6ceaa156a21a82b0bbd9684aca1dcb5201ff6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?php
// $Id$

class CommonFormatSizeTestCase extends DrupalWebTestCase {

  /**
   * Implementation of getInfo().
   */
  function getInfo() {
    return array(
      'name' => t('Format size test'),
      'description' => t('Parse a predefined amount of bytes and compare the output with the expected value.'),
      'group' => t('System')
    );
  }

  /**
   * Implementation of setUp().
   */
  function setUp() {
    $this->exact_test_cases = array(
      '1 byte'    => 1, // byte
      '1 KB'      => 1000, // kilobyte
      '1 MB'      => 1000000, // megabyte
      '1 GB'      => 1000000000, // gigabyte
      '1 TB'      => 1000000000000, // terabyte
      '1 PB'      => 1000000000000000, // petabyte
      '1 EB'      => 1000000000000000000, // exabyte
      '1 ZB'      => 1000000000000000000000, // zettabyte
      '1 YB'      => 1000000000000000000000000, // yottabyte
    );
    $this->rounded_test_cases = array(
      '2 bytes'   => 2, // bytes
      '1 MB'      => 999999, // 1 MB (not 1000 kilobyte!)
      '3.62 MB'   => 3623651, // megabytes
      '67.23 PB'  => 67234178751368124, // petabytes
      '235.35 YB' => 235346823821125814962843827, // yottabytes
    );
    parent::setUp();
  }

  /**
   * testCommonFormatSize
   */
  function testCommonFormatSize() {
    foreach (array($this->exact_test_cases, $this->rounded_test_cases) as $test_cases) {
      foreach ($test_cases as $expected => $size) {
        $this->assertTrue(
          ($result = format_size($size, NULL)) == $expected,
          $expected . " == " . $result . " (" . $size . " bytes) %s"
        );
      }
    }
  }
}

/**
 * Test drupal_explode_tags() and drupal_implode_tags().
 */
class DrupalTagsHandlingTestCase extends DrupalWebTestCase {
  var $validTags = array(
    'Drupal' => 'Drupal',
    'Drupal with some spaces' => 'Drupal with some spaces',
    '"Legendary Drupal mascot of doom: ""Druplicon"""' => 'Legendary Drupal mascot of doom: "Druplicon"',
    '"Drupal, although it rhymes with sloopal, is as awesome as a troopal!"' => 'Drupal, although it rhymes with sloopal, is as awesome as a troopal!',
  );

  /**
   * Implementation of getInfo().
   */
  function getInfo() {
    return array(
      'name' => t('Drupal tags handling'),
      'description' => t("Performs tests on Drupal's handling of tags, both explosion and implosion tactics used."),
      'group' => t('System')
    );
  }

  /**
   * Explode a series of tags.
   */
  function testDrupalExplodeTags() {
    $string = implode(', ', array_keys($this->validTags));
    $tags = drupal_explode_tags($string);
    $this->assertTags($tags);
  }

  /**
   * Implode a series of tags.
   */
  function testDrupalImplodeTags() {
    $tags = array_values($this->validTags);
    // Let's explode and implode to our heart's content.
    for ($i = 0; $i < 10; $i++) {
      $string = drupal_implode_tags($tags);
      $tags = drupal_explode_tags($string);
    }
    $this->assertTags($tags);
  }

  /**
   * Helper function: asserts that the ending array of tags is what we wanted.
   */
  function assertTags($tags) {
    $original = $this->validTags;
    foreach ($tags as $tag) {
      $key = array_search($tag, $original);
      $this->_assert($key !== FALSE, t('Make sure tag %tag shows up in the final tags array (originally %original)', array('%tag' => $tag, '%original' => $key)));
      unset($original[$key]);
    }
    foreach ($original as $leftover) {
      $this->_assert(FALSE, t('Leftover tag %leftover was left over.', array('%leftover' => $leftover)));
    }
  }
}

/**
 * Test drupal_http_request().
 */
class DrupalHTTPRequestTestCase extends DrupalWebTestCase {
  /**
   * Implementation of getInfo().
   */
  function getInfo() {
    return array(
      'name' => t('Drupal HTTP request'),
      'description' => t("Performs tests on Drupal's HTTP request mechanism."),
      'group' => t('System')
    );
  }

  function testDrupalHTTPRequest() {
    $missing_scheme = drupal_http_request('example.com/path');
    $this->assertEqual($missing_scheme->error, 'missing schema', t('Returned with missing scheme error.'));

    $unable_to_parse = drupal_http_request('http:///path');
    $this->assertEqual($unable_to_parse->error, 'unable to parse URL', t('Returned with unable to parse URL error.'));
  }
}