Skip to content

Commit bf3dcd6

Browse files
authored
Fix NullableDate (#360)
1 parent 7856fe6 commit bf3dcd6

File tree

6 files changed

+97
-7
lines changed

6 files changed

+97
-7
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>dev.katsute</groupId>
88
<artifactId>mal4j</artifactId>
9-
<version>3.0.0</version>
9+
<version>3.0.1</version>
1010

1111
<profiles>
1212
<profile>

src/main/java/dev/katsute/mal4j/MyAnimeListSchema.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,9 @@ protected static NullableDate parseNullableDate(final String date){
7575
}
7676
});
7777

78-
private final Integer year = requireNonNull(() -> Integer.valueOf(parts[0]));
79-
private final Integer month = requireNonNull(() -> Integer.valueOf(parts[1]));
80-
private final Integer day = requireNonNull(() -> Integer.valueOf(parts[2]));
78+
private final Integer year = requireNonNull(() -> parts.length < 1 ? null : Integer.valueOf(parts[0]));
79+
private final Integer month = requireNonNull(() -> parts.length < 2 ? null : Integer.valueOf(parts[1]));
80+
private final Integer day = requireNonNull(() -> parts.length < 3 ? null : Integer.valueOf(parts[2]));
8181

8282
@Override
8383
public final Integer getYear(){
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package dev.katsute.mal4j;
2+
3+
import dev.katsute.mal4j.anime.property.time.Time;
4+
import dev.katsute.mal4j.property.NullableDate;
5+
import org.junit.jupiter.api.Test;
6+
7+
import static org.junit.jupiter.api.Assertions.*;
8+
9+
final class TestDateTime {
10+
11+
@Test
12+
final void testDate(){
13+
assertNotNull(MyAnimeListSchema.parseDate("2020-03-14"));
14+
assertNotNull(MyAnimeListSchema.parseDate("2020-03"));
15+
assertNotNull(MyAnimeListSchema.parseDate("2020"));
16+
assertNull(MyAnimeListSchema.parseDate("-"));
17+
assertNull(MyAnimeListSchema.parseDate(""));
18+
assertNull(MyAnimeListSchema.parseDate(null));
19+
}
20+
21+
@Test
22+
final void testNullableDateYMD(){
23+
final NullableDate date = MyAnimeListSchema.parseNullableDate("2020-03-14");
24+
assertEquals(2020, date.getYear());
25+
assertEquals(3, date.getMonth());
26+
assertEquals(14, date.getDay());
27+
assertNotNull(date.getMillis());
28+
assertNotNull(date.getDate());
29+
}
30+
31+
@Test
32+
final void testNullableDateYM(){
33+
final NullableDate date = MyAnimeListSchema.parseNullableDate("2020-03");
34+
assertEquals(2020, date.getYear());
35+
assertEquals(3, date.getMonth());
36+
assertNull(date.getDay());
37+
assertNotNull(date.getMillis());
38+
assertNotNull(date.getDate());
39+
}
40+
41+
@Test
42+
final void testNullableDateY(){
43+
final NullableDate date = MyAnimeListSchema.parseNullableDate("2020");
44+
assertEquals(2020, date.getYear());
45+
assertNull(date.getMonth());
46+
assertNull(date.getDay());
47+
assertNotNull(date.getMillis());
48+
assertNotNull(date.getDate());
49+
}
50+
51+
@Test
52+
final void testNullableDateNull(){
53+
assertNull(MyAnimeListSchema.parseDate("-"));
54+
assertNull(MyAnimeListSchema.parseDate(""));
55+
assertNull(MyAnimeListSchema.parseDate(null));
56+
}
57+
58+
@Test
59+
final void testYMD(){
60+
assertEquals("2020-03-14", MyAnimeListSchema.asYMD(1584158400000L));
61+
assertNull(MyAnimeListSchema.asYMD(null));
62+
}
63+
64+
@Test
65+
final void testISO(){
66+
assertEquals(1584144000000L, MyAnimeListSchema.parseISO8601("2020-03-14T00:00:00+00:00"));
67+
assertNull(MyAnimeListSchema.parseISO8601(null));
68+
}
69+
70+
@Test
71+
final void testTimeAM(){
72+
final Time time = MyAnimeListSchema.asTime("01:23");
73+
assertEquals(1, time.get12Hour());
74+
assertEquals(1, time.getHour());
75+
assertEquals(23, time.getMinute());
76+
assertTrue(time.isAM());
77+
assertFalse(time.isPM());
78+
}
79+
80+
@Test
81+
final void testTimePM(){
82+
final Time time = MyAnimeListSchema.asTime("14:56");
83+
assertEquals(2, time.get12Hour());
84+
assertEquals(14, time.getHour());
85+
assertEquals(56, time.getMinute());
86+
assertFalse(time.isAM());
87+
assertTrue(time.isPM());
88+
}
89+
90+
}

src/test/java/dev/katsute/mal4j/TestExperimentalEnabler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import org.junit.jupiter.api.*;
77

88
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
9-
public class TestExperimentalEnabler {
9+
final class TestExperimentalEnabler {
1010

1111
private static MyAnimeList mal;
1212

src/test/java/dev/katsute/mal4j/TestJson.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import static org.junit.jupiter.api.Assertions.*;
1717

1818
@SuppressWarnings("SpellCheckingInspection")
19-
public class TestJson {
19+
final class TestJson {
2020

2121
private static JsonObject jsonObject;
2222
private static List<?> jsonArray;

src/test/java/dev/katsute/mal4j/TestREADME.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
// this tests only that code compiles
1616
@SuppressWarnings("unused")
17-
public class TestREADME {
17+
abstract class TestREADME {
1818

1919
public void testSearchQueries(){
2020
MyAnimeList mal = MyAnimeList.withClientID("");

0 commit comments

Comments
 (0)