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
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ repositories {
}

dependencies {
implementation 'org.junit.jupiter:junit-jupiter:5.7.0'
testImplementation group: 'junit', name: 'junit', version: '4.13.2'
testImplementation group: 'org.mockito', name: 'mockito-core', version: '3.12.4'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/com/odde/tdd/BudgetRepoImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.odde.tdd;

import java.util.List;

public class BudgetRepoImpl implements BudgetRepo {

@Override
public List<Budget> findAll() {
return null;
}
}
60 changes: 60 additions & 0 deletions src/main/java/com/odde/tdd/CalBudgetAmout.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.odde.tdd;

import static java.time.temporal.ChronoUnit.DAYS;

import java.time.Duration;
import java.time.LocalDate;
import java.time.Month;
import java.time.Year;
import java.time.YearMonth;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collector;
import java.util.stream.Collectors;

public class CalBudgetAmout {

private List<Budget> budgetList;
private BudgetRepo budgetRepo;

public CalBudgetAmout(BudgetRepo budgetRepo) {
this.budgetList = budgetRepo.findAll();
}


// public void setBudgetList(List<Budget> budgetList) {
// this.budgetList = budgetList;
// }


long CalBudgetAmount(LocalDate begin, LocalDate end) {
long amount = 0;
if (end.isBefore(begin)) {
return amount;
}

Map<YearMonth, Long> budgetMap = budgetList.stream().collect(
Collectors.toMap(Budget::getMonth, Budget::getAmount));
budgetMap.replaceAll((k, v) -> v / k.lengthOfMonth());

LocalDate date = begin;
while (!date.isAfter(end)) {
if(!Objects.isNull(budgetMap.get(YearMonth.from(date)))) {
if ((date.getYear() == end.getYear()) && (date.getMonth() == end.getMonth())) {
//same month
long daysBetween = DAYS.between(date, end) + 1;
// System.out.println("days diff ==" + daysBetween);
amount += budgetMap.get(YearMonth.from(date)) * daysBetween;
} else {
amount += budgetMap.get(YearMonth.from(date)) * (date.lengthOfMonth() - date.getDayOfMonth() + 1);
}
}
date = date.plusMonths(1);
date = date.withDayOfMonth(1);
}

return amount;
}
}
19 changes: 19 additions & 0 deletions src/main/java/com/odde/tdd/FizzBuzz.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.odde.tdd;

public class FizzBuzz {
String FizzBuzz(int number) {
if (number <= 0) {
return "error";
}

if (number % 15 == 0) {
return "FizzBuzz";
} else if (number % 5 == 0) {
return "Buzz";
} else if (number % 3 == 0) {
return "Fizz";
} else {
return String.valueOf(number);
}
}
}
32 changes: 32 additions & 0 deletions src/main/java/com/odde/tdd/PrimeParse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.odde.tdd;

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

public class PrimeParse {
Integer[] primeParse(int num) {

List<Integer> testList = new ArrayList<>();
Integer[] arr;

if(num <= 1) {
arr = new Integer[ testList.size() ];
return testList.toArray(arr);
}
int j = 2;
while(num > 1) {
for(int i = j; i <= num; i ++) {
if(num % i == 0) {
testList.add(i);
num = num/i;
j = i;
break;
}
}
}

arr = new Integer[ testList.size() ];
return testList.toArray(arr);

}
}
55 changes: 55 additions & 0 deletions src/test/java/com/odde/tdd/CalBudgetAmoutTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package com.odde.tdd;

import static org.junit.Assert.assertEquals;

import java.time.LocalDate;
import java.time.YearMonth;
import java.util.Arrays;
import java.util.List;
import org.junit.Before;
import org.junit.Test;

public class CalBudgetAmoutTest {

private CalBudgetAmout calBudgetAmoutUnderTest;

@Before
public void setUp() {
calBudgetAmoutUnderTest = new CalBudgetAmout(new MockBudgetRepo());
}

@Test
public void testCalBudgetAmount() {
assertEquals(0, calBudgetAmoutUnderTest.CalBudgetAmount(LocalDate.of(2020, 5, 1),
LocalDate.of(2020, 4, 1)));
assertEquals(100, calBudgetAmoutUnderTest.CalBudgetAmount(LocalDate.of(2020, 5, 1),
LocalDate.of(2020, 5, 1)));
assertEquals(500, calBudgetAmoutUnderTest.CalBudgetAmount(LocalDate.of(2020, 5, 1),
LocalDate.of(2020, 5, 5)));
assertEquals(3110, calBudgetAmoutUnderTest.CalBudgetAmount(LocalDate.of(2020, 5, 1),
LocalDate.of(2020, 6, 1)));
assertEquals(3110, calBudgetAmoutUnderTest.CalBudgetAmount(LocalDate.of(2020, 4, 3),
LocalDate.of(2020, 6, 1)));
assertEquals(3410, calBudgetAmoutUnderTest.CalBudgetAmount(LocalDate.of(2020, 4, 3),
LocalDate.of(2020, 7, 1)));
assertEquals(3710, calBudgetAmoutUnderTest.CalBudgetAmount(LocalDate.of(2020, 4, 3),
LocalDate.of(2020, 8, 5)));
assertEquals(440, calBudgetAmoutUnderTest.CalBudgetAmount(LocalDate.of(2020, 5, 31),
LocalDate.of(2020, 7, 4)));
assertEquals(5810, calBudgetAmoutUnderTest.CalBudgetAmount(LocalDate.of(2019, 11, 11),
LocalDate.of(2021, 2, 10)));
}

public class MockBudgetRepo implements BudgetRepo {

@Override
public List<Budget> findAll() {
List<Budget> budgetList = Arrays.asList(new Budget(YearMonth.of(2019, 11), 3000),
new Budget(YearMonth.of(2020, 5), 3100),
new Budget(YearMonth.of(2020, 6), 300),
new Budget(YearMonth.of(2020, 7), 310),
new Budget(YearMonth.of(2021, 2), 280));
return budgetList;
}
}
}
44 changes: 44 additions & 0 deletions src/test/java/com/odde/tdd/EmailNotificationTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.odde.tdd;

import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;

import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.jupiter.api.BeforeEach;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

public class EmailNotificationTest {

private EmailNotification emailNotificationUnderTest;
@Mock
private MailService mailService;

// @Before
// public void setUp() {
// emailNotificationUnderTest = new EmailNotification();
// }

@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
emailNotificationUnderTest = new EmailNotification();
}

@Test
public void testWelcome() {
// Setup
// Run the test
emailNotificationUnderTest.welcome("email");
ArgumentCaptor<Email> argument = ArgumentCaptor.forClass(Email.class);
verify(mailService).send(argument.capture());
assertEquals(argument.getValue().getTitle(), "Welcome");

// Verify the results
}
}
49 changes: 49 additions & 0 deletions src/test/java/com/odde/tdd/FizzBuzzTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.odde.tdd;

import static org.junit.Assert.assertEquals;

import org.junit.Before;
import org.junit.Test;
//import org.junit.jupiter.api.Assertions;
//import org.junit.jupiter.api.Test;

public class FizzBuzzTest {

FizzBuzz fizzBuzz = new FizzBuzz();

// @Before
// public void setup()
// {fizzBuzz= new FizzBuzz();}

@Test
public void input_should_bigger_than_0() {
assertEquals("error", fizzBuzz.FizzBuzz(-3));
}
// String result = fizzBuzz.FizzBuzz(1);
// assertEquals("1", result);

@Test
public void normal_number() {
assertEquals("1", fizzBuzz.FizzBuzz(1));
}

@Test
public void fizz() {

assertEquals("Fizz", fizzBuzz.FizzBuzz(3));
}

@Test
public void buzz() {

assertEquals("Buzz", fizzBuzz.FizzBuzz(5));

}
@Test
public void fizzbuzz() {

assertEquals("FizzBuzz", fizzBuzz.FizzBuzz(15));
}
}

//Generated with love by TestMe :) Please report issues and submit feature requests at: http://weirddev.com/forum#!/testme
37 changes: 37 additions & 0 deletions src/test/java/com/odde/tdd/PrimeParseTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.odde.tdd;

import static org.junit.Assert.assertArrayEquals;

import org.junit.Before;
import org.junit.Test;

public class PrimeParseTest {

private PrimeParse primeParseUnderTest;

@Before
public void setUp() {
primeParseUnderTest = new PrimeParse();
}

@Test
public void testPrimeParse_Prime() {
assertArrayEquals(new Integer[]{2}, primeParseUnderTest.primeParse(2));
// assertArrayEquals(new Integer[]{13}, primeParseUnderTest.primeParse(13));
}

@Test
public void testPrimeParse_illegal() {
assertArrayEquals(new Integer[]{}, primeParseUnderTest.primeParse(1));
assertArrayEquals(new Integer[]{}, primeParseUnderTest.primeParse(-1));

}

@Test
public void testPrimeParse_normal() {
// assertArrayEquals(new Integer[]{2, 3}, primeParseUnderTest.primeParse(6));
// assertArrayEquals(new Integer[]{2, 2, 2}, primeParseUnderTest.primeParse(8));
assertArrayEquals(new Integer[]{2, 3, 5}, primeParseUnderTest.primeParse(30));
assertArrayEquals(new Integer[]{2, 2, 5, 5}, primeParseUnderTest.primeParse(100));
}
}