Вход Регистрация
Файл: gapps/vendor/psy/psysh/test/Psy/Test/Readline/LibeditTest.php
Строк: 113
<?php

/*
 * This file is part of Psy Shell.
 *
 * (c) 2012-2015 Justin Hileman
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace PsyTestReadline;

use 
PsyReadlineLibedit;

class 
LibeditTest extends PHPUnit_Framework_TestCase
{
    private 
$historyFile;

    public function 
setUp()
    {
        if (!
Libedit::isSupported()) {
            
$this->markTestSkipped('Libedit not enabled');
        }

        
$this->historyFile tempnam(sys_get_temp_dir(), 'psysh_test_history');
        if (
false === file_put_contents($this->historyFile"_HiStOrY_V2_n")) {
            
$this->fail('Unable to write history file: ' $this->historyFile);
        }
        
// Calling readline_read_history before readline_clear_history
        // avoids segfault with PHP 5.5.7 & libedit v3.1
        
readline_read_history($this->historyFile);
        
readline_clear_history();
    }

    public function 
tearDown()
    {
        if (
is_file($this->historyFile)) {
            
unlink($this->historyFile);
        }
    }

    public function 
testHistory()
    {
        
$readline = new Libedit($this->historyFile);
        
$this->assertEmpty($readline->listHistory());
        
$readline->addHistory('foo');
        
$this->assertEquals(array('foo'), $readline->listHistory());
        
$readline->addHistory('bar');
        
$this->assertEquals(array('foo''bar'), $readline->listHistory());
        
$readline->addHistory('baz');
        
$this->assertEquals(array('foo''bar''baz'), $readline->listHistory());
        
$readline->clearHistory();
        
$this->assertEmpty($readline->listHistory());
    }

    
/**
     * @depends testHistory
     */
    
public function testHistorySize()
    {
        
$readline = new Libedit($this->historyFile2);
        
$this->assertEmpty($readline->listHistory());
        
$readline->addHistory('foo');
        
$readline->addHistory('bar');
        
$this->assertEquals(array('foo''bar'), $readline->listHistory());
        
$readline->addHistory('baz');
        
$this->assertEquals(array('bar''baz'), $readline->listHistory());
        
$readline->addHistory('w00t');
        
$this->assertEquals(array('baz''w00t'), $readline->listHistory());
        
$readline->clearHistory();
        
$this->assertEmpty($readline->listHistory());
    }

    
/**
     * @depends testHistory
     */
    
public function testHistoryEraseDups()
    {
        
$readline = new Libedit($this->historyFile0true);
        
$this->assertEmpty($readline->listHistory());
        
$readline->addHistory('foo');
        
$readline->addHistory('bar');
        
$readline->addHistory('foo');
        
$this->assertEquals(array('bar''foo'), $readline->listHistory());
        
$readline->addHistory('baz');
        
$readline->addHistory('w00t');
        
$readline->addHistory('baz');
        
$this->assertEquals(array('bar''foo''w00t''baz'), $readline->listHistory());
        
$readline->clearHistory();
        
$this->assertEmpty($readline->listHistory());
    }

    public function 
testListHistory()
    {
        
$readline = new Libedit($this->historyFile);
        
file_put_contents(
            
$this->historyFile,
            
"This is an entrynThis is a commentnThis is an entryWith a commentn",
            
FILE_APPEND
        
);
        
$this->assertEquals(array(
            
'This is an entry',
            
'This is an entry',
        ), 
$readline->listHistory());
        
$readline->clearHistory();
    }

    
/**
     * Libedit being a BSD library,
     * it doesn't support non-unix line separators.
     */
    
public function testLinebreaksSupport()
    {
        
$readline = new Libedit($this->historyFile);
        
file_put_contents(
            
$this->historyFile,
            
"foorbarnbazrnw00t",
            
FILE_APPEND
        
);
        
$this->assertEquals(array(
            
"foorbar",
            
"bazr",
            
'w00t',
        ), 
$readline->listHistory());
        
$readline->clearHistory();
    }
}
Онлайн: 0
Реклама