Passed
Push — master ( daa88d...35c21b )
by SignpostMarv
12:17
created

VideoObject::GetMusicBy()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 5
nc 1
nop 0
dl 0
loc 12
ccs 6
cts 6
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
* @author SignpostMarv
4
*/
5
declare(strict_types=1);
6
7
namespace SignpostMarv\DaftObject\SchemaOrg\CreativeWork\MediaObject;
8
9
use SignpostMarv\DaftObject\SchemaOrg\CreativeWork\MediaObject as Base;
10
use SignpostMarv\DaftObject\SchemaOrg\DaftObjectTraits;
11
use SignpostMarv\DaftObject\SchemaOrg\Organization\PerformingGroup\MusicGroup;
12
use SignpostMarv\DaftObject\SchemaOrg\Person;
13
use SignpostMarv\DaftObject\SchemaOrg\TypeUtilities;
14
15
/**
16
* @property array<int, Person> $actor
17
* @property array<int, string> $caption
18
* @property array<int, Person> $director
19
* @property array<int, MusicGroup|Person> $musicBy
20
* @property array<int, ImageObject> $thumbnail
21
* @property array<int, string> $transcript
22
* @property array<int, string> $videoFrameSize
23
* @property array<int, string> $videoQuality
24
*/
25
class VideoObject extends Base
26
{
27
    use DaftObjectTraits\HasActor;
28
    use DaftObjectTraits\HasCaption;
29
    use DaftObjectTraits\HasDirector;
30
    use DaftObjectTraits\HasThumbnail;
31
    use DaftObjectTraits\HasTranscript;
32
33
    const SCHEMA_ORG_TYPE = 'VideoObject';
34
35
    const PROPERTIES = [
36
        'actor',
37
        'caption',
38
        'director',
39
        'musicBy',
40
        'thumbnail',
41
        'transcript',
42
        'videoFrameSize',
43
        'videoQuality',
44
    ];
45
46
    const PROPERTIES_WITH_MULTI_TYPED_ARRAYS = [
47
        'actor' => TypeUtilities::MULTI_TYPE_DICT__actor,
48
        'caption' => TypeUtilities::MULTI_TYPE_DICT__caption,
49
        'director' => TypeUtilities::MULTI_TYPE_DICT__director,
50
        'musicBy' => [
51
            MusicGroup::class,
52
            Person::class,
53
        ],
54
        'thumbnail' => TypeUtilities::MULTI_TYPE_DICT__thumbnail,
55
        'transcript' => TypeUtilities::MULTI_TYPE_DICT__transcript,
56
        'videoFrameSize' => [
57
            'string',
58
        ],
59
        'videoQuality' => [
60
            'string',
61
        ],
62
    ];
63
64
    /**
65
    * @return array<int, MusicGroup|Person>
66
    */
67 63
    public function GetMusicBy() : array
68
    {
69
        /**
70
        * @var array<int, MusicGroup|Person>
71
        */
72 63
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
73 63
            'musicBy',
74 63
            $this->RetrievePropertyValueFromData('musicBy'),
75 63
            static::class
76
        );
77
78 63
        return $out;
79
    }
80
81
    /**
82
    * @param array<int, MusicGroup|Person> $value
83
    */
84 1
    public function SetMusicBy(array $value) : void
85
    {
86 1
        $this->NudgePropertyValue(
87 1
            'musicBy',
88 1
            $value
89
        );
90 1
    }
91
92
    /**
93
    * @return array<int, string>
94
    */
95 63
    public function GetVideoFrameSize() : array
96
    {
97
        /**
98
        * @var array<int, string>
99
        */
100 63
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
101 63
            'videoFrameSize',
102 63
            $this->RetrievePropertyValueFromData('videoFrameSize'),
103 63
            static::class
104
        );
105
106 63
        return $out;
107
    }
108
109
    /**
110
    * @param array<int, string> $value
111
    */
112 1
    public function SetVideoFrameSize(array $value) : void
113
    {
114 1
        $this->NudgePropertyValue(
115 1
            'videoFrameSize',
116 1
            $value,
117 1
            true
118
        );
119 1
    }
120
121
    /**
122
    * @return array<int, string>
123
    */
124 63
    public function GetVideoQuality() : array
125
    {
126
        /**
127
        * @var array<int, string>
128
        */
129 63
        $out = TypeUtilities::ExpectRetrievedValueIsArray(
130 63
            'videoQuality',
131 63
            $this->RetrievePropertyValueFromData('videoQuality'),
132 63
            static::class
133
        );
134
135 63
        return $out;
136
    }
137
138
    /**
139
    * @param array<int, string> $value
140
    */
141 1
    public function SetVideoQuality(array $value) : void
142
    {
143 1
        $this->NudgePropertyValue(
144 1
            'videoQuality',
145 1
            $value,
146 1
            true
147
        );
148 1
    }
149
}
150