PHP Classes

File: tests/Utils/DimensionTest.php

Recommend this page to a friend!
  Classes of Koala Yeung   Widgetfy   tests/Utils/DimensionTest.php   Download  
File: tests/Utils/DimensionTest.php
Role: Unit test script
Content type: text/plain
Description: Unit test script
Class: Widgetfy
Generate HTML to embed video content of given URL
Author: By
Last change: Update of tests/Utils/DimensionTest.php
Date: 2 months ago
Size: 6,665 bytes
 

Contents

Class file image Download
<?php

/**
 * Unit test for Phata\Widgetfy\Utils\Dimension
 *
 * Licence:
 *
 * This file is part of Widgetfy.
 *
 * Widgetfy is free software: you can redistribute
 * it and/or modify it under the terms of the GNU
 * Lesser General Public License as published by the
 * Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * Widgetfy is distributed in the hope that it will
 * be useful, but WITHOUT ANY WARRANTY; without even
 * the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser
 * General Public Licensefor more details.
 *
 * You should have received a copy of the GNU Lesser
 * General Public License along with Widgetfy. If
 * not, see <http://www.gnu.org/licenses/lgpl.html>.
 *
 * Description:
 *
 * This file is a unit test for
 * - Phata\Widgetfy\Utils\Dimension
 *
 * @package Widgetfy
 * @author Koala Yeung <koalay@gmail.com>
 * @copyright 2014 Koala Yeung
 * @licence http://www.gnu.org/licenses/lgpl.html
 * @link http://github.com/Phata/Widgetfy
 */

use Phata\Widgetfy\Utils\Dimension as Dimension;
use
Phata\Widgetfy\Utils\DimensionError as DimensionError;
use
PHPUnit\Framework\TestCase;

class
DimensionTest extends TestCase {

    public function
testIsInt() {
       
$this->assertTrue(Dimension::isInt(123));
       
$this->assertTrue(Dimension::isInt('123'));
       
$this->assertFalse(Dimension::isInt('123%'));
       
$this->assertFalse(Dimension::isInt(''));
    }

    public function
testIsPercentage() {
       
$this->assertFalse(Dimension::isPercentage(123));
       
$this->assertFalse(Dimension::isPercentage('100'));
       
$this->assertFalse(Dimension::isPercentage(''));
       
$this->assertTrue(Dimension::isPercentage('100%'));
    }

   
// without
   
public function testFromWidth1() {
       
$d = Dimension::fromWidth(640);
       
$this->assertEquals($d->width, 640);
       
$this->assertFalse($d->height);
    }

   
// with factor
   
public function testFromWidth2() {
       
$d = Dimension::fromWidth(640, 0.5625);
       
$this->assertEquals($d->width, 640);
       
$this->assertEquals($d->height, 360);
    }

   
// raise error for $width
   
public function testFromWidth3() {
       
$error = FALSE;
        try {
           
$d = Dimension::fromWidth('100%');
        } catch (
DimensionError $e) {
           
$this->assertEquals($e->getMessage(),
               
'First parameter must be integer or integer string');
           
$error = TRUE;
        }
       
$this->assertTrue($error);
    }

   
// raise error for $factor
   
public function testFromWidth4() {
       
$error = FALSE;
        try {
           
$d = Dimension::fromWidth('100', 'abc');
        } catch (
DimensionError $e) {
           
$this->assertEquals($e->getMessage(),
               
'Second parameter must be a number');
           
$error = TRUE;
        }
       
$this->assertTrue($error);
    }

   
// basic, width only
   
public function testToAttr1() {
       
$d = new Dimension;
       
$d->width = 100;
       
$this->assertEquals('width="100"', $d->toAttr());
    }

   
// basic, width and height
   
public function testToAttr2() {
       
$d = new Dimension;
       
$d->width = 100;
       
$d->height = 200;
       
$this->assertEquals('width="100" height="200"', $d->toAttr());
    }

   
// mix integer and percentage
   
public function testToAttr3() {
       
$d = new Dimension;
       
$d->width = 100;
       
$d->height = '100%';
       
$this->assertEquals('width="100" height="100%"', $d->toAttr());
    }

   
// basic, width only
   
public function testToCSS1() {
       
$d = new Dimension;
       
$d->width = 100;
       
$this->assertEquals('width:100px;', $d->toCSS());
    }

   
// basic, width and height
   
public function testToCSS2() {
       
$d = new Dimension;
       
$d->width = 100;
       
$d->height = 200;
       
$this->assertEquals('width:100px; height:200px;', $d->toCSS());
    }

   
// mix integer and percentage
   
public function testToCSS3() {
       
$d = new Dimension;
       
$d->width = 100;
       
$d->height = '100%';
       
$this->assertEquals('width:100px; height:100%;', $d->toCSS());
    }

   
// test 'scale-width-height'
   
public function testFromOptionsScaleWidthHeight() {

       
// default
       
$d = Dimension::fromOptions(array());
       
$this->assertEquals('scale-width-height', $d->scale_model);
       
$this->assertEquals(640, $d->width);
       
$this->assertEquals(360, $d->height);
       
$this->assertEquals(0.5625, $d->factor);
       
$this->assertTrue($d->dynamic);

       
// provide options
       
$d = Dimension::fromOptions(array(
           
'width' => 600,
        ), array(
           
'scale_model' => 'scale-width-height',
           
'default_width' => 800,
           
'factor' => 0.5,
        ));
       
$this->assertEquals('scale-width-height', $d->scale_model);
       
$this->assertEquals(600, $d->width);
       
$this->assertEquals(300, $d->height);
       
$this->assertEquals(0.5, $d->factor);
       
$this->assertTrue($d->dynamic);

    }

   
// test 'scale-width'
   
public function testFromOptionsScaleWidth() {

       
// auto height
       
$d = Dimension::fromOptions(array(
           
'width' => 600,
        ), array(
           
'scale_model' => 'scale-width',
           
'default_width' => 800,
        ));
       
$this->assertEquals('scale-width', $d->scale_model);
       
$this->assertEquals(600, $d->width);
       
$this->assertFalse($d->height);
       
$this->assertFalse($d->factor);
       
$this->assertTrue($d->dynamic);

       
// fixed height
       
$d = Dimension::fromOptions(array(
           
'width' => 600,
        ), array(
           
'scale_model' => 'scale-width',
           
'default_width' => 800,
           
'default_height' => 900,
        ));
       
$this->assertEquals('scale-width', $d->scale_model);
       
$this->assertEquals(600, $d->width);
       
$this->assertEquals(900, $d->height);
       
$this->assertFalse($d->factor);
       
$this->assertTrue($d->dynamic);

    }

   
// test 'no-scale'
   
public function testFromOptionsNoScale() {

       
$d = Dimension::fromOptions(array(
           
'width' => 600,
           
'height' => 400,
        ), array(
           
'scale_model' => 'no-scale',
           
'default_width' => 900,
           
'default_height' => 700,
        ));
       
$this->assertEquals('no-scale', $d->scale_model);
       
$this->assertEquals(900, $d->width);
       
$this->assertEquals(700, $d->height);
       
$this->assertFalse($d->factor);
       
$this->assertTrue($d->dynamic);

    }

}