package net.time4j.format; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import java.util.Locale; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @RunWith(JUnit4.class) public class RomanNumberTestForOtherFormats { @Test public void fullRange() { for (int i = 1; i <= 3999; i++) { String numeral = NumberSystem.ROMAN.toNumeral(i); assertThat( NumberSystem.ROMAN.toInteger(numeral), is(i)); } } @Test public void caseInsensitive() { for (int i = 1; i <= 3999; i++) { String numeral = NumberSystem.ROMAN.toNumeral(i); assertThat( NumberSystem.ROMAN.toInteger(numeral.toLowerCase(Locale.US), Leniency.STRICT), is(i)); } } @Test(expected=IllegalArgumentException.class) public void zeroOutOfRange() { NumberSystem.ROMAN.toNumeral(0); } @Test(expected=IllegalArgumentException.class) public void fourThousandOutOfRange() { NumberSystem.ROMAN.toNumeral(4000); } @Test(expected=NumberFormatException.class) public void parseStrictIIII() { NumberSystem.ROMAN.toInteger("IIII", Leniency.STRICT); } @Test public void parseIIII() { assertThat( NumberSystem.ROMAN.toInteger("IIII"), is(4)); assertThat( NumberSystem.ROMAN.toInteger("IIII", Leniency.SMART), is(4)); assertThat( NumberSystem.ROMAN.toInteger("IIII", Leniency.LAX), is(4)); } @Test(expected=NumberFormatException.class) public void parseStrictMDCCCCX() { NumberSystem.ROMAN.toInteger("MDCCCCX", Leniency.STRICT); } @Test public void parseMDCCCCX() { assertThat( NumberSystem.ROMAN.toInteger("MDCCCCX"), is(1910)); } @Test(expected=NumberFormatException.class) public void parseStrictMDCDIII() { NumberSystem.ROMAN.toInteger("MDCDIII", Leniency.STRICT); } @Test public void parseMDCDIII() { assertThat( NumberSystem.ROMAN.toInteger("MDCDIII"), is(1903)); } @Test(expected=NumberFormatException.class) public void parseStrictIIXX() { NumberSystem.ROMAN.toInteger("IIXX", Leniency.STRICT); } @Test public void parseIIXX() { assertThat( NumberSystem.ROMAN.toInteger("IIXX"), is(18)); } @Test(expected=NumberFormatException.class) public void parseStrictXIIX() { NumberSystem.ROMAN.toInteger("XIIX", Leniency.STRICT); } @Test public void parseXIIX() { assertThat( NumberSystem.ROMAN.toInteger("XIIX"), is(18)); } @Test(expected=NumberFormatException.class) public void parseStrictMCMLXLI() { NumberSystem.ROMAN.toInteger("MCMLXLI", Leniency.STRICT); } @Test public void parseMCMLXLI() { assertThat( NumberSystem.ROMAN.toInteger("MCMLXLI"), is(1991)); } @Test(expected=NumberFormatException.class) public void parseStrictMDCCCVIV() { NumberSystem.ROMAN.toInteger("MDCCCVIV", Leniency.STRICT); } @Test public void parseMDCCCVIV() { assertThat( NumberSystem.ROMAN.toInteger("MDCCCVIV"), is(1809)); } }