diff --git a/build.gradle b/build.gradle index e20bd0d..ed1e98c 100644 --- a/build.gradle +++ b/build.gradle @@ -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" diff --git a/src/main/java/com/odde/tdd/BudgetRepoImpl.java b/src/main/java/com/odde/tdd/BudgetRepoImpl.java new file mode 100644 index 0000000..a0968d3 --- /dev/null +++ b/src/main/java/com/odde/tdd/BudgetRepoImpl.java @@ -0,0 +1,11 @@ +package com.odde.tdd; + +import java.util.List; + +public class BudgetRepoImpl implements BudgetRepo { + + @Override + public List findAll() { + return null; + } +} diff --git a/src/main/java/com/odde/tdd/CalBudgetAmout.java b/src/main/java/com/odde/tdd/CalBudgetAmout.java new file mode 100644 index 0000000..6e72e71 --- /dev/null +++ b/src/main/java/com/odde/tdd/CalBudgetAmout.java @@ -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 budgetList; + private BudgetRepo budgetRepo; + + public CalBudgetAmout(BudgetRepo budgetRepo) { + this.budgetList = budgetRepo.findAll(); + } + + +// public void setBudgetList(List budgetList) { +// this.budgetList = budgetList; +// } + + + long CalBudgetAmount(LocalDate begin, LocalDate end) { + long amount = 0; + if (end.isBefore(begin)) { + return amount; + } + + Map 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; + } +} diff --git a/src/main/java/com/odde/tdd/FizzBuzz.java b/src/main/java/com/odde/tdd/FizzBuzz.java new file mode 100644 index 0000000..209ece7 --- /dev/null +++ b/src/main/java/com/odde/tdd/FizzBuzz.java @@ -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); + } + } +} diff --git a/src/main/java/com/odde/tdd/PrimeParse.java b/src/main/java/com/odde/tdd/PrimeParse.java new file mode 100644 index 0000000..477e34c --- /dev/null +++ b/src/main/java/com/odde/tdd/PrimeParse.java @@ -0,0 +1,32 @@ +package com.odde.tdd; + +import java.util.ArrayList; +import java.util.List; + +public class PrimeParse { + Integer[] primeParse(int num) { + + List 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); + + } +} diff --git a/src/test/java/com/odde/tdd/CalBudgetAmoutTest.java b/src/test/java/com/odde/tdd/CalBudgetAmoutTest.java new file mode 100644 index 0000000..5855803 --- /dev/null +++ b/src/test/java/com/odde/tdd/CalBudgetAmoutTest.java @@ -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 findAll() { + List 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; + } + } +} diff --git a/src/test/java/com/odde/tdd/EmailNotificationTest.java b/src/test/java/com/odde/tdd/EmailNotificationTest.java new file mode 100644 index 0000000..a8e338a --- /dev/null +++ b/src/test/java/com/odde/tdd/EmailNotificationTest.java @@ -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 argument = ArgumentCaptor.forClass(Email.class); + verify(mailService).send(argument.capture()); + assertEquals(argument.getValue().getTitle(), "Welcome"); + + // Verify the results + } +} diff --git a/src/test/java/com/odde/tdd/FizzBuzzTest.java b/src/test/java/com/odde/tdd/FizzBuzzTest.java new file mode 100644 index 0000000..13f5754 --- /dev/null +++ b/src/test/java/com/odde/tdd/FizzBuzzTest.java @@ -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 \ No newline at end of file diff --git a/src/test/java/com/odde/tdd/PrimeParseTest.java b/src/test/java/com/odde/tdd/PrimeParseTest.java new file mode 100644 index 0000000..2d90f24 --- /dev/null +++ b/src/test/java/com/odde/tdd/PrimeParseTest.java @@ -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)); + } +}