IntegerSchemaTest.java

package io.swagger.v3.oas.models.media;

import org.testng.annotations.Test;

import java.util.Locale;

import static org.testng.Assert.*;

public class IntegerSchemaTest {

    private static final IntegerSchema INTEGER_SCHEMA = new IntegerSchema();
    private static final Locale SWEDISH_LOCALE = new Locale("se");
    private static final String INTEGER_STRING = "123";
    private static final String LONG_STRING = "1111111111111111111";
    private static final String NEGATIVE_INTEGER = "-123";
    private static final String INTEGER_WITH_SPACE_THOUSAND_SEPARATOR = "2 000";
    private static final String INTEGER_WITH_DECIMAL_THOUSAND_SEPARATOR = "2.000";
    private static final String INTEGER_WITH_COMMA_THOUSAND_SEPARATOR = "2,000";
    private static final Integer NUMBER = 123;
    private static final Integer NEGATIVE_NUMBER = -123;
    private static final Long LONG = 1111111111111111111L;

    @Test
    public void testCastInteger() {
        assertEquals(INTEGER_SCHEMA.cast(INTEGER_STRING), NUMBER);
    }

    @Test
    public void testCastLong() {
        assertEquals(INTEGER_SCHEMA.cast(LONG_STRING), LONG);
    }

    @Test
    public void testCastNegativeInteger() {
        assertEquals(INTEGER_SCHEMA.cast(NEGATIVE_INTEGER), NEGATIVE_NUMBER);
    }

    @Test
    public void testCastIntegerWithSpaceThousandSeparatorFailsWithNull() {
        assertNull(INTEGER_SCHEMA.cast(INTEGER_WITH_SPACE_THOUSAND_SEPARATOR));
    }

    @Test
    public void testCastIntegerWithDecimalThousandSeparatorFailsWithNull() {
        assertNull(INTEGER_SCHEMA.cast(INTEGER_WITH_DECIMAL_THOUSAND_SEPARATOR));
    }

    @Test
    public void testCastIntegerWithCommaThousandSeparatorFailsWithNull() {
        assertNull(INTEGER_SCHEMA.cast(INTEGER_WITH_COMMA_THOUSAND_SEPARATOR));
    }

    @Test
    public void testCastIntegerWithSwedishLocale() {
        Locale defaultLocale = Locale.getDefault();
        try {
            Locale.setDefault(SWEDISH_LOCALE);
            assertEquals(new IntegerSchema().cast(INTEGER_STRING), NUMBER);
        } finally {
            Locale.setDefault(defaultLocale);
        }
    }

    @Test
    public void testCastLongWithSwedishLocale() {
        Locale defaultLocale = Locale.getDefault();
        try {
            Locale.setDefault(SWEDISH_LOCALE);
            assertEquals(new IntegerSchema().cast(LONG_STRING), LONG);
        } finally {
            Locale.setDefault(defaultLocale);
        }
    }

    @Test
    public void testCastNegativeIntegerWithSwedishLocale() {
        Locale defaultLocale = Locale.getDefault();
        try {
            Locale.setDefault(SWEDISH_LOCALE);
            assertEquals(new IntegerSchema().cast(NEGATIVE_INTEGER), NEGATIVE_NUMBER);
        } finally {
            Locale.setDefault(defaultLocale);
        }
    }

}