1+ import { suite , test } from "@testdeck/mocha" ;
2+ import { assert } from "chai" ;
3+
4+ import { ByteVector , StringType } from "../../src/byteVector" ;
5+ import { Id3v2FrameHeader } from "../../src/id3v2/frames/frameHeader" ;
6+ import { Testers } from "../utilities/testers" ;
7+ import { FrameIdentifiers } from "../../src/id3v2/frameIdentifiers" ;
8+
9+ @suite class FrameHeaderTests {
10+ @test
11+ public fromData_invalid ( ) {
12+ // Arrange
13+ const testBytes = ByteVector . empty ( ) ;
14+
15+ // Act / Assert
16+ Testers . testTruthy ( ( v : ByteVector ) => Id3v2FrameHeader . fromData ( v , 3 ) ) ;
17+ Testers . testUint ( ( v ) => Id3v2FrameHeader . fromData ( testBytes , v ) ) ;
18+ assert . throws ( ( ) => Id3v2FrameHeader . fromData ( testBytes , 1 ) ) ;
19+ assert . throws ( ( ) => Id3v2FrameHeader . fromData ( testBytes , 5 ) ) ;
20+ }
21+
22+ @test
23+ public fromData_v2_tooShort ( ) {
24+ // Arrange
25+ const testBytes = ByteVector . fromSize ( 2 ) ;
26+
27+ // Act / Assert
28+ assert . throws ( ( ) => Id3v2FrameHeader . fromData ( testBytes , 2 ) ) ;
29+ }
30+
31+ @test
32+ public fromData_v2_standardIdentifier ( ) {
33+ // Arrange
34+ const testBytes = ByteVector . fromString ( "TT1" , StringType . Latin1 ) ;
35+
36+ // Act
37+ const header = Id3v2FrameHeader . fromData ( testBytes , 2 ) ;
38+
39+ // Assert
40+ assert . isOk ( header ) ;
41+ assert . strictEqual ( header . frameId , FrameIdentifiers [ 'TIT1' ] ) ;
42+ assert . strictEqual ( header . flags , 0 ) ;
43+ assert . strictEqual ( header . frameSize , 0 ) ;
44+ }
45+
46+ @test
47+ public fromData_v2_nonstandardIdentifier ( ) {
48+ // Arrange
49+ const testBytes = ByteVector . fromString ( "NON" , StringType . Latin1 ) ;
50+
51+ // Act
52+ const header = Id3v2FrameHeader . fromData ( testBytes , 2 ) ;
53+
54+ // Assert
55+ assert . isOk ( header ) ;
56+ Testers . bvEqual ( header . frameId . render ( 2 ) , testBytes ) ;
57+ assert . strictEqual ( header . flags , 0 ) ;
58+ assert . strictEqual ( header . frameSize , 0 ) ;
59+ }
60+
61+ @test
62+ public fromData_v3_tooShort ( ) {
63+ // Arrange
64+ const testBytes = ByteVector . fromSize ( 3 ) ;
65+
66+ // Act / Assert
67+ assert . throws ( ( ) => Id3v2FrameHeader . fromData ( testBytes , 3 ) ) ;
68+ }
69+
70+ @test
71+ public fromData_v3_standardIdentifier ( ) {
72+ // Arrange
73+ const testBytes = ByteVector . fromString ( "TIT1" , StringType . Latin1 ) ;
74+
75+ // Act
76+ const header = Id3v2FrameHeader . fromData ( testBytes , 3 ) ;
77+
78+ // Assert
79+ assert . isOk ( header ) ;
80+ assert . strictEqual ( header . frameId , FrameIdentifiers [ 'TIT1' ] ) ;
81+ assert . strictEqual ( header . flags , 0 ) ;
82+ assert . strictEqual ( header . frameSize , 0 ) ;
83+ }
84+
85+ @test
86+ public fromData_v3_nonstandardIdentifier ( ) {
87+ // Arrange
88+ const testBytes = ByteVector . fromString ( "NON1" , StringType . Latin1 ) ;
89+
90+ // Act
91+ const header = Id3v2FrameHeader . fromData ( testBytes , 3 ) ;
92+
93+ // Assert
94+ assert . isOk ( header ) ;
95+ Testers . bvEqual ( header . frameId . render ( 3 ) , testBytes ) ;
96+ assert . strictEqual ( header . flags , 0 ) ;
97+ assert . strictEqual ( header . frameSize , 0 ) ;
98+ }
99+
100+ @test
101+ public fromData_v4_tooShort ( ) {
102+ // Arrange
103+ const testBytes = ByteVector . fromSize ( 3 ) ;
104+
105+ // Act / Assert
106+ assert . throws ( ( ) => Id3v2FrameHeader . fromData ( testBytes , 4 ) ) ;
107+ }
108+
109+ @test
110+ public fromData_v4_standardIdentifier ( ) {
111+ // Arrange
112+ const testBytes = ByteVector . fromString ( "TIT1" , StringType . Latin1 ) ;
113+
114+ // Act
115+ const header = Id3v2FrameHeader . fromData ( testBytes , 4 ) ;
116+
117+ // Assert
118+ assert . isOk ( header ) ;
119+ assert . strictEqual ( header . frameId , FrameIdentifiers [ 'TIT1' ] ) ;
120+ assert . strictEqual ( header . flags , 0 ) ;
121+ assert . strictEqual ( header . frameSize , 0 ) ;
122+ }
123+
124+ @test
125+ public fromData_v4_nonstandardIdentifier ( ) {
126+ // Arrange
127+ const testBytes = ByteVector . fromString ( "NON1" , StringType . Latin1 ) ;
128+
129+ // Act
130+ const header = Id3v2FrameHeader . fromData ( testBytes , 4 ) ;
131+
132+ // Assert
133+ assert . isOk ( header ) ;
134+ Testers . bvEqual ( header . frameId . render ( 4 ) , testBytes ) ;
135+ assert . strictEqual ( header . flags , 0 ) ;
136+ assert . strictEqual ( header . frameSize , 0 ) ;
137+ }
138+ }
0 commit comments