M3u8Test::testRead()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 40
Code Lines 32

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 40
rs 8.8571
c 0
b 0
f 0
cc 1
eloc 32
nc 1
nop 0
1
<?php
2
3
/*
4
 * This file is part of the PhpM3u8 package.
5
 *
6
 * (c) Chrisyue <http://chrisyue.com/>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Chrisyue\PhpM3u8\tests;
13
14
use Chrisyue\PhpM3u8\M3u8;
15
use PHPUnit\Framework\TestCase;
16
17
class M3u8Test extends TestCase
18
{
19
    public function testRead()
20
    {
21
        $content = DummyM3u8Factory::createM3u8Content(2);
22
        $m3u8 = new M3u8();
23
        $m3u8->read($content);
24
25
        $this->assertEquals(2, $m3u8->getVersion());
26
        $this->assertEquals(12, $m3u8->getTargetDuration());
27
        $this->assertEquals(33, $m3u8->getMediaSequence());
28
        $this->assertEquals(3, $m3u8->getDiscontinuitySequence());
29
30
        $segment = $m3u8->getSegments()->offsetGet(0);
31
        $this->assertEquals('AES-128', $segment->getKeyTags()[0]->getMethod());
32
        $this->assertEquals('com.apple', $segment->getKeyTags()[1]->getKeyFormat());
33
        $this->assertEquals([1], $segment->getKeyTags()[1]->getKeyFormatVersions());
34
        $this->assertEquals(12, $segment->getExtinfTag()->getDuration());
35
        $this->assertEquals('hello world', $segment->getExtinfTag()->getTitle());
36
        $this->assertEquals('stream33.ts', (string) $segment->getUri());
37
        $this->assertEquals(10000, $segment->getByteRangeTag()->getLength());
38
        $this->assertEquals(100, $segment->getByteRangeTag()->getOffset());
39
        $this->assertFalse($segment->isDiscontinuity());
40
        $this->assertEquals(new \DateTime('2010-02-19T14:54:23.031+08:00'), $segment->getProgramDateTimeTag()->getProgramDateTime());
41
42
        $segment = $m3u8->getSegments()->offsetGet(1);
43
        $this->assertEquals(10, $segment->getExtinfTag()->getDuration());
44
        $this->assertEquals('video01.ts', (string) $segment->getUri());
45
        $this->assertTrue($segment->isDiscontinuity());
46
47
        $this->assertEquals(22, $m3u8->getDuration());
48
49
        $content = DummyM3u8Factory::createM3u8Content(3, true);
50
        $m3u8 = new M3u8();
51
        $m3u8->read($content);
52
53
        $segment = $m3u8->getSegments()->offsetGet(0);
54
        $this->assertEquals(1, $segment->getStreamInfTag()->getProgramId());
55
        $this->assertEquals(1500, $segment->getStreamInfTag()->getBandwidth());
56
        $this->assertEquals('1280x720', $segment->getStreamInfTag()->getResolution());
57
        $this->assertEquals(['avc1.42e00a', 'mp4a.40.2'], $segment->getStreamInfTag()->getCodecs());
58
    }
59
60
    public function testDump()
61
    {
62
        $m3u8 = DummyM3u8Factory::createM3u8(3);
63
64
        $this->assertEquals(DummyM3u8Factory::createM3u8Content(3), $m3u8->dump());
65
66
        $m3u8 = DummyM3u8Factory::createM3u8(3, true);
67
68
        $this->assertEquals(DummyM3u8Factory::createM3u8Content(3, true), $m3u8->dump());
69
    }
70
}
71