[ Index ]

PHP Cross Reference of GlotPress

title

Body

[close]

/t/ -> test_translations.php (source)

   1  <?php
   2  require_once ('init.php');
   3  
   4  class GP_Test_Translations extends GP_UnitTestCase {
   5  
   6  	function test_add_entry() {
   7          $entry = new Translation_Entry(array('singular' => 'baba',));
   8          $entry2 = new Translation_Entry(array('singular' => 'dyado',));
   9          $empty = new Translation_Entry();
  10          $po = new Translations();
  11          $po->add_entry($entry);
  12          $this->assertEquals(array($entry->key() => $entry), $po->entries);
  13          // add the same entry more than once
  14          // we do not need to test proper key generation here, see test_key()
  15          $po->add_entry($entry);
  16          $po->add_entry($entry);
  17          $this->assertEquals(array($entry->key() => $entry), $po->entries);
  18          $po->add_entry($entry2);
  19          $this->assertEquals(array($entry->key() => $entry, $entry2->key() => $entry2), $po->entries);
  20          // add empty entry
  21          $this->assertEquals(false, $po->add_entry($empty));
  22          $this->assertEquals(array($entry->key() => $entry, $entry2->key() => $entry2), $po->entries);
  23  
  24          // give add_entry() the arguments and let it create the entry itself
  25          $po = new Translations();
  26          $po->add_entry(array('singular' => 'baba',));
  27          $entries= array_values($po->entries);
  28          $this->assertEquals($entry->key(), $entries[0]->key());
  29      }
  30  
  31  	function test_translate() {
  32          $entry1 = new Translation_Entry(array('singular' => 'baba', 'translations' => array('babax')));
  33          $entry2 = new Translation_Entry(array('singular' => 'baba', 'translations' => array('babay'), 'context' => 'x'));
  34          $domain = new Translations();
  35          $domain->add_entry($entry1);
  36          $domain->add_entry($entry2);
  37          $this->assertEquals('babax', $domain->translate('baba'));
  38          $this->assertEquals('babay', $domain->translate('baba', 'x'));
  39          $this->assertEquals('baba', $domain->translate('baba', 'y'));
  40          $this->assertEquals('babaz', $domain->translate('babaz'));
  41      }
  42  
  43  	function test_translate_plural() {
  44          $entry_incomplete = new Translation_Entry(array('singular' => 'baba', 'plural' => 'babas', 'translations' => array('babax')));
  45          $entry_toomany = new Translation_Entry(array('singular' => 'wink', 'plural' => 'winks', 'translations' => array('winki', 'winka', 'winko')));
  46          $entry_2 = new Translation_Entry(array('singular' => 'dyado', 'plural' => 'dyados', 'translations' => array('dyadox', 'dyadoy')));
  47          $domain = new Translations();
  48          $domain->add_entry($entry_incomplete);
  49          $domain->add_entry($entry_toomany);
  50          $domain->add_entry($entry_2);
  51          $this->assertEquals('other', $domain->translate_plural('other', 'others', 1));
  52          $this->assertEquals('others', $domain->translate_plural('other', 'others', 111));
  53          // too few translations + cont logic
  54          $this->assertEquals('babas', $domain->translate_plural('baba', 'babas', 2));
  55          $this->assertEquals('babas', $domain->translate_plural('baba', 'babas', 0));
  56          $this->assertEquals('babas', $domain->translate_plural('baba', 'babas', -1));
  57          $this->assertEquals('babas', $domain->translate_plural('baba', 'babas', 999));
  58          // proper
  59          $this->assertEquals('dyadox', $domain->translate_plural('dyado', 'dyados', 1));
  60          $this->assertEquals('dyadoy', $domain->translate_plural('dyado', 'dyados', 0));
  61          $this->assertEquals('dyadoy', $domain->translate_plural('dyado', 'dyados', 18881));
  62          $this->assertEquals('dyadoy', $domain->translate_plural('dyado', 'dyados', -18881));
  63      }
  64  
  65  	function test_digit_and_merge() {
  66          $entry_digit_1 = new Translation_Entry(array('singular' => 1, 'translations' => array('1')));
  67          $entry_digit_2 = new Translation_Entry(array('singular' => 2, 'translations' => array('2')));
  68          $domain = new Translations();
  69          $domain->add_entry($entry_digit_1);
  70          $domain->add_entry($entry_digit_2);
  71          $dummy_translation = new Translations;
  72          $this->assertEquals( '1', $domain->translate( '1' ) );
  73          $domain->merge_with( $dummy_translation );
  74          $this->assertEquals( '1', $domain->translate( '1' ) );
  75      }
  76  
  77      function test_if_translation_has_been_updated_since_timestamp() {
  78          $set      = $this->factory->translation_set->create_with_project_and_locale();
  79          $original = $this->factory->original->create( array( 'project_id' => $set->project_id ) );
  80          $this->factory->translation->create( array(
  81              'original_id'        => $original->id,
  82              'translation_set_id' => $set->id,
  83              'status'             => 'current',
  84          ) );
  85  
  86          $this->assertTrue( gp_has_translation_been_updated( $set ) );
  87  
  88          $_SERVER['HTTP_IF_MODIFIED_SINCE'] = 'Sat, 27 Apr 2012 15:49:29 GMT';
  89          $this->assertTrue( gp_has_translation_been_updated( $set ) );
  90  
  91          $_SERVER['HTTP_IF_MODIFIED_SINCE'] = 'Wed, 2 Feb 2022 22:22:22 GMT';
  92          $this->assertFalse( gp_has_translation_been_updated( $set ) );
  93      }
  94  }


Generated: Fri May 24 04:00:00 2013 Hosted by follow the white rabbit.