package br.com.caelum.stella.inwords;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public abstract class IntegerNumericToWordsConverterTest {
private final NumericToWordsConverter converter = new NumericToWordsConverter(new FormatoDeInteiro());
public IntegerNumericToWordsConverterTest() {
super();
}
@Test(expected = IllegalArgumentException.class)
public void shouldTransformNegativeLong() {
long negative = -1;
converter.toWords(negative);
}
@Test(expected = IllegalArgumentException.class)
public void shouldNotTransformNegativeDouble() {
double negative = -1;
converter.toWords(negative);
}
@Test
public void shouldTransformMaxLong() {
long max = Long.MAX_VALUE;
String actual = converter.toWords(max);
assertEquals("nove quintilhões, duzentos e vinte e três quatrilhões,"
+ " trezentos e setenta e dois trilhões, trinta e seis bilhões,"
+ " oitocentos e cinquenta e quatro milhões, setecentos e setenta"
+ " e cinco mil e oitocentos e sete inteiros", actual);
}
@Test(expected = IllegalArgumentException.class)
public void shouldNotTransformAMissingResource() {
double max = Double.MAX_VALUE;
converter.toWords(max);
}
@Test
public void shouldTransform0InWords() {
double zero = 0;
String actual = converter.toWords(zero);
assertEquals("zero", actual);
}
@Test
public void shouldTransform1InWords() {
double one = 1;
String actual = converter.toWords(one);
assertEquals("um inteiro", actual);
}
@Test
public void shouldTransform2InWords() {
double two = 2;
String actual = converter.toWords(two);
assertEquals("dois inteiros", actual);
}
@Test
public void shouldTransform14InWords() {
double fourteen = 14;
String actual = converter.toWords(fourteen);
assertEquals("quatorze inteiros", actual);
}
@Test
public void shouldTransform53InWordsUsingAnd() {
double fiftyThree = 53;
String actual = converter.toWords(fiftyThree);
assertEquals("cinquenta e três inteiros", actual);
}
@Test
public void shouldTransformOneHundredInWords() {
double oneHundred = 100;
String actual = converter.toWords(oneHundred);
assertEquals("cem inteiros", actual);
}
@Test
public void shouldTransformOneHundredInWordsUsingAnd() {
double oneHundredAndNine = 109;
String actual = converter.toWords(oneHundredAndNine);
assertEquals("cento e nove inteiros", actual);
}
@Test
public void shouldTransformTwoHundredInWords() {
double twoHundred = 200;
String actual = converter.toWords(twoHundred);
assertEquals("duzentos inteiros", actual);
}
@Test
public void shouldTransformThousandInWords() {
double thousand = 1000;
String actual = converter.toWords(thousand);
assertEquals("um mil inteiros", actual);
}
@Test
public void shouldTransformThousandInWordsUsingAnd() {
double thousand = 1031;
String actual = converter.toWords(thousand);
assertEquals("um mil e trinta e um inteiros", actual);
}
@Test
public void shouldTransformAMillionIntoNumberInWordsUsingSingular() {
double oneMillion = 1000000;
String actual = converter.toWords(oneMillion);
assertEquals("um milhão de inteiros", actual);
}
@Test
public void shouldTransformAMillionIntoNumberInWordsUsingAnd() {
double twoHundred = 1000150.99;
String actual = converter.toWords(twoHundred);
assertEquals("um milhão e cento e cinquenta inteiros e novecentos e noventa milésimos", actual);
}
@Test
public void shouldTransformAMillionAndThousandIntoNumberInWordsUsingAnd() {
double twoHundred = 1023850;
String actual = converter.toWords(twoHundred);
assertEquals("um milhão, vinte e três mil e oitocentos e cinquenta inteiros", actual);
}
@Test
public void shouldTransformTwoMillionUsingPlural() {
double twoHundred = 2e6;
String actual = converter.toWords(twoHundred);
assertEquals("dois milhões de inteiros", actual);
}
@Test
public void shouldTransformANumberInWordsUsingFraction() {
double twoHundred = 0.222;
String actual = converter.toWords(twoHundred);
assertEquals("duzentos e vinte e dois milésimos", actual);
}
@Test
public void shouldTransform1E21() {
double number = 1E21;
String actual = converter.toWords(number);
assertEquals("um sextilhão de inteiros", actual);
}
@Test
public void shouldTransform2E21() {
double number = 2E21;
String actual = converter.toWords(number);
assertEquals("dois sextilhões de inteiros", actual);
}
@Test
public void shouldTransform1E24() {
double number = 1E24;
String actual = converter.toWords(number);
assertEquals("um septilhão de inteiros", actual);
}
@Test
public void shouldTransform2E24() {
double number = 2E24;
String actual = converter.toWords(number);
assertEquals("dois septilhões de inteiros", actual);
}
@Test
public void shouldTransform1E27() {
double number = 1E27;
String actual = converter.toWords(number);
assertEquals("um octilhão de inteiros", actual);
}
@Test
public void shouldTransform2E27() {
double number = 2E27;
String actual = converter.toWords(number);
assertEquals("dois octilhões de inteiros", actual);
}
@Test
public void shouldTransform1E30() {
double number = 1E30;
String actual = converter.toWords(number);
assertEquals("um nonilhão de inteiros", actual);
}
@Test
public void shouldTransform2E30() {
double number = 2E30;
String actual = converter.toWords(number);
assertEquals("dois nonilhões de inteiros", actual);
}
@Test
public void shouldTransform1E33() {
double number = 1E33;
String actual = converter.toWords(number);
assertEquals("um decilhão de inteiros", actual);
}
@Test
public void shouldTransform2E33() {
double number = 2E33;
String actual = converter.toWords(number);
assertEquals("dois decilhões de inteiros", actual);
}
@Test
public void shouldTransform1E36() {
double number = 1E36;
String actual = converter.toWords(number);
assertEquals("um undecilhão de inteiros", actual);
}
@Test
public void shouldTransform2E36() {
double number = 2E36;
String actual = converter.toWords(number);
assertEquals("dois undecilhões de inteiros", actual);
}
@Test
public void shouldTransform1E39() {
double number = 1E39;
String actual = converter.toWords(number);
assertEquals("um doudecilhão de inteiros", actual);
}
@Test
public void shouldTransform2E39() {
double number = 2E39;
String actual = converter.toWords(number);
assertEquals("dois doudecilhões de inteiros", actual);
}
@Test
public void shouldTransform1E42() {
double number = 1E42;
String actual = converter.toWords(number);
assertEquals("um tredecilhão de inteiros", actual);
}
@Test
public void shouldTransform2E42() {
double number = 2E42;
String actual = converter.toWords(number);
assertEquals("dois tredecilhões de inteiros", actual);
}
}