File tree Expand file tree Collapse file tree 2 files changed +33
-0
lines changed
main/java/no/nav/k9/søknad/felles/type
test/java/no/nav/k9/søknad Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -110,6 +110,19 @@ public boolean inneholder(Periode periode) {
110
110
&& (this .tilOgMed == null || (periode .tilOgMed != null && !this .tilOgMed .isBefore (periode .tilOgMed )));
111
111
}
112
112
113
+ /**
114
+ * Sjekk om denne perioden og annenPeriode har overlappende tidsintervaller.
115
+ */
116
+ public boolean overlapper (Periode annenPeriode ) {
117
+ boolean starterFørEllerSamtidigSomAnnenPeriodeSlutter = this .fraOgMed == null || this .fraOgMed != null && annenPeriode .getTilOgMed () == null || this .fraOgMed != null && annenPeriode .getTilOgMed () != null && (this .fraOgMed .isEqual (annenPeriode .getTilOgMed ()) || this .fraOgMed .isBefore (annenPeriode .getTilOgMed ()));
118
+ if (!starterFørEllerSamtidigSomAnnenPeriodeSlutter ) {
119
+ return false ;
120
+ } else {
121
+ boolean slutterEtterEllerSamtidigSomPeriodeStarter = this .tilOgMed == null || this .tilOgMed != null && annenPeriode .getFraOgMed () == null || this .tilOgMed != null && annenPeriode .getFraOgMed () != null && (this .tilOgMed .isEqual (annenPeriode .getFraOgMed ()) || this .tilOgMed .isAfter (annenPeriode .getFraOgMed ()));
122
+ return slutterEtterEllerSamtidigSomPeriodeStarter ;
123
+ }
124
+ }
125
+
113
126
private static void verifiserKanVæreGyldigPeriode (String iso8601 ) {
114
127
if (iso8601 == null || iso8601 .split (SKILLE ).length != 2 ) {
115
128
throw new IllegalArgumentException ("Periode på ugylig format '" + iso8601 + "'." );
Original file line number Diff line number Diff line change @@ -146,4 +146,24 @@ public void TestLeggTilPeriodeUtenDuplikater() {
146
146
assertThat (perioder ).hasSize (2 );
147
147
assertThat (perioder .keySet ()).containsAll (Set .of (periode1 , periode2 ));
148
148
}
149
+
150
+ /*
151
+ * Kontrollerer at perioder som ikke overlapper får forventede resultater ved å kalle Periode#overlapper.
152
+ * Tester både med periode som ligger kant-til-kant og perioder som ikke ligger kant-til-kant.
153
+ */
154
+ @ Test
155
+ public void TestOverlapperPåIkkeOverlappendePerioder () {
156
+ var periode1 = Periode .parse ("2020-01-01/2020-01-10" );
157
+ var periode2 = Periode .parse ("2020-01-11/2020-01-20" );
158
+ var periode3 = Periode .parse ("2020-01-20/2020-01-30" );
159
+ assertThat (periode1 .overlapper (periode2 )).isFalse ();
160
+ assertThat (periode1 .overlapper (periode3 )).isFalse ();
161
+ }
162
+
163
+ @ Test
164
+ public void TestOverlapperPåOverlappendePerioder () {
165
+ var periode1 = Periode .parse ("2020-01-01/2020-01-10" );
166
+ var periode2 = Periode .parse ("2020-01-10/2020-01-19" );
167
+ assertThat (periode1 .overlapper (periode2 )).isTrue ();
168
+ }
149
169
}
You can’t perform that action at this time.
0 commit comments