PHP Classes

File: tests/DictionaryTest.php

Recommend this page to a friend!
  Classes of Italo Lelis de Vietro   Collections PHP Library   tests/DictionaryTest.php   Download  
File: tests/DictionaryTest.php
Role: Unit test script
Content type: text/plain
Description: Unit test script
Class: Collections PHP Library
Manipulate collections of values
Author: By
Last change:
Date: 9 years ago
Size: 5,218 bytes
 

Contents

Class file image Download
<?php

namespace Tests\Collections;

use
ArrayObject;
use
Collections\Dictionary;
use
InvalidArgumentException;
use
OutOfBoundsException;
use
stdClass;

/**
 * Description of CollectionTest
 *
 * @author italo
 */
class DictionaryTest extends CollectionsTestCase
{
   
/**
     * @var Dictionary
     */
   
private $coll;

    protected function
setUp()
    {
       
$this->coll = new Dictionary();
    }

    public function
testNewInstanceWithArray()
    {
       
$this->assertNotNull(new Dictionary(array(
           
'key1' => 'value1',
           
'key2' => array(
               
'key21' => 'value21',
               
'key22' => array(
                   
'key221' => 'value221',
                )
            ),
           
'key3' => 'value3',
           
'key4' => 'value4'
       
)));
    }

    public function
testNewInstanceWithTraversable()
    {
       
$traversable = new ArrayObject(array(
           
'key1' => 'value1',
           
'key2' => 'value2',
           
'key3' => 'value3',
           
'key4' => 'value4'
       
));
       
$this->assertNotNull(new Dictionary($traversable));
    }

    public function
testNewInstance()
    {
       
$this->assertNotNull($this->coll);
    }

   
/**
     * @expectedException InvalidArgumentException
     */
   
public function testInvalidElementsToInstanciate()
    {
       
$coll = new Dictionary();
       
$coll->addAll('string');
    }

    public function
testAddAllWithSomeValues()
    {
       
$arrayList = new Dictionary();
       
$arrayList->add('key1', 'value1')
            ->
add('key2', 'value2');

       
$secoundArrayList = new Dictionary();
       
$secoundArrayList->add('key3', 'value3')
            ->
add('key4', 'value4');

       
$arrayList->addAll($secoundArrayList);
       
$this->assertEquals(array(
           
'key1' => 'value1',
           
'key2' => 'value2',
           
'key3' => 'value3',
           
'key4' => 'value4'
       
), $arrayList->toArray());
    }

    public function
testAddItem()
    {
       
$this->coll->add('key', 'testing');
       
$this->assertTrue(is_string((string)$this->coll));
    }

   
/**
     * @expectedException \Collections\Exception\KeyException
     */
   
public function testAddDuplicateKey()
    {
       
$this->coll->add('key', 'testing');
       
$this->coll->add('key', 'testing2');
    }

    public function
testSetItem()
    {
       
$this->coll->set('key', 'testing');
       
$this->assertTrue(is_string((string)$this->coll));
    }

    public function
testGetItem()
    {
       
$this->coll->set('keyOne', 'testing');
       
$this->assertEquals('testing', $this->coll->get('keyOne'));
    }

   
/**
     * @expectedException OutOfBoundsException
     */
   
public function testGetInvalidItem()
    {
       
$this->coll->set('keyOne', 'testing');
       
$this->coll->get('keyTwo');
    }

    public function
testGetKeys()
    {
       
$this->coll->add('keyOne', 'testing1');
       
$this->coll->add('keyTwo', 'testing2');
       
$this->coll->add('keyThree', 'testing3');

       
$this->assertEquals(array('keyOne', 'keyTwo', 'keyThree'), $this->coll->toKeysArrays());
    }

   
/**
     * @expectedException InvalidArgumentException
     */
   
public function testSetNullKey()
    {
       
$this->coll->set(null, 'testing');
    }

    public function
testTryGetSuccess()
    {
       
$this->coll->add('key', 'testing');
       
$value = $this->coll->tryGet('key');
       
$this->assertEquals('testing', $value);
    }

    public function
testTryGetError()
    {
       
$this->coll->add('key', 'testing');
       
$value = $this->coll->tryGet('key2');
       
$this->assertNull($value);
    }

    public function
testTryGetDefaultValue()
    {
       
$this->coll->add('key', 'testing');
       
$value = $this->coll->tryGet('key2', 'testingValue');
       
$this->assertEquals('testingValue', $value);
    }

   
/**
     * @expectedException InvalidArgumentException
     */
   
public function testRemovingNonExistentEntryReturnsNull()
    {
       
$this->assertEquals(null, $this->coll->remove('testing_does_not_exist'));
    }

    public function
testArrayAccess()
    {
       
$this->coll['keyOne'] = 'one';
       
$this->coll['keyTwo'] = 'two';

       
$this->assertEquals($this->coll['keyOne'], 'one');
       
$this->assertEquals($this->coll['keyTwo'], 'two');

        unset(
$this->coll['keyOne']);
       
$this->assertEquals($this->coll->count(), 1);

       
$this->assertTrue(isset($this->coll['keyTwo']));
    }

    public function
testToList()
    {
       
$this->coll->addAll(array(1, 2, 3, 4));
       
$map = $this->coll->toList();

       
$this->assertInstanceOf('\Collections\\ArrayList', $map);
    }

    public function
testToArray()
    {
       
$data = [
           
'key1' => 'value1',
           
'key2' => 'value2',
           
'key3' => [
               
'key3.1' => 'value3.1'
           
]
        ];
       
$this->coll->addAll($data);
       
$this->assertEquals($data, $this->coll->toArray());
    }

    public function
testSetObjectKey()
    {
       
$class = new stdClass();
       
$this->coll->set($class, 'testing');

       
$this->assertEquals($this->coll->get($class), 'testing');
    }
}