Last active
September 27, 2017 12:30
-
-
Save rcaneppele/e1516956debcebbdc9041367a023ed03 to your computer and use it in GitHub Desktop.
FJ-22 - CandlestickFactory com Java 8 e Testes de Unidade
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public List<Candle> constroiCandles(List<Negociacao> negociacoes) { | |
if (negociacoes.isEmpty()) { | |
return Collections.emptyList(); | |
} | |
List<Candle> candles = new ArrayList<>(); | |
Map<Calendar, List<Negociacao>> agrupadasPorData = negociacoes.stream().collect(Collectors.groupingBy(Negociacao::getData)); | |
agrupadasPorData.forEach((data, negociacoesDaData) -> candles.add(constroiCandleParaData(data, negociacoesDaData))); | |
candles.sort((c1, c2) -> c1.getData().compareTo(c2.getData())); | |
return candles; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class CandleStickFactoryTest { | |
@Test | |
public void deveriaCriar3CandlesParaNegociacoesEmTresDiasDistintos() { | |
Calendar hoje = Calendar.getInstance(); | |
Negociacao negociacao1 = new Negociacao(40.5, 100, hoje); | |
Negociacao negociacao2 = new Negociacao(45.0, 100, hoje); | |
Negociacao negociacao3 = new Negociacao(39.8, 100, hoje); | |
Negociacao negociacao4 = new Negociacao(42.3, 100, hoje); | |
Calendar amanha = (Calendar) hoje.clone(); | |
amanha.add(Calendar.DAY_OF_MONTH, 1); | |
Negociacao negociacao5 = new Negociacao(48.8, 100, amanha); | |
Negociacao negociacao6 = new Negociacao(49.3, 100, amanha); | |
Calendar depois = (Calendar) amanha.clone(); | |
depois.add(Calendar.DAY_OF_MONTH, 1); | |
Negociacao negociacao7 = new Negociacao(51.8, 100, depois); | |
Negociacao negociacao8 = new Negociacao(52.3, 100, depois); | |
List<Negociacao> negociacoes = Arrays.asList(negociacao1, negociacao2, | |
negociacao3, negociacao4, negociacao5, negociacao6, negociacao7, | |
negociacao8); | |
CandlestickFactory fabrica = new CandlestickFactory(); | |
List<Candlestick> candles = fabrica.constroiCandles(negociacoes); | |
Assert.assertEquals(3, candles.size()); | |
Assert.assertEquals(40.5, candles.get(0).getAbertura(), 0.00001); | |
Assert.assertEquals(42.3, candles.get(0).getFechamento(), 0.00001); | |
Assert.assertEquals(39.8, candles.get(0).getMinimo(), 0.00001); | |
Assert.assertEquals(45.0, candles.get(0).getMaximo(), 0.00001); | |
Assert.assertEquals(16760.0, candles.get(0).getVolume(), 0.00001); | |
Assert.assertEquals(hoje, candles.get(0).getData()); | |
Assert.assertEquals(48.8, candles.get(1).getAbertura(), 0.00001); | |
Assert.assertEquals(49.3, candles.get(1).getFechamento(), 0.00001); | |
Assert.assertEquals(48.8, candles.get(1).getMinimo(), 0.00001); | |
Assert.assertEquals(49.3, candles.get(1).getMaximo(), 0.00001); | |
Assert.assertEquals(9810.0, candles.get(1).getVolume(), 0.00001); | |
Assert.assertEquals(amanha, candles.get(1).getData()); | |
Assert.assertEquals(51.8, candles.get(2).getAbertura(), 0.00001); | |
Assert.assertEquals(52.3, candles.get(2).getFechamento(), 0.00001); | |
Assert.assertEquals(51.8, candles.get(2).getMinimo(), 0.00001); | |
Assert.assertEquals(52.3, candles.get(2).getMaximo(), 0.00001); | |
Assert.assertEquals(10410.0, candles.get(2).getVolume(), 0.00001); | |
Assert.assertEquals(depois, candles.get(2).getData()); | |
} | |
@Test | |
public void deveriaCriar1CandlesParaNegociacoesNoMesmoDia() { | |
Calendar hoje = Calendar.getInstance(); | |
Negociacao negociacao1 = new Negociacao(40.5, 100, hoje); | |
Negociacao negociacao2 = new Negociacao(45.0, 100, hoje); | |
Negociacao negociacao3 = new Negociacao(39.8, 100, hoje); | |
Negociacao negociacao4 = new Negociacao(42.3, 100, hoje); | |
List<Negociacao> negociacoes = Arrays.asList(negociacao1, negociacao2, | |
negociacao3, negociacao4); | |
CandlestickFactory fabrica = new CandlestickFactory(); | |
List<Candlestick> candles = fabrica.constroiCandles(negociacoes); | |
Assert.assertEquals(1, candles.size()); | |
Assert.assertEquals(40.5, candles.get(0).getAbertura(), 0.00001); | |
Assert.assertEquals(42.3, candles.get(0).getFechamento(), 0.00001); | |
Assert.assertEquals(39.8, candles.get(0).getMinimo(), 0.00001); | |
Assert.assertEquals(45.0, candles.get(0).getMaximo(), 0.00001); | |
Assert.assertEquals(16760.0, candles.get(0).getVolume(), 0.00001); | |
Assert.assertEquals(hoje, candles.get(0).getData()); | |
} | |
@Test | |
public void naoDeveriaCriarCandlesQuandoNaoHouverNegociacao() { | |
List<Negociacao> negociacoes = new ArrayList<>(); | |
CandlestickFactory fabrica = new CandlestickFactory(); | |
List<Candlestick> candles = fabrica.constroiCandles(negociacoes); | |
Assert.assertEquals(0, candles.size()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment