DDSImageWriteParamTest.java

package com.twelvemonkeys.imageio.plugins.dds;

import static org.junit.jupiter.api.Assertions.*;

import java.util.Arrays;

import javax.imageio.ImageWriteParam;

import org.junit.jupiter.api.Test;

class DDSImageWriteParamTest {
    @Test
    void defaultParam() {
        DDSImageWriteParam param = new DDSImageWriteParam();
        assertEquals(DDSImageWriteParam.DEFAULT_TYPE, param.type());
    }

    @Test
    void compressionTypes() {
        DDSImageWriteParam param = new DDSImageWriteParam();

        String[] compressionTypes = param.getCompressionTypes();
        DDSType[] values = Arrays.stream(DDSType.values())
            .filter(DDSType::isBlockCompression)
            .toArray(DDSType[]::new);

        assertEquals(values.length + 1, compressionTypes.length);

        for (int i = 0; i < values.length; i++) {
            DDSType type = values[i];
            assertEquals(type.name(), compressionTypes[i + 1]);
        }

        assertEquals("None", compressionTypes[0]);
    }

    @Test
    void setCompression() {
        DDSImageWriteParam param = new DDSImageWriteParam();

        param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);

        String[] compressionTypes = param.getCompressionTypes();
        for (String compressionType : compressionTypes) {
            param.setCompressionType(compressionType);
            assertEquals(compressionType, param.getCompressionType());

            if (!"None".equals(compressionType)) {
                DDSType type = DDSType.valueOf(compressionType);

                assertEquals(type, param.type());
            }
        }
    }
}