package br.com.caelum.stella.inwords;
import static org.junit.Assert.assertEquals;
import java.util.Locale;
import org.junit.Test;
/**
* <a href="mailto:hprange@gmail.com">Henrique Prange</a>
*/
public class NoFormatNumericToEnglishWordsConverterTest {
private final NumericToWordsConverter converter = new NumericToWordsConverter(new InteiroSemFormato(), Locale.ENGLISH);
@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("nine quintillion, two hundred and twenty-three quadrillion,"
+ " three hundred and seventy-two trillion, thirty-six billion,"
+ " eight hundred and fifty-four million, seven hundred and seventy-five thousand and"
+ " eight hundred and seven", 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("one", actual);
}
@Test
public void shouldTransform2InWords() {
double two = 2;
String actual = converter.toWords(two);
assertEquals("two", actual);
}
@Test
public void shouldTransform14InWords() {
double fourteen = 14;
String actual = converter.toWords(fourteen);
assertEquals("fourteen", actual);
}
@Test
public void shouldTransform53InWordsUsingAnd() {
double fiftyThree = 53;
String actual = converter.toWords(fiftyThree);
assertEquals("fifty-three", actual);
}
@Test
public void shouldTransform99InWordsUsingAnd() {
double ninetyNine = 99;
String actual = converter.toWords(ninetyNine);
assertEquals("ninety-nine", actual);
}
@Test
public void shouldTransformOneHundredInWords() {
double oneHundred = 100;
String actual = converter.toWords(oneHundred);
assertEquals("one hundred", actual);
}
@Test
public void shouldTransform101InWordsUsingAnd() {
double oneHundredAndOne = 101;
String actual = converter.toWords(oneHundredAndOne);
assertEquals("one hundred and one", actual);
}
@Test
public void shouldTransform199InWordsUsingAnd() {
double oneHundredAndNinetyNine = 199;
String actual = converter.toWords(oneHundredAndNinetyNine);
assertEquals("one hundred and ninety-nine", actual);
}
@Test
public void shouldTransform200InWords() {
double twoHundred = 200;
String actual = converter.toWords(twoHundred);
assertEquals("two hundred", actual);
}
@Test
public void shouldTransform201InWords() {
double twoHundredAndOne = 201;
String actual = converter.toWords(twoHundredAndOne);
assertEquals("two hundred and one", actual);
}
@Test
public void shouldTransform999InWords() {
double nineHundredNinetyNine = 999;
String actual = converter.toWords(nineHundredNinetyNine);
assertEquals("nine hundred and ninety-nine", actual);
}
@Test
public void shouldTransformThousandInWords() {
double thousand = 1000;
String actual = converter.toWords(thousand);
assertEquals("one thousand", actual);
}
@Test
public void shouldTransform1001InWords() {
double oneThousandAndOne = 1001;
String actual = converter.toWords(oneThousandAndOne);
assertEquals("one thousand and one", actual);
}
@Test
public void shouldTransformThousandInWordsUsingAnd() {
double thousand = 1031;
String actual = converter.toWords(thousand);
assertEquals("one thousand and thirty-one", actual);
}
@Test
public void shouldTransformAMillionIntoNumberInWordsUsingSingular() {
double oneMillion = 1000000;
String actual = converter.toWords(oneMillion);
assertEquals("one million", actual);
}
@Test
public void shouldTransformAMillionIntoNumberInWordsUsingAnd() {
double twoHundred = 1000150.99;
String actual = converter.toWords(twoHundred);
assertEquals("one million and one hundred and fifty-one", actual);
}
@Test
public void shouldTransformAMillionAndThousandIntoNumberInWordsUsingAnd() {
double twoHundred = 1023850;
String actual = converter.toWords(twoHundred);
assertEquals("one million, twenty-three thousand and eight hundred and fifty", actual);
}
@Test
public void shouldTransformTwoMillionUsingPlural() {
double twoHundred = 2e6;
String actual = converter.toWords(twoHundred);
assertEquals("two million", actual);
}
@Test
public void shouldTransformANumberInWordsUsingFraction() {
double twoHundred = 222;
String actual = converter.toWords(twoHundred);
assertEquals("two hundred and twenty-two", actual);
}
@Test
public void shouldTransform1E21() {
double number = 1E21;
String actual = converter.toWords(number);
assertEquals("one sextillion", actual);
}
@Test
public void shouldTransform2E21() {
double number = 2E21;
String actual = converter.toWords(number);
assertEquals("two sextillion", actual);
}
@Test
public void shouldTransform1E24() {
double number = 1E24;
String actual = converter.toWords(number);
assertEquals("one septillion", actual);
}
@Test
public void shouldTransform2E24() {
double number = 2E24;
String actual = converter.toWords(number);
assertEquals("two septillion", actual);
}
@Test
public void shouldTransform1E27() {
double number = 1E27;
String actual = converter.toWords(number);
assertEquals("one octillion", actual);
}
@Test
public void shouldTransform2E27() {
double number = 2E27;
String actual = converter.toWords(number);
assertEquals("two octillion", actual);
}
@Test
public void shouldTransform1E30() {
double number = 1E30;
String actual = converter.toWords(number);
assertEquals("one nonillion", actual);
}
@Test
public void shouldTransform2E30() {
double number = 2E30;
String actual = converter.toWords(number);
assertEquals("two nonillion", actual);
}
@Test
public void shouldTransform1E33() {
double number = 1E33;
String actual = converter.toWords(number);
assertEquals("one decillion", actual);
}
@Test
public void shouldTransform2E33() {
double number = 2E33;
String actual = converter.toWords(number);
assertEquals("two decillion", actual);
}
@Test
public void shouldTransform1E36() {
double number = 1E36;
String actual = converter.toWords(number);
assertEquals("one undecillion", actual);
}
@Test
public void shouldTransform2E36() {
double number = 2E36;
String actual = converter.toWords(number);
assertEquals("two undecillion", actual);
}
@Test
public void shouldTransform1E39() {
double number = 1E39;
String actual = converter.toWords(number);
assertEquals("one duodecillion", actual);
}
@Test
public void shouldTransform2E39() {
double number = 2E39;
String actual = converter.toWords(number);
assertEquals("two duodecillion", actual);
}
@Test
public void shouldTransform1E42() {
double number = 1E42;
String actual = converter.toWords(number);
assertEquals("one tredecillion", actual);
}
@Test
public void shouldTransform2E42() {
double number = 2E42;
String actual = converter.toWords(number);
assertEquals("two tredecillion", actual);
}
}