package com.cf.imes.framework.common.enums;

import org.junit.jupiter.api.Test;

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

/**
 * {@link CommonStatusEnum} 的单元测试
 */
class CommonStatusEnumTest {

    @Test
    void testIsEnable() {
        // 测试启用状态
        assertTrue(CommonStatusEnum.isEnable(0));
        
        // 测试非启用状态
        assertFalse(CommonStatusEnum.isEnable(1));
        
        // 测试null值
        assertFalse(CommonStatusEnum.isEnable(null));
    }

    @Test
    void testIsDisable() {
        // 测试禁用状态
        assertTrue(CommonStatusEnum.isDisable(1));
        
        // 测试非禁用状态
        assertFalse(CommonStatusEnum.isDisable(0));
        
        // 测试null值
        assertFalse(CommonStatusEnum.isDisable(null));
    }

    @Test
    void testEnumValues() {
        // 测试枚举值的基本属性
        assertEquals(0, CommonStatusEnum.ENABLE.getStatus());
        assertEquals("开启", CommonStatusEnum.ENABLE.getName());
        
        assertEquals(1, CommonStatusEnum.DISABLE.getStatus());
        assertEquals("关闭", CommonStatusEnum.DISABLE.getName());
    }

    @Test
    void testArrayMethod() {
        // 测试array()方法
        int[] arrays = CommonStatusEnum.ENABLE.array();
        assertEquals(2, arrays.length);
        assertTrue(contains(arrays, 0)); // ENABLE
        assertTrue(contains(arrays, 1)); // DISABLE
    }

    @Test
    void testArraysField() {
        // 测试ARRAYS静态字段包含所有枚举值的status
        int[] arrays = CommonStatusEnum.ARRAYS;
        assertEquals(2, arrays.length);
        assertTrue(contains(arrays, 0)); // ENABLE
        assertTrue(contains(arrays, 1)); // DISABLE
    }

    private boolean contains(int[] array, int value) {
        for (int i : array) {
            if (i == value) {
                return true;
            }
        }
        return false;
    }
}