package br.com.caelum.stella.inwords;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
/**
*
*/
public class NoFormatNumericToWordsConverterTest {
private final NumericToWordsConverter converter = new NumericToWordsConverter(new InteiroSemFormato());
@Test(expected = IllegalArgumentException.class)
public void shouldTransformNegativXeLong() {
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", 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", actual);
}
@Test
public void shouldTransform2InWords() {
double two = 2;
String actual = converter.toWords(two);
assertEquals("dois", actual);
}
@Test
public void shouldTransform14InWords() {
double fourteen = 14;
String actual = converter.toWords(fourteen);
assertEquals("quatorze", actual);
}
@Test
public void shouldTransform53InWordsUsingAnd() {
double fiftyThree = 53;
String actual = converter.toWords(fiftyThree);
assertEquals("cinquenta e três", actual);
}
@Test
public void shouldTransform99InWordsUsingAnd() {
double ninetyNine = 99;
String actual = converter.toWords(ninetyNine);
assertEquals("noventa e nove", actual);
}
@Test
public void shouldTransformOneHundredInWords() {
double oneHundred = 100;
String actual = converter.toWords(oneHundred);
assertEquals("cem", actual);
}
@Test
public void shouldTransform101InWordsUsingAnd() {
double oneHundredAndOne = 101;
String actual = converter.toWords(oneHundredAndOne);
assertEquals("cento e um", actual);
}
@Test
public void shouldTransform199InWordsUsingAnd() {
double oneHundredAndNinetyNine = 199;
String actual = converter.toWords(oneHundredAndNinetyNine);
assertEquals("cento e noventa e nove", actual);
}
@Test
public void shouldTransform200InWords() {
double twoHundred = 200;
String actual = converter.toWords(twoHundred);
assertEquals("duzentos", actual);
}
@Test
public void shouldTransform201InWords() {
double twoHundredAndOne = 201;
String actual = converter.toWords(twoHundredAndOne);
assertEquals("duzentos e um", actual);
}
@Test
public void shouldTransform999InWords() {
double nineHundredNinetyNine = 999;
String actual = converter.toWords(nineHundredNinetyNine);
assertEquals("novecentos e noventa e nove", actual);
}
@Test
public void shouldTransformThousandInWords() {
double thousand = 1000;
String actual = converter.toWords(thousand);
assertEquals("um mil", actual);
}
@Test
public void shouldTransform1001InWords() {
double oneThousandAndOne = 1001;
String actual = converter.toWords(oneThousandAndOne);
assertEquals("um mil e um", actual);
}
@Test
public void shouldTransformThousandInWordsUsingAnd() {
double thousand = 1031;
String actual = converter.toWords(thousand);
assertEquals("um mil e trinta e um", actual);
}
@Test
public void shouldTransformAMillionIntoNumberInWordsUsingSingular() {
double oneMillion = 1000000;
String actual = converter.toWords(oneMillion);
assertEquals("um milhão", actual);
}
@Test
public void shouldTransformAMillionIntoNumberInWordsUsingAnd() {
double twoHundred = 1000150.99;
String actual = converter.toWords(twoHundred);
assertEquals("um milhão e cento e cinquenta e um", 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", actual);
}
@Test
public void shouldTransformTwoMillionUsingPlural() {
double twoHundred = 2e6;
String actual = converter.toWords(twoHundred);
assertEquals("dois milhões", actual);
}
@Test
public void shouldTransformANumberInWordsUsingFraction() {
double twoHundred = 222;
String actual = converter.toWords(twoHundred);
assertEquals("duzentos e vinte e dois", actual);
}
@Test
public void shouldTransform1E21() {
double number = 1E21;
String actual = converter.toWords(number);
assertEquals("um sextilhão", actual);
}
@Test
public void shouldTransform2E21() {
double number = 2E21;
String actual = converter.toWords(number);
assertEquals("dois sextilhões", actual);
}
@Test
public void shouldTransform1E24() {
double number = 1E24;
String actual = converter.toWords(number);
assertEquals("um septilhão", actual);
}
@Test
public void shouldTransform2E24() {
double number = 2E24;
String actual = converter.toWords(number);
assertEquals("dois septilhões", actual);
}
@Test
public void shouldTransform1E27() {
double number = 1E27;
String actual = converter.toWords(number);
assertEquals("um octilhão", actual);
}
@Test
public void shouldTransform2E27() {
double number = 2E27;
String actual = converter.toWords(number);
assertEquals("dois octilhões", actual);
}
@Test
public void shouldTransform1E30() {
double number = 1E30;
String actual = converter.toWords(number);
assertEquals("um nonilhão", actual);
}
@Test
public void shouldTransform2E30() {
double number = 2E30;
String actual = converter.toWords(number);
assertEquals("dois nonilhões", actual);
}
@Test
public void shouldTransform1E33() {
double number = 1E33;
String actual = converter.toWords(number);
assertEquals("um decilhão", actual);
}
@Test
public void shouldTransform2E33() {
double number = 2E33;
String actual = converter.toWords(number);
assertEquals("dois decilhões", actual);
}
@Test
public void shouldTransform1E36() {
double number = 1E36;
String actual = converter.toWords(number);
assertEquals("um undecilhão", actual);
}
@Test
public void shouldTransform2E36() {
double number = 2E36;
String actual = converter.toWords(number);
assertEquals("dois undecilhões", actual);
}
@Test
public void shouldTransform1E39() {
double number = 1E39;
String actual = converter.toWords(number);
assertEquals("um doudecilhão", actual);
}
@Test
public void shouldTransform2E39() {
double number = 2E39;
String actual = converter.toWords(number);
assertEquals("dois doudecilhões", actual);
}
@Test
public void shouldTransform1E42() {
double number = 1E42;
String actual = converter.toWords(number);
assertEquals("um tredecilhão", actual);
}
@Test
public void shouldTransform2E42() {
double number = 2E42;
String actual = converter.toWords(number);
assertEquals("dois tredecilhões", actual);
}
}