package br.com.caelum.stella; import java.util.HashMap; import java.util.Map; import org.junit.Assert; import org.junit.Test; public class DigitoParaTest { @Test public void geracaoDeDigitoVerificadorParaBoleto() { Map<DigitoPara,String> entradas = new HashMap<DigitoPara, String>(); entradas.put(new DigitoPara("3999100100001200000351202000003910476618602"), "3"); entradas.put(new DigitoPara("2379316800000001002949060000000000300065800"), "6"); entradas.put(new DigitoPara("0019386000000040000000001207113000900020618"), "5"); entradas.put(new DigitoPara("0000039104766"), "3"); for (DigitoPara digitoPara : entradas.keySet()) { String esperado = entradas.get(digitoPara); Assert.assertEquals(esperado, digitoPara.comMultiplicadoresDeAte(2,9).complementarAoModulo().mod(11).calcula()); } } @Test public void geracaoDeDigitoVerificadorParaBoletoCasosEspeciais() { Map<DigitoPara,String> entradas = new HashMap<DigitoPara, String>(); entradas.put(new DigitoPara("3999100100001200000351202000003911476618611"), "1"); //mod dá 10 entradas.put(new DigitoPara("2379316800000001002949060000000100300065885"), "1"); //mod dá 11 for (DigitoPara digitoPara : entradas.keySet()) { String esperado = entradas.get(digitoPara); Assert.assertEquals(esperado, digitoPara.comMultiplicadoresDeAte(2,9).complementarAoModulo().trocandoPorSeEncontrar("1", 0, 10, 11).mod(11).calcula()); } } @Test public void geracaoDeDigitoMod11PraIntervaloPassado() { Assert.assertEquals("1", new DigitoPara("05009401448").comMultiplicadores(9,8,7,6,5,4,3,2).mod(11).calcula()); } @Test public void geracaoDeDigitoParaRGDeSaoPaulo() { Assert.assertEquals("1", new DigitoPara("36422911").comMultiplicadoresDeAte(2,9).mod(11).calcula()); Assert.assertEquals("X", new DigitoPara("42105900").comMultiplicadoresDeAte(2,9).trocandoPorSeEncontrar("X", 10).mod(11).calcula()); } }