/** * Tests PFXUtils::guessEncoding(). */ public function testGuessEncoding() { $content = 'The ɋuick brőwn fox jumped ōver the lazy dog.'; $file = self::_createTempFile(null, $content); $fh = fopen($file, 'r'); $this->assertEquals('UTF-8', PFXUtils::guessEncoding($fh)); $this->assertEquals($content, fread($fh, strlen($content))); fclose($fh); // Now try an explicit UTF-8 BOM $file = self::_createTempFile(null, "" . $content); $fh = fopen($file, 'r'); $this->assertEquals('UTF-8', PFXUtils::guessEncoding($fh)); $this->assertEquals($content, fread($fh, strlen($content))); fclose($fh); // UTF-16BE $file = self::_createTempFile(null, "��" . $content); $fh = fopen($file, 'r'); $this->assertEquals('UTF-16BE', PFXUtils::guessEncoding($fh)); $this->assertEquals($content, fread($fh, strlen($content))); /* Even though we just advanced the pointer, we should still get the same result if we do the same tests again, because the method will rewind it for us. */ $this->assertEquals('UTF-16BE', PFXUtils::guessEncoding($fh)); $this->assertEquals($content, fread($fh, strlen($content))); fclose($fh); // UTF-16LE $file = self::_createTempFile(null, "��" . $content); $fh = fopen($file, 'r'); $this->assertEquals('UTF-16LE', PFXUtils::guessEncoding($fh)); $this->assertEquals($content, fread($fh, strlen($content))); $this->assertEquals('UTF-16LE', PFXUtils::guessEncoding($fh)); $this->assertEquals($content, fread($fh, strlen($content))); fclose($fh); // UTF-32BE $file = self::_createTempFile(null, "��" . $content); $fh = fopen($file, 'r'); $this->assertEquals('UTF-32BE', PFXUtils::guessEncoding($fh)); $this->assertEquals($content, fread($fh, strlen($content))); $this->assertEquals('UTF-32BE', PFXUtils::guessEncoding($fh)); $this->assertEquals($content, fread($fh, strlen($content))); fclose($fh); // UTF-32LE $file = self::_createTempFile(null, "��" . $content); $fh = fopen($file, 'r'); $this->assertEquals('UTF-32LE', PFXUtils::guessEncoding($fh)); $this->assertEquals($content, fread($fh, strlen($content))); $this->assertEquals('UTF-32LE', PFXUtils::guessEncoding($fh)); $this->assertEquals($content, fread($fh, strlen($content))); fclose($fh); }