package gcom.util;
import static org.junit.Assert.assertEquals;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
import org.junit.Before;
import org.junit.Test;
public class TesteCodigoBarras {
String codigoBanco = "001";
String codigoMoeda = "9";
String nossoNumeroSemDV = "25027920743237535";
String carteira = "18";
String fatorVencimento = "";
String pos_20_24 = "00000";
String pos_20_24_number = "0.0000";
String pos_25_34 = "0250279207";
String pos_25_34_number = "02502.79207";
String pos_35_44 = "4323753518";
String pos_35_44_number = "43237.53518";
String dv_campo_01 = "9";
String dv_campo_02 = "6";
String dv_campo_03 = "2";
String dv_codigoBarras = "1";
String valorBoleto = "";
BigDecimal valorCodigoBarra = new BigDecimal("4.16");
Date data_1997_10_10 = null;
Date data_2016_12_10 = null;
@Before
public void init(){
Calendar cal = Calendar.getInstance();
cal.set(1997, 9, 10);
data_1997_10_10 = cal.getTime();
cal.set(2016, 11, 10);
data_2016_12_10 = cal.getTime();
valorBoleto = Util.adicionarZerosEsquedaNumero(10, valorCodigoBarra.setScale(2).toString().replace(".", ""));
}
@Test
public void testaCodigoBarrasFichaCompensacao(){
String valor = buildCodigoBarras();
assertEquals(44, valor.toString().length());
String codigo = CodigoBarras.obterEspecificacaoCodigoBarraFichaCompensacao(codigoBanco, codigoMoeda, valorCodigoBarra, nossoNumeroSemDV, carteira, fatorVencimento);
assertEquals(valor.toString(), codigo);
}
@Test
public void testRepresentacaoNumericaCodigoBarras(){
String codigoBarras = buildCodigoBarras();
String representacao = buildRepresentacaoNumericaCodigoBarras();
assertEquals(representacao, CodigoBarras.obterRepresentacaoNumericaCodigoBarraFichaCompensacao(codigoBarras));
}
@Test
public void testeObterFatorVencimento(){
assertEquals("3", CodigoBarras.obterFatorVencimento(data_1997_10_10));
assertEquals("7004", CodigoBarras.obterFatorVencimento(data_2016_12_10));
}
private String buildCodigoBarras(){
fatorVencimento = CodigoBarras.obterFatorVencimento(data_2016_12_10);
StringBuilder valor = new StringBuilder();
valor.append(codigoBanco)
.append(codigoMoeda)
.append(dv_codigoBarras)
.append(fatorVencimento)
.append(valorBoleto)
.append(pos_20_24)
.append(pos_25_34)
.append(pos_35_44);
return valor.toString();
}
private String buildRepresentacaoNumericaCodigoBarras(){
fatorVencimento = CodigoBarras.obterFatorVencimento(data_2016_12_10);
StringBuilder valor = new StringBuilder();
valor.append(codigoBanco)
.append(codigoMoeda)
.append(pos_20_24_number)
.append(dv_campo_01)
.append(" ")
.append(pos_25_34_number)
.append(dv_campo_02)
.append(" ")
.append(pos_35_44_number)
.append(dv_campo_03)
.append(" ")
.append(dv_codigoBarras)
.append(" ")
.append(fatorVencimento)
.append(valorBoleto);
return valor.toString();
}
}