This is an automated email from the ASF dual-hosted git repository.

delei pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fesod.git


The following commit(s) were added to refs/heads/main by this push:
     new e120395a test:  expand unit coverage for scalar converters in 
ConverterTest (#999)
e120395a is described below

commit e120395a796232781739d03edd50cd7022d7b01c
Author: Lance <[email protected]>
AuthorDate: Sun Aug 16 18:24:14 2026 +0800

    test:  expand unit coverage for scalar converters in ConverterTest (#999)
    
    * expand unit coverage for scalar converters in ConverterTest
    
    Signed-off-by: lance <[email protected]>
    
    * test: make ConverterTest class public
    
    ---------
    
    Signed-off-by: lance <[email protected]>
    Co-authored-by: ian zhang <[email protected]>
    Co-authored-by: DeleiGuo <[email protected]>
---
 .../fesod/sheet/converter/ConverterTest.java       | 338 ++++++++++++++++++++-
 1 file changed, 329 insertions(+), 9 deletions(-)

diff --git 
a/fesod-sheet/src/test/java/org/apache/fesod/sheet/converter/ConverterTest.java 
b/fesod-sheet/src/test/java/org/apache/fesod/sheet/converter/ConverterTest.java
index 85c77088..e35527d4 100644
--- 
a/fesod-sheet/src/test/java/org/apache/fesod/sheet/converter/ConverterTest.java
+++ 
b/fesod-sheet/src/test/java/org/apache/fesod/sheet/converter/ConverterTest.java
@@ -25,28 +25,348 @@
 
 package org.apache.fesod.sheet.converter;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.stream.Stream;
+import org.apache.fesod.sheet.converters.Converter;
 import org.apache.fesod.sheet.converters.WriteConverterContext;
+import org.apache.fesod.sheet.converters.bigdecimal.BigDecimalBooleanConverter;
+import org.apache.fesod.sheet.converters.bigdecimal.BigDecimalNumberConverter;
+import org.apache.fesod.sheet.converters.bigdecimal.BigDecimalStringConverter;
+import org.apache.fesod.sheet.converters.biginteger.BigIntegerBooleanConverter;
+import org.apache.fesod.sheet.converters.biginteger.BigIntegerNumberConverter;
+import org.apache.fesod.sheet.converters.biginteger.BigIntegerStringConverter;
+import 
org.apache.fesod.sheet.converters.booleanconverter.BooleanBooleanConverter;
+import 
org.apache.fesod.sheet.converters.booleanconverter.BooleanNumberConverter;
+import 
org.apache.fesod.sheet.converters.booleanconverter.BooleanStringConverter;
+import org.apache.fesod.sheet.converters.byteconverter.ByteBooleanConverter;
+import org.apache.fesod.sheet.converters.byteconverter.ByteNumberConverter;
+import org.apache.fesod.sheet.converters.byteconverter.ByteStringConverter;
+import 
org.apache.fesod.sheet.converters.doubleconverter.DoubleBooleanConverter;
+import org.apache.fesod.sheet.converters.doubleconverter.DoubleNumberConverter;
+import org.apache.fesod.sheet.converters.doubleconverter.DoubleStringConverter;
+import org.apache.fesod.sheet.converters.floatconverter.FloatBooleanConverter;
 import org.apache.fesod.sheet.converters.floatconverter.FloatNumberConverter;
+import org.apache.fesod.sheet.converters.floatconverter.FloatStringConverter;
+import org.apache.fesod.sheet.converters.integer.IntegerBooleanConverter;
+import org.apache.fesod.sheet.converters.integer.IntegerNumberConverter;
+import org.apache.fesod.sheet.converters.integer.IntegerStringConverter;
+import org.apache.fesod.sheet.converters.longconverter.LongBooleanConverter;
+import org.apache.fesod.sheet.converters.longconverter.LongNumberConverter;
+import org.apache.fesod.sheet.converters.longconverter.LongStringConverter;
+import org.apache.fesod.sheet.converters.shortconverter.ShortBooleanConverter;
+import org.apache.fesod.sheet.converters.shortconverter.ShortNumberConverter;
+import org.apache.fesod.sheet.converters.shortconverter.ShortStringConverter;
+import org.apache.fesod.sheet.converters.string.StringBooleanConverter;
+import org.apache.fesod.sheet.converters.string.StringErrorConverter;
+import org.apache.fesod.sheet.converters.string.StringNumberConverter;
+import org.apache.fesod.sheet.converters.string.StringStringConverter;
+import org.apache.fesod.sheet.enums.CellDataTypeEnum;
+import org.apache.fesod.sheet.metadata.GlobalConfiguration;
+import org.apache.fesod.sheet.metadata.data.ReadCellData;
 import org.apache.fesod.sheet.metadata.data.WriteCellData;
 import org.apache.fesod.sheet.testkit.Tags;
-import org.apache.fesod.sheet.testkit.base.AbstractExcelTest;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
 
 /**
  * Unit tests for individual converter implementations.
  */
-@Tag(Tags.ROUND_TRIP)
-public class ConverterTest extends AbstractExcelTest {
+@Tag(Tags.UNIT)
+public class ConverterTest {
+
+    private static final GlobalConfiguration GLOBAL_CONFIGURATION = new 
GlobalConfiguration();
+
+    @ParameterizedTest
+    @MethodSource("supportKeysProvider")
+    void supportKeys(Converter<?> converter, Class<?> javaType, 
CellDataTypeEnum excelType) {
+        assertEquals(javaType, converter.supportJavaTypeKey());
+        assertEquals(excelType, converter.supportExcelTypeKey());
+    }
+
+    static Stream<Arguments> supportKeysProvider() {
+        return Stream.of(
+                Arguments.of(new BooleanBooleanConverter(), Boolean.class, 
CellDataTypeEnum.BOOLEAN),
+                Arguments.of(new BooleanNumberConverter(), Boolean.class, 
CellDataTypeEnum.NUMBER),
+                Arguments.of(new BooleanStringConverter(), Boolean.class, 
CellDataTypeEnum.STRING),
+                Arguments.of(new IntegerBooleanConverter(), Integer.class, 
CellDataTypeEnum.BOOLEAN),
+                Arguments.of(new IntegerNumberConverter(), Integer.class, 
CellDataTypeEnum.NUMBER),
+                Arguments.of(new IntegerStringConverter(), Integer.class, 
CellDataTypeEnum.STRING),
+                Arguments.of(new LongBooleanConverter(), Long.class, 
CellDataTypeEnum.BOOLEAN),
+                Arguments.of(new LongNumberConverter(), Long.class, 
CellDataTypeEnum.NUMBER),
+                Arguments.of(new LongStringConverter(), Long.class, 
CellDataTypeEnum.STRING),
+                Arguments.of(new ShortBooleanConverter(), Short.class, 
CellDataTypeEnum.BOOLEAN),
+                Arguments.of(new ShortNumberConverter(), Short.class, 
CellDataTypeEnum.NUMBER),
+                Arguments.of(new ShortStringConverter(), Short.class, 
CellDataTypeEnum.STRING),
+                Arguments.of(new ByteBooleanConverter(), Byte.class, 
CellDataTypeEnum.BOOLEAN),
+                Arguments.of(new ByteNumberConverter(), Byte.class, 
CellDataTypeEnum.NUMBER),
+                Arguments.of(new ByteStringConverter(), Byte.class, 
CellDataTypeEnum.STRING),
+                Arguments.of(new FloatBooleanConverter(), Float.class, 
CellDataTypeEnum.BOOLEAN),
+                Arguments.of(new FloatNumberConverter(), Float.class, 
CellDataTypeEnum.NUMBER),
+                Arguments.of(new FloatStringConverter(), Float.class, 
CellDataTypeEnum.STRING),
+                Arguments.of(new DoubleBooleanConverter(), Double.class, 
CellDataTypeEnum.BOOLEAN),
+                Arguments.of(new DoubleNumberConverter(), Double.class, 
CellDataTypeEnum.NUMBER),
+                Arguments.of(new DoubleStringConverter(), Double.class, 
CellDataTypeEnum.STRING),
+                Arguments.of(new BigDecimalBooleanConverter(), 
BigDecimal.class, CellDataTypeEnum.BOOLEAN),
+                Arguments.of(new BigDecimalNumberConverter(), 
BigDecimal.class, CellDataTypeEnum.NUMBER),
+                Arguments.of(new BigDecimalStringConverter(), 
BigDecimal.class, CellDataTypeEnum.STRING),
+                Arguments.of(new BigIntegerBooleanConverter(), 
BigInteger.class, CellDataTypeEnum.BOOLEAN),
+                Arguments.of(new BigIntegerNumberConverter(), 
BigInteger.class, CellDataTypeEnum.NUMBER),
+                Arguments.of(new BigIntegerStringConverter(), 
BigInteger.class, CellDataTypeEnum.STRING),
+                Arguments.of(new StringStringConverter(), String.class, 
CellDataTypeEnum.STRING),
+                Arguments.of(new StringBooleanConverter(), String.class, 
CellDataTypeEnum.BOOLEAN),
+                Arguments.of(new StringNumberConverter(), String.class, 
CellDataTypeEnum.NUMBER),
+                Arguments.of(new StringErrorConverter(), String.class, 
CellDataTypeEnum.ERROR));
+    }
+
+    @Test
+    void booleanBooleanConverter() throws Exception {
+        BooleanBooleanConverter converter = new BooleanBooleanConverter();
+
+        Assertions.assertTrue(toJava(converter, new 
ReadCellData<>(Boolean.TRUE)));
+        Assertions.assertFalse(toJava(converter, new 
ReadCellData<>(Boolean.FALSE)));
+
+        Assertions.assertTrue(toExcel(converter, 
Boolean.TRUE).getBooleanValue());
+        Assertions.assertFalse(toExcel(converter, 
Boolean.FALSE).getBooleanValue());
+    }
+
+    @Test
+    void booleanNumberConverter() throws Exception {
+        BooleanNumberConverter converter = new BooleanNumberConverter();
+
+        Assertions.assertTrue(toJava(converter, new 
ReadCellData<>(BigDecimal.ONE)));
+        Assertions.assertFalse(toJava(converter, new 
ReadCellData<>(BigDecimal.ZERO)));
+        Assertions.assertFalse(toJava(converter, new ReadCellData<>(new 
BigDecimal("2"))));
+
+        assertEquals(0, toExcel(converter, 
Boolean.TRUE).getNumberValue().compareTo(BigDecimal.ONE));
+        assertEquals(0, toExcel(converter, 
Boolean.FALSE).getNumberValue().compareTo(BigDecimal.ZERO));
+    }
+
+    @Test
+    void booleanStringConverter() throws Exception {
+        BooleanStringConverter converter = new BooleanStringConverter();
+
+        Assertions.assertTrue(toJava(converter, new ReadCellData<>("true")));
+        Assertions.assertTrue(toJava(converter, new ReadCellData<>("TRUE")));
+        Assertions.assertFalse(toJava(converter, new ReadCellData<>("false")));
+        Assertions.assertFalse(toJava(converter, new ReadCellData<>("other")));
+
+        assertEquals("true", toExcel(converter, 
Boolean.TRUE).getStringValue());
+        assertEquals("false", toExcel(converter, 
Boolean.FALSE).getStringValue());
+    }
+
+    @Test
+    void integerConverters() throws Exception {
+        IntegerBooleanConverter booleanConverter = new 
IntegerBooleanConverter();
+        assertEquals(1, toJava(booleanConverter, new 
ReadCellData<>(Boolean.TRUE)));
+        assertEquals(0, toJava(booleanConverter, new 
ReadCellData<>(Boolean.FALSE)));
+        Assertions.assertTrue(toExcel(booleanConverter, 1).getBooleanValue());
+        Assertions.assertFalse(toExcel(booleanConverter, 0).getBooleanValue());
+        Assertions.assertFalse(toExcel(booleanConverter, 2).getBooleanValue());
+
+        IntegerNumberConverter numberConverter = new IntegerNumberConverter();
+        assertEquals(42, toJava(numberConverter, new ReadCellData<>(new 
BigDecimal("42.9"))));
+        WriteConverterContext<Integer> writeContext = new 
WriteConverterContext<>();
+        writeContext.setValue(42);
+        WriteCellData<?> numberCell = 
numberConverter.convertToExcelData(writeContext);
+        assertEquals(0, numberCell.getNumberValue().compareTo(new 
BigDecimal("42")));
+
+        IntegerStringConverter stringConverter = new IntegerStringConverter();
+        assertEquals(123, toJava(stringConverter, new ReadCellData<>("123")));
+        assertEquals("456", toExcel(stringConverter, 456).getStringValue());
+    }
+
+    @Test
+    void longConverters() throws Exception {
+        LongBooleanConverter booleanConverter = new LongBooleanConverter();
+        assertEquals(1L, toJava(booleanConverter, new 
ReadCellData<>(Boolean.TRUE)));
+        assertEquals(0L, toJava(booleanConverter, new 
ReadCellData<>(Boolean.FALSE)));
+        Assertions.assertTrue(toExcel(booleanConverter, 1L).getBooleanValue());
+        Assertions.assertFalse(toExcel(booleanConverter, 
0L).getBooleanValue());
+
+        LongNumberConverter numberConverter = new LongNumberConverter();
+        assertEquals(99L, toJava(numberConverter, new ReadCellData<>(new 
BigDecimal("99.1"))));
+        WriteConverterContext<Long> writeContext = new 
WriteConverterContext<>();
+        writeContext.setValue(99L);
+        assertEquals(
+                0,
+                numberConverter
+                        .convertToExcelData(writeContext)
+                        .getNumberValue()
+                        .compareTo(new BigDecimal("99")));
+
+        LongStringConverter stringConverter = new LongStringConverter();
+        assertEquals(1000L, toJava(stringConverter, new 
ReadCellData<>("1000")));
+        assertEquals("1000", toExcel(stringConverter, 1000L).getStringValue());
+    }
+
+    @Test
+    void shortConverters() throws Exception {
+        ShortBooleanConverter booleanConverter = new ShortBooleanConverter();
+        assertEquals((short) 1, toJava(booleanConverter, new 
ReadCellData<>(Boolean.TRUE)));
+        assertEquals((short) 0, toJava(booleanConverter, new 
ReadCellData<>(Boolean.FALSE)));
+        Assertions.assertTrue(toExcel(booleanConverter, (short) 
1).getBooleanValue());
+        Assertions.assertFalse(toExcel(booleanConverter, (short) 
0).getBooleanValue());
+
+        ShortNumberConverter numberConverter = new ShortNumberConverter();
+        assertEquals((short) 7, toJava(numberConverter, new ReadCellData<>(new 
BigDecimal("7.8"))));
+        WriteConverterContext<Short> writeContext = new 
WriteConverterContext<>();
+        writeContext.setValue((short) 7);
+        assertEquals(
+                0,
+                numberConverter
+                        .convertToExcelData(writeContext)
+                        .getNumberValue()
+                        .compareTo(new BigDecimal("7")));
+
+        ShortStringConverter stringConverter = new ShortStringConverter();
+        assertEquals((short) 12, toJava(stringConverter, new 
ReadCellData<>("12")));
+        assertEquals("12", toExcel(stringConverter, (short) 
12).getStringValue());
+    }
+
+    @Test
+    void byteConverters() throws Exception {
+        ByteBooleanConverter booleanConverter = new ByteBooleanConverter();
+        assertEquals((byte) 1, toJava(booleanConverter, new 
ReadCellData<>(Boolean.TRUE)));
+        assertEquals((byte) 0, toJava(booleanConverter, new 
ReadCellData<>(Boolean.FALSE)));
+        Assertions.assertTrue(toExcel(booleanConverter, (byte) 
1).getBooleanValue());
+        Assertions.assertFalse(toExcel(booleanConverter, (byte) 
0).getBooleanValue());
+
+        ByteNumberConverter numberConverter = new ByteNumberConverter();
+        assertEquals((byte) 3, toJava(numberConverter, new ReadCellData<>(new 
BigDecimal("3.9"))));
+        assertEquals(0, toExcel(numberConverter, (byte) 
3).getNumberValue().compareTo(new BigDecimal("3")));
+
+        ByteStringConverter stringConverter = new ByteStringConverter();
+        assertEquals((byte) 8, toJava(stringConverter, new 
ReadCellData<>("8")));
+        assertEquals("8", toExcel(stringConverter, (byte) 8).getStringValue());
+    }
+
+    @Test
+    void floatConverters() throws Exception {
+        FloatBooleanConverter booleanConverter = new FloatBooleanConverter();
+        assertEquals(1.0F, toJava(booleanConverter, new 
ReadCellData<>(Boolean.TRUE)));
+        assertEquals(0.0F, toJava(booleanConverter, new 
ReadCellData<>(Boolean.FALSE)));
+        Assertions.assertTrue(toExcel(booleanConverter, 
1.0F).getBooleanValue());
+        Assertions.assertFalse(toExcel(booleanConverter, 
0.0F).getBooleanValue());
+
+        FloatNumberConverter numberConverter = new FloatNumberConverter();
+        assertEquals(95.62F, toJava(numberConverter, new ReadCellData<>(new 
BigDecimal("95.62"))));
+        WriteConverterContext<Float> writeContext = new 
WriteConverterContext<>();
+        writeContext.setValue(95.62F);
+        assertEquals(
+                0,
+                numberConverter
+                        .convertToExcelData(writeContext)
+                        .getNumberValue()
+                        .compareTo(new BigDecimal("95.62")));
+
+        FloatStringConverter stringConverter = new FloatStringConverter();
+        assertEquals(1.5F, toJava(stringConverter, new ReadCellData<>("1.5")));
+        assertEquals("1.5", toExcel(stringConverter, 1.5F).getStringValue());
+    }
 
     @Test
-    public void floatNumberConverter() {
-        FloatNumberConverter floatNumberConverter = new FloatNumberConverter();
-        WriteConverterContext<Float> context = new WriteConverterContext<>();
-        context.setValue(95.62F);
-        WriteCellData<?> writeCellData = 
floatNumberConverter.convertToExcelData(context);
-        Assertions.assertEquals(0, 
writeCellData.getNumberValue().compareTo(new BigDecimal("95.62")));
+    void doubleConverters() throws Exception {
+        DoubleBooleanConverter booleanConverter = new DoubleBooleanConverter();
+        assertEquals(1.0D, toJava(booleanConverter, new 
ReadCellData<>(Boolean.TRUE)));
+        assertEquals(0.0D, toJava(booleanConverter, new 
ReadCellData<>(Boolean.FALSE)));
+        Assertions.assertTrue(toExcel(booleanConverter, 
1.0D).getBooleanValue());
+        Assertions.assertFalse(toExcel(booleanConverter, 
0.0D).getBooleanValue());
+
+        DoubleNumberConverter numberConverter = new DoubleNumberConverter();
+        assertEquals(2.5D, toJava(numberConverter, new ReadCellData<>(new 
BigDecimal("2.5"))));
+        assertEquals(0, toExcel(numberConverter, 
2.5D).getNumberValue().compareTo(new BigDecimal("2.5")));
+
+        DoubleStringConverter stringConverter = new DoubleStringConverter();
+        assertEquals(3.25D, toJava(stringConverter, new 
ReadCellData<>("3.25")));
+        assertEquals("3.25", toExcel(stringConverter, 3.25D).getStringValue());
+    }
+
+    @Test
+    void bigDecimalConverters() throws Exception {
+        BigDecimalBooleanConverter booleanConverter = new 
BigDecimalBooleanConverter();
+        assertEquals(
+                0, toJava(booleanConverter, new 
ReadCellData<>(Boolean.TRUE)).compareTo(BigDecimal.ONE));
+        assertEquals(
+                0, toJava(booleanConverter, new 
ReadCellData<>(Boolean.FALSE)).compareTo(BigDecimal.ZERO));
+        Assertions.assertTrue(toExcel(booleanConverter, 
BigDecimal.ONE).getBooleanValue());
+        Assertions.assertFalse(toExcel(booleanConverter, 
BigDecimal.ZERO).getBooleanValue());
+
+        BigDecimalNumberConverter numberConverter = new 
BigDecimalNumberConverter();
+        BigDecimal value = new BigDecimal("123.45");
+        assertEquals(0, toJava(numberConverter, new 
ReadCellData<>(value)).compareTo(value));
+        assertEquals(0, toExcel(numberConverter, 
value).getNumberValue().compareTo(value));
+
+        BigDecimalStringConverter stringConverter = new 
BigDecimalStringConverter();
+        assertEquals(0, toJava(stringConverter, new 
ReadCellData<>("123.45")).compareTo(value));
+        assertEquals("123.45", toExcel(stringConverter, 
value).getStringValue());
+    }
+
+    @Test
+    void bigIntegerConverters() throws Exception {
+        BigIntegerBooleanConverter booleanConverter = new 
BigIntegerBooleanConverter();
+        assertEquals(BigInteger.ONE, toJava(booleanConverter, new 
ReadCellData<>(Boolean.TRUE)));
+        assertEquals(BigInteger.ZERO, toJava(booleanConverter, new 
ReadCellData<>(Boolean.FALSE)));
+        Assertions.assertTrue(toExcel(booleanConverter, 
BigInteger.ONE).getBooleanValue());
+        Assertions.assertFalse(toExcel(booleanConverter, 
BigInteger.ZERO).getBooleanValue());
+
+        BigIntegerNumberConverter numberConverter = new 
BigIntegerNumberConverter();
+        assertEquals(BigInteger.valueOf(88), toJava(numberConverter, new 
ReadCellData<>(new BigDecimal("88.9"))));
+        assertEquals(
+                0,
+                toExcel(numberConverter, BigInteger.valueOf(88))
+                        .getNumberValue()
+                        .compareTo(new BigDecimal("88")));
+
+        BigIntegerStringConverter stringConverter = new 
BigIntegerStringConverter();
+        assertEquals(BigInteger.valueOf(100), toJava(stringConverter, new 
ReadCellData<>("100")));
+        assertEquals("100", toExcel(stringConverter, 
BigInteger.valueOf(100)).getStringValue());
+    }
+
+    @Test
+    void stringStringConverter() throws Exception {
+        StringStringConverter converter = new StringStringConverter();
+        assertEquals("hello", toJava(converter, new ReadCellData<>("hello")));
+        assertEquals("world", toExcel(converter, "world").getStringValue());
+    }
+
+    @Test
+    void stringBooleanConverter() throws Exception {
+        StringBooleanConverter converter = new StringBooleanConverter();
+        assertEquals("true", toJava(converter, new 
ReadCellData<>(Boolean.TRUE)));
+        assertEquals("false", toJava(converter, new 
ReadCellData<>(Boolean.FALSE)));
+        Assertions.assertTrue(toExcel(converter, "true").getBooleanValue());
+        Assertions.assertFalse(toExcel(converter, "false").getBooleanValue());
+        Assertions.assertFalse(toExcel(converter, "other").getBooleanValue());
+    }
+
+    @Test
+    void stringNumberConverter() throws Exception {
+        StringNumberConverter converter = new StringNumberConverter();
+        assertEquals("12.5", toJava(converter, new ReadCellData<>(new 
BigDecimal("12.5"))));
+        assertEquals(0, toExcel(converter, 
"12.5").getNumberValue().compareTo(new BigDecimal("12.5")));
+    }
+
+    @Test
+    void stringErrorConverter() throws Exception {
+        StringErrorConverter converter = new StringErrorConverter();
+        assertEquals("#N/A", toJava(converter, new 
ReadCellData<>(CellDataTypeEnum.ERROR, "#N/A")));
+
+        WriteCellData<?> writeCellData = toExcel(converter, "#DIV/0!");
+        assertEquals(CellDataTypeEnum.ERROR, writeCellData.getType());
+        assertEquals("#DIV/0!", writeCellData.getStringValue());
+    }
+
+    private static <T> T toJava(Converter<T> converter, ReadCellData<?> 
cellData) throws Exception {
+        return converter.convertToJavaData(cellData, null, 
GLOBAL_CONFIGURATION);
+    }
+
+    private static <T> WriteCellData<?> toExcel(Converter<T> converter, T 
value) throws Exception {
+        return converter.convertToExcelData(value, null, GLOBAL_CONFIGURATION);
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to