Skip to content

Instantly share code, notes, and snippets.

@rcaneppele
Last active September 27, 2017 12:30
Show Gist options
  • Save rcaneppele/e1516956debcebbdc9041367a023ed03 to your computer and use it in GitHub Desktop.
Save rcaneppele/e1516956debcebbdc9041367a023ed03 to your computer and use it in GitHub Desktop.
FJ-22 - CandlestickFactory com Java 8 e Testes de Unidade
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;
}
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