Skip to content

Commit 41c1e02

Browse files
Added MediaSuperType to MediaType as a field
1 parent 0a95ec0 commit 41c1e02

File tree

3 files changed

+169
-120
lines changed

3 files changed

+169
-120
lines changed

src/main/kotlin/org/ktypeparser/type/MediaType.kt

Lines changed: 119 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.ktypeparser.type
22

3+
import org.ktypeparser.type.MediaSuperType.*
4+
35
private const val APPLICATION_TYPE = "application"
46
private const val AUDIO_TYPE = "audio"
57
private const val IMAGE_TYPE = "image"
@@ -8,125 +10,134 @@ private const val VIDEO_TYPE = "video"
810

911
private const val WILDCARD = "*"
1012

11-
enum class MediaType(val type: String, val subType: String) {
12-
EMPTY("application","x-empty"),
13+
enum class MediaSuperType {
14+
OTHER,
15+
TEXT,
16+
IMAGE,
17+
AUDIO,
18+
VIDEO,
19+
APPLICATION
20+
}
21+
22+
enum class MediaType(val type: String, val subType: String, val superType: MediaSuperType) {
23+
EMPTY("application", "x-empty", OTHER),
1324

14-
ANY_TYPE(WILDCARD, WILDCARD),
15-
ANY_TEXT_TYPE(TEXT_TYPE, WILDCARD),
16-
ANY_IMAGE_TYPE(IMAGE_TYPE, WILDCARD),
17-
ANY_AUDIO_TYPE(AUDIO_TYPE, WILDCARD),
18-
ANY_VIDEO_TYPE(VIDEO_TYPE, WILDCARD),
19-
ANY_APPLICATION_TYPE(APPLICATION_TYPE, WILDCARD),
25+
ANY_TYPE(WILDCARD, WILDCARD, OTHER),
26+
ANY_TEXT_TYPE(TEXT_TYPE, WILDCARD, TEXT),
27+
ANY_IMAGE_TYPE(IMAGE_TYPE, WILDCARD, IMAGE),
28+
ANY_AUDIO_TYPE(AUDIO_TYPE, WILDCARD, AUDIO),
29+
ANY_VIDEO_TYPE(VIDEO_TYPE, WILDCARD, VIDEO),
30+
ANY_APPLICATION_TYPE(APPLICATION_TYPE, WILDCARD, APPLICATION),
2031

2132
/* TEXT TYPES */
22-
CSS(TEXT_TYPE, "css"),
23-
CSV(TEXT_TYPE, "csv"),
24-
HTML(TEXT_TYPE, "html"),
25-
I_CALENDAR(TEXT_TYPE, "calendar"),
26-
PLAIN_TEXT(TEXT_TYPE, "plain"),
27-
TEXT_JAVASCRIPT(TEXT_TYPE, "javascript"),
28-
TSV(TEXT_TYPE, "tab-separated-values"),
29-
VCARD(TEXT_TYPE, "vcard"),
30-
WML(TEXT_TYPE, "vnd.wap.wml"),
31-
XML(TEXT_TYPE, "xml"),
32-
VTT(TEXT_TYPE, "vtt"),
33+
CSS(TEXT_TYPE, "css", TEXT),
34+
CSV(TEXT_TYPE, "csv", TEXT),
35+
HTML(TEXT_TYPE, "html", TEXT),
36+
I_CALENDAR(TEXT_TYPE, "calendar", TEXT),
37+
PLAIN_TEXT(TEXT_TYPE, "plain", TEXT),
38+
TEXT_JAVASCRIPT(TEXT_TYPE, "javascript", TEXT),
39+
TSV(TEXT_TYPE, "tab-separated-values", TEXT),
40+
VCARD(TEXT_TYPE, "vcard", TEXT),
41+
WML(TEXT_TYPE, "vnd.wap.wml", TEXT),
42+
XML(TEXT_TYPE, "xml", TEXT),
43+
VTT(TEXT_TYPE, "vtt", TEXT),
3344

3445
/* IMAGE TYPES */
35-
BMP(IMAGE_TYPE, "bmp"),
36-
CRW(IMAGE_TYPE, "x-canon-crw"),
37-
GIF(IMAGE_TYPE, "gif"),
38-
ICO(IMAGE_TYPE, "vnd.microsoft.icon"),
39-
JPEG(IMAGE_TYPE, "jpeg"),
40-
PNG(IMAGE_TYPE, "png"),
41-
PSD(IMAGE_TYPE, "vnd.adobe.photoshop"),
42-
SVG(IMAGE_TYPE, "svg+xml"),
43-
TIFF(IMAGE_TYPE, "tiff"),
44-
WEBP(IMAGE_TYPE, "webp"),
45-
HEIF(IMAGE_TYPE, "heif"),
46-
JP2K(IMAGE_TYPE, "jp2"),
46+
BMP(IMAGE_TYPE, "bmp", IMAGE),
47+
CRW(IMAGE_TYPE, "x-canon-crw", IMAGE),
48+
GIF(IMAGE_TYPE, "gif", IMAGE),
49+
ICO(IMAGE_TYPE, "vnd.microsoft.icon", IMAGE),
50+
JPEG(IMAGE_TYPE, "jpeg", IMAGE),
51+
PNG(IMAGE_TYPE, "png", IMAGE),
52+
PSD(IMAGE_TYPE, "vnd.adobe.photoshop", IMAGE),
53+
SVG(IMAGE_TYPE, "svg+xml", IMAGE),
54+
TIFF(IMAGE_TYPE, "tiff", IMAGE),
55+
WEBP(IMAGE_TYPE, "webp", IMAGE),
56+
HEIF(IMAGE_TYPE, "heif", IMAGE),
57+
JP2K(IMAGE_TYPE, "jp2", IMAGE),
4758

4859
/* AUDIO TYPES */
49-
MP4_AUDIO(AUDIO_TYPE, "mp4"),
50-
MPEG_AUDIO(AUDIO_TYPE, "mpeg"),
51-
OGG_AUDIO(AUDIO_TYPE, "ogg"),
52-
WEBM_AUDIO(AUDIO_TYPE, "webm"),
53-
L16_AUDIO(AUDIO_TYPE, "l16"),
54-
L24_AUDIO(AUDIO_TYPE, "l24"),
55-
BASIC_AUDIO(AUDIO_TYPE, "basic"),
56-
AAC_AUDIO(AUDIO_TYPE, "aac"),
57-
VORBIS_AUDIO(AUDIO_TYPE, "vorbis"),
58-
WMA_AUDIO(AUDIO_TYPE, "x-ms-wma"),
59-
WAX_AUDIO(AUDIO_TYPE, "x-ms-wax"),
60-
VND_REAL_AUDIO(AUDIO_TYPE, "vnd.rn-realaudio"),
61-
VND_WAVE_AUDIO(AUDIO_TYPE, "vnd.wave"),
60+
MP4_AUDIO(AUDIO_TYPE, "mp4", AUDIO),
61+
MPEG_AUDIO(AUDIO_TYPE, "mpeg", AUDIO),
62+
OGG_AUDIO(AUDIO_TYPE, "ogg", AUDIO),
63+
WEBM_AUDIO(AUDIO_TYPE, "webm", AUDIO),
64+
L16_AUDIO(AUDIO_TYPE, "l16", AUDIO),
65+
L24_AUDIO(AUDIO_TYPE, "l24", AUDIO),
66+
BASIC_AUDIO(AUDIO_TYPE, "basic", AUDIO),
67+
AAC_AUDIO(AUDIO_TYPE, "aac", AUDIO),
68+
VORBIS_AUDIO(AUDIO_TYPE, "vorbis", AUDIO),
69+
WMA_AUDIO(AUDIO_TYPE, "x-ms-wma", AUDIO),
70+
WAX_AUDIO(AUDIO_TYPE, "x-ms-wax", AUDIO),
71+
VND_REAL_AUDIO(AUDIO_TYPE, "vnd.rn-realaudio", AUDIO),
72+
VND_WAVE_AUDIO(AUDIO_TYPE, "vnd.wave", AUDIO),
6273

6374
/* VIDEO TYPES */
64-
MP4_VIDEO(VIDEO_TYPE, "mp4"),
65-
MPEG_VIDEO(VIDEO_TYPE, "mpeg"),
66-
OGG_VIDEO(VIDEO_TYPE, "ogg"),
67-
QUICKTIME(VIDEO_TYPE, "quicktime"),
68-
WEBM_VIDEO(VIDEO_TYPE, "webm"),
69-
WMV(VIDEO_TYPE, "x-ms-wmv"),
70-
FLV_VIDEO(VIDEO_TYPE, "x-flv"),
71-
THREE_GPP_VIDEO(VIDEO_TYPE, "3gpp"),
72-
THREE_GPP2_VIDEO(VIDEO_TYPE, "3gpp2"),
75+
MP4_VIDEO(VIDEO_TYPE, "mp4", VIDEO),
76+
MPEG_VIDEO(VIDEO_TYPE, "mpeg", VIDEO),
77+
OGG_VIDEO(VIDEO_TYPE, "ogg", VIDEO),
78+
QUICKTIME(VIDEO_TYPE, "quicktime", VIDEO),
79+
WEBM_VIDEO(VIDEO_TYPE, "webm", VIDEO),
80+
WMV(VIDEO_TYPE, "x-ms-wmv", VIDEO),
81+
FLV_VIDEO(VIDEO_TYPE, "x-flv", VIDEO),
82+
THREE_GPP_VIDEO(VIDEO_TYPE, "3gpp", VIDEO),
83+
THREE_GPP2_VIDEO(VIDEO_TYPE, "3gpp2", VIDEO),
7384

7485
/* APPLICATION TYPES */
75-
APPLICATION_XML(APPLICATION_TYPE, "xml"),
76-
ATOM(APPLICATION_TYPE, "atom+xml"),
77-
BZIP2(APPLICATION_TYPE, "x-bzip2"),
78-
DART(APPLICATION_TYPE, "dart"),
79-
APPLE_PASSBOOK(APPLICATION_TYPE, "vnd.apple.pkpass"),
80-
EOT(APPLICATION_TYPE, "vnd.ms-fontobject"),
81-
EPUB(APPLICATION_TYPE, "epub+zip"),
82-
FORM_DATA(APPLICATION_TYPE, "x-www-form-urlencoded"),
83-
KEY_ARCHIVE(APPLICATION_TYPE, "pkcs12"),
84-
APPLICATION_BINARY(APPLICATION_TYPE, "binary"),
85-
GEO_JSON(APPLICATION_TYPE, "geo+json"),
86-
GZIP(APPLICATION_TYPE, "x-gzip"),
87-
HAL_JSON(APPLICATION_TYPE, "hal+json"),
88-
JAVASCRIPT(APPLICATION_TYPE, "javascript"),
89-
JOSE(APPLICATION_TYPE, "jose"),
90-
JOSE_JSON(APPLICATION_TYPE, "jose+json"),
91-
JSON(APPLICATION_TYPE, "json"),
92-
MANIFEST_JSON(APPLICATION_TYPE, "manifest+json"),
93-
KML(APPLICATION_TYPE, "vnd.google-earth.kml+xml"),
94-
KMZ(APPLICATION_TYPE, "vnd.google-earth.kmz"),
95-
MBOX(APPLICATION_TYPE, "mbox"),
96-
APPLE_MOBILE_CONFIG(APPLICATION_TYPE, "x-apple-aspen-config"),
97-
MICROSOFT_EXCEL(APPLICATION_TYPE, "vnd.ms-excel"),
98-
MICROSOFT_OUTLOOK(APPLICATION_TYPE, "vnd.ms-outlook"),
99-
MICROSOFT_POWERPOINT(APPLICATION_TYPE, "vnd.ms-powerpoint"),
100-
MICROSOFT_WORD(APPLICATION_TYPE, "msword"),
101-
MEDIA_PRESENTATION_DESCRIPTION(APPLICATION_TYPE, "dash+xml"),
102-
WASM_APPLICATION(APPLICATION_TYPE, "wasm"),
103-
NACL_APPLICATION(APPLICATION_TYPE, "x-nacl"),
104-
NACL_PORTABLE_APPLICATION(APPLICATION_TYPE, "x-pnacl"),
105-
OCTET_STREAM(APPLICATION_TYPE, "octet-stream"),
106-
OGG_CONTAINER(APPLICATION_TYPE, "ogg"),
107-
OOXML_DOCUMENT(APPLICATION_TYPE, "vnd.openxmlformats-officedocument.wordprocessingml.document"),
108-
OOXML_PRESENTATION(APPLICATION_TYPE, "vnd.openxmlformats-officedocument.presentationml.presentation"),
109-
OOXML_SHEET(APPLICATION_TYPE, "vnd.openxmlformats-officedocument.spreadsheetml.sheet"),
110-
OPENDOCUMENT_GRAPHICS(APPLICATION_TYPE, "vnd.oasis.opendocument.graphics"),
111-
OPENDOCUMENT_PRESENTATION(APPLICATION_TYPE, "vnd.oasis.opendocument.presentation"),
112-
OPENDOCUMENT_SPREADSHEET(APPLICATION_TYPE, "vnd.oasis.opendocument.spreadsheet"),
113-
OPENDOCUMENT_TEXT(APPLICATION_TYPE, "vnd.oasis.opendocument.text"),
114-
OPENSEARCH_DESCRIPTION(APPLICATION_TYPE, "opensearchdescription+xml"),
115-
PDF(APPLICATION_TYPE, "pdf"),
116-
POSTSCRIPT(APPLICATION_TYPE, "postscript"),
117-
PROTOBUF(APPLICATION_TYPE, "protobuf"),
118-
RDF_XML(APPLICATION_TYPE, "rdf+xml"),
119-
RTF(APPLICATION_TYPE, "rtf"),
120-
SFNT(APPLICATION_TYPE, "font-sfnt"),
121-
SHOCKWAVE_FLASH(APPLICATION_TYPE, "x-shockwave-flash"),
122-
SKETCHUP(APPLICATION_TYPE, "vnd.sketchup.skp"),
123-
SOAP_XML(APPLICATION_TYPE, "soap+xml"),
124-
TAR(APPLICATION_TYPE, "x-tar"),
125-
WOFF(APPLICATION_TYPE, "font-woff"),
126-
WOFF2(APPLICATION_TYPE, "font-woff2"),
127-
XHTML(APPLICATION_TYPE, "xhtml+xml"),
128-
XRD(APPLICATION_TYPE, "xrd+xml"),
129-
ZIP(APPLICATION_TYPE, "zip")
86+
APPLICATION_XML(APPLICATION_TYPE, "xml", APPLICATION),
87+
ATOM(APPLICATION_TYPE, "atom+xml", APPLICATION),
88+
BZIP2(APPLICATION_TYPE, "x-bzip2", APPLICATION),
89+
DART(APPLICATION_TYPE, "dart", APPLICATION),
90+
APPLE_PASSBOOK(APPLICATION_TYPE, "vnd.apple.pkpass", APPLICATION),
91+
EOT(APPLICATION_TYPE, "vnd.ms-fontobject", APPLICATION),
92+
EPUB(APPLICATION_TYPE, "epub+zip", APPLICATION),
93+
FORM_DATA(APPLICATION_TYPE, "x-www-form-urlencoded", APPLICATION),
94+
KEY_ARCHIVE(APPLICATION_TYPE, "pkcs12", APPLICATION),
95+
APPLICATION_BINARY(APPLICATION_TYPE, "binary", APPLICATION),
96+
GEO_JSON(APPLICATION_TYPE, "geo+json", APPLICATION),
97+
GZIP(APPLICATION_TYPE, "x-gzip", APPLICATION),
98+
HAL_JSON(APPLICATION_TYPE, "hal+json", APPLICATION),
99+
JAVASCRIPT(APPLICATION_TYPE, "javascript", APPLICATION),
100+
JOSE(APPLICATION_TYPE, "jose", APPLICATION),
101+
JOSE_JSON(APPLICATION_TYPE, "jose+json", APPLICATION),
102+
JSON(APPLICATION_TYPE, "json", APPLICATION),
103+
MANIFEST_JSON(APPLICATION_TYPE, "manifest+json", APPLICATION),
104+
KML(APPLICATION_TYPE, "vnd.google-earth.kml+xml", APPLICATION),
105+
KMZ(APPLICATION_TYPE, "vnd.google-earth.kmz", APPLICATION),
106+
MBOX(APPLICATION_TYPE, "mbox", APPLICATION),
107+
APPLE_MOBILE_CONFIG(APPLICATION_TYPE, "x-apple-aspen-config", APPLICATION),
108+
MICROSOFT_EXCEL(APPLICATION_TYPE, "vnd.ms-excel", APPLICATION),
109+
MICROSOFT_OUTLOOK(APPLICATION_TYPE, "vnd.ms-outlook", APPLICATION),
110+
MICROSOFT_POWERPOINT(APPLICATION_TYPE, "vnd.ms-powerpoint", APPLICATION),
111+
MICROSOFT_WORD(APPLICATION_TYPE, "msword", APPLICATION),
112+
MEDIA_PRESENTATION_DESCRIPTION(APPLICATION_TYPE, "dash+xml", APPLICATION),
113+
WASM_APPLICATION(APPLICATION_TYPE, "wasm", APPLICATION),
114+
NACL_APPLICATION(APPLICATION_TYPE, "x-nacl", APPLICATION),
115+
NACL_PORTABLE_APPLICATION(APPLICATION_TYPE, "x-pnacl", APPLICATION),
116+
OCTET_STREAM(APPLICATION_TYPE, "octet-stream", APPLICATION),
117+
OGG_CONTAINER(APPLICATION_TYPE, "ogg", APPLICATION),
118+
OOXML_DOCUMENT(APPLICATION_TYPE, "vnd.openxmlformats-officedocument.wordprocessingml.document", APPLICATION),
119+
OOXML_PRESENTATION(APPLICATION_TYPE, "vnd.openxmlformats-officedocument.presentationml.presentation", APPLICATION),
120+
OOXML_SHEET(APPLICATION_TYPE, "vnd.openxmlformats-officedocument.spreadsheetml.sheet", APPLICATION),
121+
OPENDOCUMENT_GRAPHICS(APPLICATION_TYPE, "vnd.oasis.opendocument.graphics", APPLICATION),
122+
OPENDOCUMENT_PRESENTATION(APPLICATION_TYPE, "vnd.oasis.opendocument.presentation", APPLICATION),
123+
OPENDOCUMENT_SPREADSHEET(APPLICATION_TYPE, "vnd.oasis.opendocument.spreadsheet", APPLICATION),
124+
OPENDOCUMENT_TEXT(APPLICATION_TYPE, "vnd.oasis.opendocument.text", APPLICATION),
125+
OPENSEARCH_DESCRIPTION(APPLICATION_TYPE, "opensearchdescription+xml", APPLICATION),
126+
PDF(APPLICATION_TYPE, "pdf", APPLICATION),
127+
POSTSCRIPT(APPLICATION_TYPE, "postscript", APPLICATION),
128+
PROTOBUF(APPLICATION_TYPE, "protobuf", APPLICATION),
129+
RDF_XML(APPLICATION_TYPE, "rdf+xml", APPLICATION),
130+
RTF(APPLICATION_TYPE, "rtf", APPLICATION),
131+
SFNT(APPLICATION_TYPE, "font-sfnt", APPLICATION),
132+
SHOCKWAVE_FLASH(APPLICATION_TYPE, "x-shockwave-flash", APPLICATION),
133+
SKETCHUP(APPLICATION_TYPE, "vnd.sketchup.skp", APPLICATION),
134+
SOAP_XML(APPLICATION_TYPE, "soap+xml", APPLICATION),
135+
TAR(APPLICATION_TYPE, "x-tar", APPLICATION),
136+
WOFF(APPLICATION_TYPE, "font-woff", APPLICATION),
137+
WOFF2(APPLICATION_TYPE, "font-woff2", APPLICATION),
138+
XHTML(APPLICATION_TYPE, "xhtml+xml", APPLICATION),
139+
XRD(APPLICATION_TYPE, "xrd+xml", APPLICATION),
140+
ZIP(APPLICATION_TYPE, "zip", APPLICATION)
130141
}
131142

132143
private val nameToMediaTypeMap: Map<String, MediaType> by lazy {

src/test/kotlin/org/ktypeparser/MediaTypeAsyncDetectorTest.kt

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package org.ktypeparser
33
import kotlinx.coroutines.runBlocking
44
import org.junit.jupiter.api.Assertions
55
import org.junit.jupiter.api.Test
6+
import org.ktypeparser.type.MediaSuperType
67
import org.ktypeparser.type.MediaType
78
import java.io.ByteArrayInputStream
89
import java.io.File
@@ -17,7 +18,9 @@ internal class MediaTypeAsyncDetectorTest {
1718

1819
val mediaType = detectAsync(pdfFile)
1920

20-
Assertions.assertEquals(MediaType.PDF, mediaType.await())
21+
val mediaTypeResult = mediaType.await()
22+
Assertions.assertEquals(MediaType.PDF, mediaTypeResult)
23+
Assertions.assertEquals(MediaSuperType.APPLICATION, mediaTypeResult?.superType)
2124
}
2225

2326
@Test
@@ -27,7 +30,9 @@ internal class MediaTypeAsyncDetectorTest {
2730

2831
val mediaType = detectAsync(bytes)
2932

30-
Assertions.assertEquals(MediaType.PDF, mediaType.await())
33+
val mediaTypeResult = mediaType.await()
34+
Assertions.assertEquals(MediaType.PDF, mediaTypeResult)
35+
Assertions.assertEquals(MediaSuperType.APPLICATION, mediaTypeResult?.superType)
3136
}
3237

3338
@Test
@@ -36,7 +41,9 @@ internal class MediaTypeAsyncDetectorTest {
3641

3742
val mediaType = detectAsync(pdfFile.inputStream())
3843

39-
Assertions.assertEquals(MediaType.PDF, mediaType.await())
44+
val mediaTypeResult = mediaType.await()
45+
Assertions.assertEquals(MediaType.PDF, mediaTypeResult)
46+
Assertions.assertEquals(MediaSuperType.APPLICATION, mediaTypeResult?.superType)
4047
}
4148

4249
@Test
@@ -45,7 +52,9 @@ internal class MediaTypeAsyncDetectorTest {
4552

4653
val mediaType = detectAsync(jpgFile)
4754

48-
Assertions.assertEquals(MediaType.JPEG, mediaType.await())
55+
val mediaTypeResult = mediaType.await()
56+
Assertions.assertEquals(MediaType.JPEG, mediaTypeResult)
57+
Assertions.assertEquals(MediaSuperType.IMAGE, mediaTypeResult?.superType)
4958
}
5059

5160
@Test
@@ -55,7 +64,9 @@ internal class MediaTypeAsyncDetectorTest {
5564

5665
val mediaType = detectAsync(bytes)
5766

58-
Assertions.assertEquals(MediaType.JPEG, mediaType.await())
67+
val mediaTypeResult = mediaType.await()
68+
Assertions.assertEquals(MediaType.JPEG, mediaTypeResult)
69+
Assertions.assertEquals(MediaSuperType.IMAGE, mediaTypeResult?.superType)
5970
}
6071

6172
@Test
@@ -64,7 +75,9 @@ internal class MediaTypeAsyncDetectorTest {
6475

6576
val mediaType = detectAsync(jpgFile.inputStream())
6677

67-
Assertions.assertEquals(MediaType.JPEG, mediaType.await())
78+
val mediaTypeResult = mediaType.await()
79+
Assertions.assertEquals(MediaType.JPEG, mediaTypeResult)
80+
Assertions.assertEquals(MediaSuperType.IMAGE, mediaTypeResult?.superType)
6881
}
6982

7083
@Test
@@ -91,7 +104,9 @@ internal class MediaTypeAsyncDetectorTest {
91104

92105
val mediaType = pdfFile.detectMediaTypeAsync()
93106

94-
Assertions.assertEquals(MediaType.PDF, mediaType.await())
107+
val mediaTypeResult = mediaType.await()
108+
Assertions.assertEquals(MediaType.PDF, mediaTypeResult)
109+
Assertions.assertEquals(MediaSuperType.APPLICATION, mediaTypeResult?.superType)
95110
}
96111

97112
@Test
@@ -101,7 +116,9 @@ internal class MediaTypeAsyncDetectorTest {
101116

102117
val mediaType = bytes.detectMediaTypeAsync()
103118

104-
Assertions.assertEquals(MediaType.PDF, mediaType.await())
119+
val mediaTypeResult = mediaType.await()
120+
Assertions.assertEquals(MediaType.PDF, mediaTypeResult)
121+
Assertions.assertEquals(MediaSuperType.APPLICATION, mediaTypeResult?.superType)
105122
}
106123

107124
@Test
@@ -110,7 +127,9 @@ internal class MediaTypeAsyncDetectorTest {
110127

111128
val mediaType = pdfFile.inputStream().detectMediaTypeAsync()
112129

113-
Assertions.assertEquals(MediaType.PDF, mediaType.await())
130+
val mediaTypeResult = mediaType.await()
131+
Assertions.assertEquals(MediaType.PDF, mediaTypeResult)
132+
Assertions.assertEquals(MediaSuperType.APPLICATION, mediaTypeResult?.superType)
114133
}
115134

116135
@Test
@@ -119,7 +138,9 @@ internal class MediaTypeAsyncDetectorTest {
119138

120139
val mediaType = jpgFile.detectMediaTypeAsync()
121140

122-
Assertions.assertEquals(MediaType.JPEG, mediaType.await())
141+
val mediaTypeResult = mediaType.await()
142+
Assertions.assertEquals(MediaType.JPEG, mediaTypeResult)
143+
Assertions.assertEquals(MediaSuperType.IMAGE, mediaTypeResult?.superType)
123144
}
124145

125146
@Test
@@ -129,7 +150,9 @@ internal class MediaTypeAsyncDetectorTest {
129150

130151
val mediaType = bytes.detectMediaTypeAsync()
131152

132-
Assertions.assertEquals(MediaType.JPEG, mediaType.await())
153+
val mediaTypeResult = mediaType.await()
154+
Assertions.assertEquals(MediaType.JPEG, mediaTypeResult)
155+
Assertions.assertEquals(MediaSuperType.IMAGE, mediaTypeResult?.superType)
133156
}
134157

135158
@Test
@@ -138,7 +161,9 @@ internal class MediaTypeAsyncDetectorTest {
138161

139162
val mediaType = jpgFile.inputStream().detectMediaTypeAsync()
140163

141-
Assertions.assertEquals(MediaType.JPEG, mediaType.await())
164+
val mediaTypeResult = mediaType.await()
165+
Assertions.assertEquals(MediaType.JPEG, mediaTypeResult)
166+
Assertions.assertEquals(MediaSuperType.IMAGE, mediaTypeResult?.superType)
142167
}
143168

144169
@Test

0 commit comments

Comments
 (0)