instance_methods.php

来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 258 行

PHP
258
字号
<?php//// +----------------------------------------------------------------------+// | PHP version 4.0                                                      |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2001 The PHP Group                                |// +----------------------------------------------------------------------+// | This source file is subject to version 2.02 of the PHP license,      |// | that is bundled with this package in the file LICENSE, and is        |// | available at through the world-wide-web at                           |// | http://www.php.net/license/2_02.txt.                                 |// | If you did not receive a copy of the PHP license and are unable to   |// | obtain it through the world-wide-web, please send a note to          |// | license@php.net so we can mail you a copy immediately.               |// +----------------------------------------------------------------------+// | Authors: Jesus M. Castagnetto <jmcastagnetto@php.net>                |// +----------------------------------------------------------------------+// // Matrix definition and manipulation package// // $Id: instance_methods.php,v 1.1 2003/05/16 22:28:18 jmcastagnetto Exp $//require_once 'PHPUnit.php';require_once 'Math/Matrix.php';//require_once '../Matrix.php';class Math_Matrix_Instance_Methods_Test extends PHPUnit_TestCase {/*{{{*/    var $m;    var $data = array(                    array(1.0,2.0,3.0,4.0),                    array(5.0,6.0,7.0,8.0),                    array(1.0,4.0,5.0,7.0),                    array(2.0,3.0,-3.0,4.0)                );    function Math_Matrix_Instance_Methods_Test($name) {        $this->PHPUnit_TestCase($name);    }    function setUp() {        $this->m = new Math_Matrix($this->data);    }    function testIsSquare() {        $this->assertTrue($this->m->isSquare());    }    function testGetSize() {        $this->assertEquals(array(4,4), $this->m->getSize());    }    function testIsEmpty() {        $this->assertFalse($this->m->isEmpty());    }    function testClone() {        $q = $this->m->clone();        $this->assertEquals($q, $this->m);    }    function testNorm() {        $this->assertEquals(18.2482875909,$this->m->norm(),'',1E-8);    }    function testTrace() {        $this->assertEquals(16,$this->m->trace(),'',1E-8);    }    function testDeterminant() {        $this->assertEquals(76,$this->m->determinant(),'',1E-8);    }    function testNormalizedDeterminant() {        $this->assertEquals(4.16477434507,$this->m->normalizedDeterminant(),'',1E-8);    }    function testGetRow() {        $row = array(5.0,6.0,7.0,8.0);        $this->assertEquals($row, $this->m->getRow(1));    }    function testGetCol() {        $col = array(2.0,6.0,4.0,3.0);        $this->assertEquals($col, $this->m->getCol(1));    }    function testGetElement() {        $this->assertEquals(2.0, $this->m->getElement(0,1));    }    function testGetData() {        $this->assertEquals($this->data, $this->m->getData());    }    function testGetMin() {        $this->assertEquals(-3.0,$this->m->getMin(),'',1E-8);    }    function testGetMax() {        $this->assertEquals(8.0,$this->m->getMax(),'',1E-8);    }    function testGetValueIndex() {        $this->assertEquals(array(1,1),$this->m->getValueIndex(6.0));    }    function testGetMinIndex() {        $this->assertEquals(array(3,2),$this->m->getMinIndex(6.0));    }    function testGetMaxIndex() {        $this->assertEquals(array(1,3),$this->m->getMaxIndex(6.0));    }    function testTranspose() {        $data = array(                    array(1.0,2.0),                    array(3.0,4.0)                );        $data_transposed = array(                    array(1.0,3.0),                    array(2.0,4.0)                );        $p = new Math_Matrix($data);        $p->transpose();        $this->assertEquals($data_transposed, $p->getData());    }    function testInvert() {        $unit = Math_Matrix::makeUnit(4);        $q = new Math_Matrix($this->data);        $p = $q->clone();        $q->invert();        $p->multiply($q);        $this->assertEquals($unit->getData(), $p->getData());    }    function testMultiply() {        $this->testInvert();    }    function testGetSubMatrix() {        $data = array(                    array(6.0,7.0),                    array(4.0,5.0),                );        $q = $this->m->getSubMatrix(1,1,2,2);        $this->assertEquals($data, $q->getData());     }    function testAdd() {        $data = array(                    array(2.0,7.0,4.0,6.0),                    array(7.0,12.0,11.0,11.0),                    array(4.0,11.0,10.0,4.0),                    array(6.0,11.0,4.0,8.0)                );        $q = $this->m->clone();        $p = $q->clone();        $q->transpose();        $p->add($q);        $this->assertEquals($data, $p->getData());    }    function testSub() {        $data = array(                    array(0.0,-3.0,2.0,2.0),                    array(3.0,0.0,3.0,5.0),                    array(-2.0,-3.0,0.0,10.0),                    array(-2.0,-5.0,-10.0,0.0)                );        $q = $this->m->clone();        $p = $q->clone();        $q->transpose();        $p->sub($q);        $this->assertEquals($data, $p->getData());    }    function testScale() {        $data = array(                    array(2.0,4.0,6.0,8.0),                    array(10.0,12.0,14.0,16.0),                    array(2.0,8.0,10.0,14.0),                    array(4.0,6.0,-6.0,8.0)                );        $q = $this->m->clone();        $q->scale(2.0);        $this->assertEquals($data, $q->getData());    }    function testScaleRow() {        $data = array(                    array(1.0,2.0,3.0,4.0),                    array(10.0,12.0,14.0,16.0),                    array(1.0,4.0,5.0,7.0),                    array(2.0,3.0,-3.0,4.0)                );        $q = $this->m->clone();        $q->scaleRow(1,2.0);        $this->assertEquals($data, $q->getData());    }    function testSwapRows() {        $data = array(                    array(1.0,2.0,3.0,4.0),                    array(1.0,4.0,5.0,7.0),                    array(5.0,6.0,7.0,8.0),                    array(2.0,3.0,-3.0,4.0)                );        $q = $this->m->clone();        $q->swapRows(1,2);        $this->assertEquals($data, $q->getData());    }    function testSwapCols() {        $data = array(                    array(1.0,3.0,2.0,4.0),                    array(5.0,7.0,6.0,8.0),                    array(1.0,5.0,4.0,7.0),                    array(2.0,-3.0,3.0,4.0)                );        $q = $this->m->clone();        $q->swapCols(1,2);        $this->assertEquals($data, $q->getData());    }    function testSwapRowCol() {        $data = array(                    array(1.0,5.0,1.0,2.0),                    array(2.0,6.0,7.0,8.0),                    array(3.0,4.0,5.0,7.0),                    array(4.0,3.0,-3.0,4.0)                );        $q = $this->m->clone();        $q->swapRowCol(0,0);        $this->assertEquals($data, $q->getData());    }    function testVectorMultiply() {        $data = array(53.0,129.0,96.0,13.0);        $v = new Math_Vector(array(-1,9,8,3));        $q = $this->m->clone();        $r = $q->vectorMultiply($v);        $t = $r->getTuple();        $this->assertEquals($data, $t->data);    }}/*}}}*/$suite = new PHPUnit_TestSuite('Math_Matrix_Instance_Methods_Test');$result = PHPUnit::run($suite);echo $result->toString()."\n";// vim: ts=4:sw=4:et:// vim6: fdl=1:?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?