Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@

# Ignore .DS_Store files
.DS_Store
calcular-rendimento/.settings
calcular-rendimento/apache-maven-3.9.11
calcular-rendimento/target
calcular-rendimento/.classpath
calcular-rendimento/.project
20 changes: 20 additions & 0 deletions calcular-rendimento/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
35 changes: 35 additions & 0 deletions calcular-rendimento/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>br.db.tec.CalcularRendimento</groupId>
<artifactId>CalcularRendimento</artifactId>
<version>1</version>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>6.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.4</version>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package com.br.DbTec.CalcularRendimento;

import java.util.ArrayList;
import java.util.List;

public class CalcularRendimento {

public static void main(String[] args) {
System.out.println("Calculo do Rendimento " + CalculateIncomeAmmout(1000, 10, (float) 9.5, (float) 0.3));

}

/**
* Calculates the final income amount based on compound interest.
* Assumes a monthly tax rate based on SELIC > 8.5% or <= 8.5% plus a
* Referential Tax (TR).
*
* @param ammout The initial investment principal.
* @param numberOfMonths The number of months.
* @param selic The annual SELIC rate (as a percentage, e.g., 9.5).
* @param referencialTax The monthly Referential Tax (as a percentage, e.g.,
* 0.1).
* @return The final total amount (principal + interest).
*/
public static Double CalculateIncomeAmmout(double ammout, int numberOfMonths, float selic, float referencialTax) {

final float tr = referencialTax / 100;
List<Double> results = new ArrayList<>();

double montlyTax;

if (selic <= 8.5) {
montlyTax = 0.007 + tr;
} else {
montlyTax = 0.005 + tr;
}

Double finalAmount = ammout * Math.pow(1.0 + montlyTax, numberOfMonths);
Double finalResult = finalAmount + ammout;

int aux = 1;
while (aux <= numberOfMonths) {
results.add((ammout * Math.pow(1.0 + montlyTax, aux)) + ammout);
aux++;
}
repport(ammout, finalResult, results);

return finalResult;
}

public static void repport(Double initialValue, Double FinalValue, List<Double> results) {

System.out.println("Valor inicial [" + initialValue + "]" + "\nValor Final [" + FinalValue + "]"
+ "\nTabela mes a mes");

results.forEach(result -> {
System.out.println("[" + result + "]");
});

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package com.br.DbTec.CalcularRendimento;

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

/**
* CalcularRendimentoTest
*/
@DisplayName("Teste do calculo de rendimento da poupança")
public class CalcularRendimentoTest {

@DisplayName("Teste para o valor da selic acima de 8,5%. Deve usar o valor 0.5 para o calculo")
@Test
public void CalcularRendimentoComSelicMaiorQue85() {

final double entrada = 1000.00;
int qtdMesses = 10;
final float selic = 8.6f; // maior que 8.5 valor utilizaro sera 0.5
final float taxa = 0.12f;

final double valorEsperado = 2063.70;
double valorCalculado = CalcularRendimento.CalculateIncomeAmmout(entrada, qtdMesses, selic, taxa);

assertEquals(valorCalculado, valorEsperado, 0.1);

}

@DisplayName("Teste para o valor da selic abaixo de 8,5%. Deve usar o valor 0.7 para o calculo")
@Test
public void CalcularRendimentoComSelicMenorQue85() {

final double entrada = 1000.00;
int qtdMesses = 10;
final float selic = 8.4f; // maior que 8.5 valor utilizaro sera 0.7
final float taxa = 0.12f;

final double valorEsperado = 2085.00;
double valorCalculado = CalcularRendimento.CalculateIncomeAmmout(entrada, qtdMesses, selic, taxa);

assertEquals(valorCalculado, valorEsperado, 0.1);

}

@DisplayName("Teste para o valor da selic igual de 8,5%. Deve usar o valor 0.7 para o calculo")
@Test
public void CalcularRendimentoComSelicIgualA85() {

final double entrada = 1000.00;
int qtdMesses = 10;
final float selic = 8.5f; // maior que 8.5 valor utilizaro sera 0.7
final float taxa = 0.12f;

final double valorEsperado = 2085.01;
double valorCalculado = CalcularRendimento.CalculateIncomeAmmout(entrada, qtdMesses, selic, taxa);

assertEquals(valorCalculado, valorEsperado, 0.1);

}
}