Advertisement
Guest User

Untitled

a guest
Jun 27th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.54 KB | None | 0 0
  1. === TEST ===
  2. package org.flyveleder.support;
  3.  
  4. import org.junit.jupiter.api.Test;
  5.  
  6. import java.time.LocalDate;
  7.  
  8. import static org.junit.jupiter.api.Assertions.*;
  9.  
  10. class AgeTest {
  11.  
  12.     @Test
  13.     void getAge() {
  14.  
  15.         LocalDate birthDay =LocalDate.of(1975,11,8);
  16.         LocalDateContract ldc = new MockLocalDateProvider();
  17.         Age age = new Age(birthDay);
  18.         age.setLocalDateProvider(ldc);
  19.         assertEquals(24, age.getAge());
  20.     }
  21.  
  22.     private class MockLocalDateProvider implements LocalDateContract {
  23.  
  24.         @Override
  25.         public LocalDate now() {
  26.             return LocalDate.of(2000,10,10);
  27.         }
  28.     }
  29. }
  30.  
  31.  
  32.  
  33. === IMPL ===
  34. package org.flyveleder.support;
  35.  
  36. import java.time.LocalDate;
  37. import java.time.Period;
  38.  
  39. public class Age {
  40.  
  41.     private final LocalDate birthdate;
  42.     private LocalDateContract localDateProvider = new LocalDateProvider();
  43.  
  44.     public Age(LocalDate birthdate) {
  45.         assert birthdate != null;
  46.         this.birthdate = birthdate;
  47.     }
  48.  
  49.     public int getAge() {
  50.  
  51.         Period period = Period.between(birthdate, localDateProvider.now() );
  52.         return period.getYears();
  53.     }
  54.  
  55.     public boolean isBirthDay() {
  56.         return birthdate.equals(localDateProvider.now());
  57.     }
  58.    
  59.     public void setLocalDateProvider(LocalDateContract ldp) {
  60.         localDateProvider = ldp;
  61.     }
  62.  
  63.     private class LocalDateProvider implements LocalDateContract {
  64.  
  65.         @Override
  66.         public LocalDate now() {
  67.             return LocalDate.now();
  68.         }
  69.     }
  70.  
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement