diff --git a/pgpainless-core/src/main/kotlin/org/pgpainless/algorithm/ImageEncoding.kt b/pgpainless-core/src/main/kotlin/org/pgpainless/algorithm/ImageEncoding.kt new file mode 100644 index 00000000..dbef9f35 --- /dev/null +++ b/pgpainless-core/src/main/kotlin/org/pgpainless/algorithm/ImageEncoding.kt @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: 2024 Paul Schaub +// +// SPDX-License-Identifier: Apache-2.0 + +package org.pgpainless.algorithm + +/** + * Image encoding schemes for user attribute image headers. + * Currently, only [JPEG] is defined. + */ +enum class ImageEncoding(val id: Int) { + + /** JPEG File Interchange Format (JFIF). */ + JPEG(1) + ; + + companion object { + @JvmStatic + fun requireFromId(id: Int): ImageEncoding = + fromId(id) ?: throw NoSuchElementException("No ImageEncoding found for id $id") + + @JvmStatic + fun fromId(id: Int): ImageEncoding? = values().firstOrNull { id == it.id } + } +} diff --git a/pgpainless-core/src/test/kotlin/org/pgpainless/algorithm/ImageEncodingTest.kt b/pgpainless-core/src/test/kotlin/org/pgpainless/algorithm/ImageEncodingTest.kt new file mode 100644 index 00000000..a5352a77 --- /dev/null +++ b/pgpainless-core/src/test/kotlin/org/pgpainless/algorithm/ImageEncodingTest.kt @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 2024 Paul Schaub +// +// SPDX-License-Identifier: Apache-2.0 + +package org.pgpainless.algorithm + +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertNull +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.assertThrows + +class ImageEncodingTest { + + @Test + fun parseJpeg() { + assertEquals(ImageEncoding.JPEG, ImageEncoding.requireFromId(1)) + } + + @Test + fun parseUnknown() { + assertNull(ImageEncoding.fromId(11)) + assertThrows { ImageEncoding.requireFromId(11) } + } +}