lithium\tests\cases\g11n\catalog\adapter\GettextTest::testEscapeUnescape PHP Method

testEscapeUnescape() public method

public testEscapeUnescape ( )
    public function testEscapeUnescape()
    {
        $this->adapter->mo = false;
        $file = "{$this->_path}/de/LC_MESSAGES/default.po";
        $chars = array("" => '\\000', "" => '\\001', "" => '\\002', "" => '\\003', "" => '\\004', "" => '\\005', "" => '\\006', "" => '\\a', "" => '\\b', "\t" => '\\t', "\n" => '\\n', "\v" => '\\v', "\f" => '\\f', "\r" => '\\r', "" => '\\016', "" => '\\017', "" => '\\020', "" => '\\021', "" => '\\022', "" => '\\023', "" => '\\024', "" => '\\025', "" => '\\026', "" => '\\030', "" => '\\031', "" => '\\032', "" => '\\033', "" => '\\034', "" => '\\035', "" => '\\036', "" => '\\037', '"' => '\\"', '\\' => '\\\\');
        foreach ($chars as $unescaped => $escaped) {
            $ord = decoct(ord($unescaped));
            $catalog = array("this is the{$unescaped}message" => array('id' => "this is the{$unescaped}message", 'ids' => array('singular' => "this is the{$unescaped}message"), 'flags' => array(), 'translated' => "this is the{$unescaped}translation", 'occurrences' => array(), 'comments' => array(), 'context' => null));
            $po = <<<EOD
msgid "this is the{$escaped}message"
msgstr "this is the{$escaped}translation"
EOD;
            file_put_contents($file, $po);
            $result = $this->adapter->read('message', 'de', null);
            unset($result['pluralRule']);
            $message = "`{$unescaped}` (ASCII octal {$ord}) was not escaped to `{$escaped}`";
            $message .= "\n{:message}";
            $this->assertEqual($catalog, $result, $message);
            unlink($file);
            $this->adapter->write('message', 'de', null, $catalog);
            $result = file_get_contents($file);
            $message = "`{$escaped}` was not unescaped to `{$unescaped}` (ASCII octal {$ord})";
            $message .= "\n{:message}";
            $this->assertPattern('/' . preg_quote($po, '/') . '/', $result, $message);
            unlink($file);
        }
    }