RowVectorTest.php 1.64 KB
Newer Older
冯超鹏's avatar
冯超鹏 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
<?php
namespace MathPHP\Tests\LinearAlgebra;

use MathPHP\LinearAlgebra\RowVector;
use MathPHP\LinearAlgebra\Matrix;

class RowVectorTest extends \PHPUnit\Framework\TestCase
{
    /**
     * @dataProvider dataProviderForConstructor
     */
    public function testConstructor(array $M, array $V)
    {
        $R = new RowVector($M);
        $V = new Matrix($V);

        $this->assertInstanceOf(\MathPHP\LinearAlgebra\RowVector::class, $R);
        $this->assertInstanceOf(\MathPHP\LinearAlgebra\Matrix::class, $R);

        $this->assertEquals($V[0], $R[0]);

        $this->assertEquals(1, $V->getM());
        $this->assertEquals(count($M), $V->getN());
    }

    public function dataProviderForConstructor()
    {
        return [
            [
                [1, 2, 3, 4],
                [ [1, 2, 3, 4] ],
            ],
            [
                [1],
                [ [1] ],
            ],
        ];
    }

    /**
     * @dataProvider dataProviderForTranspose
     */
    public function testTranspose(array $M)
    {
        $R  = new RowVector($M);
        $Rᵀ = $R->transpose();

        $this->assertInstanceOf(\MathPHP\LinearAlgebra\ColumnVector::class, $Rᵀ);
        $this->assertInstanceOf(\MathPHP\LinearAlgebra\Matrix::class, $Rᵀ);

        $this->assertEquals(count($M), $Rᵀ->getM());
        $this->assertEquals(1, $Rᵀ->getN());

        foreach ($M as $row => $value) {
            $this->assertEquals($value, $Rᵀ[$row][0]);
        }
    }

    public function dataProviderForTranspose()
    {
        return [
            [
                [1, 2, 3, 4],

            ],
            [
                [1],
            ],
        ];
    }
}