Przeglądaj źródła

Merge pull request #28 from pietvandongen/gigasecond

Added exercise gigasecond (see #3)
Katrina Owen 11 lat temu
rodzic
commit
404ba7cc43

+ 2
- 1
config.json Wyświetl plik

14
     "meetup",
14
     "meetup",
15
     "phone-number",
15
     "phone-number",
16
     "grade-school",
16
     "grade-school",
17
-    "space-age"
17
+    "space-age",
18
+    "gigasecond"
18
   ],
19
   ],
19
   "deprecated": [
20
   "deprecated": [
20
   ],
21
   ],

+ 11
- 0
gigasecond/build.gradle Wyświetl plik

1
+apply plugin: "java"
2
+apply plugin: "eclipse"
3
+apply plugin: "idea"
4
+
5
+repositories {
6
+  mavenCentral()
7
+}
8
+
9
+dependencies {
10
+  testCompile "junit:junit:4.10"
11
+}

+ 3
- 0
gigasecond/example.java Wyświetl plik

1
+public class Gigasecond {
2
+
3
+}

+ 0
- 0
gigasecond/src/main/java/.keep Wyświetl plik


+ 19
- 0
gigasecond/src/main/java/Gigasecond.java Wyświetl plik

1
+import java.time.LocalDate;
2
+import java.time.LocalDateTime;
3
+
4
+public class Gigasecond {
5
+
6
+    private LocalDateTime birthDateTime;
7
+
8
+    public Gigasecond(LocalDateTime birthDateTime) {
9
+        this.birthDateTime = birthDateTime;
10
+    }
11
+
12
+    public Gigasecond(LocalDate birthDate) {
13
+        this.birthDateTime = birthDate.atTime(0, 0);
14
+    }
15
+
16
+    public LocalDateTime Date() {
17
+        return birthDateTime.plusSeconds(1000000000);
18
+    }
19
+}

+ 45
- 0
gigasecond/src/test/java/GigasecondTest.java Wyświetl plik

1
+import org.junit.Test;
2
+
3
+import java.time.LocalDate;
4
+import java.time.LocalDateTime;
5
+import java.time.Month;
6
+
7
+import static org.junit.Assert.assertEquals;
8
+
9
+public class GigasecondTest {
10
+
11
+    @Test
12
+    public void modernTime() {
13
+        Gigasecond gigaSecond = new Gigasecond(LocalDate.of(2011, Month.APRIL, 25));
14
+
15
+        assertEquals(gigaSecond.Date(), LocalDateTime.of(2043, Month.JANUARY, 1, 1, 46, 40));
16
+    }
17
+
18
+    @Test
19
+    public void afterEpochTime() {
20
+        Gigasecond gigaSecond = new Gigasecond(LocalDate.of(1977, Month.JUNE, 13));
21
+
22
+        assertEquals(gigaSecond.Date(), LocalDateTime.of(2009, Month.FEBRUARY, 19, 1, 46, 40));
23
+    }
24
+
25
+    @Test
26
+    public void beforeEpochTime() {
27
+        Gigasecond gigaSecond = new Gigasecond(LocalDate.of(1959, Month.JULY, 19));
28
+
29
+        assertEquals(gigaSecond.Date(), LocalDateTime.of(1991, Month.MARCH, 27, 1, 46, 40));
30
+    }
31
+
32
+    @Test
33
+    public void withFullTimeSpecified() {
34
+        Gigasecond gigaSecond = new Gigasecond(LocalDateTime.of(2015, Month.JANUARY, 24, 22, 0, 0));
35
+
36
+        assertEquals(gigaSecond.Date(), LocalDateTime.of(2046, Month.OCTOBER, 2, 23, 46, 40));
37
+    }
38
+
39
+    @Test
40
+    public void withFullTimeSpecifiedAndDayRollover() {
41
+        Gigasecond gigaSecond = new Gigasecond(LocalDateTime.of(2015, Month.JANUARY, 24, 23, 59, 59));
42
+
43
+        assertEquals(gigaSecond.Date(), LocalDateTime.of(2046, Month.OCTOBER, 3, 1, 46, 39));
44
+    }
45
+}