diff --git a/app/src/test/java/com/google/samples/apps/sunflower/data/ConvertersTest.kt b/app/src/test/java/com/google/samples/apps/sunflower/data/ConvertersTest.kt index 1eca92cbb..a43601484 100644 --- a/app/src/test/java/com/google/samples/apps/sunflower/data/ConvertersTest.kt +++ b/app/src/test/java/com/google/samples/apps/sunflower/data/ConvertersTest.kt @@ -24,7 +24,7 @@ import java.util.Calendar.MONTH import java.util.Calendar.SEPTEMBER import java.util.Calendar.YEAR -class ConvertersTest { +internal class ConvertersTest { private val cal = Calendar.getInstance().apply { set(YEAR, 1998) diff --git a/app/src/test/java/com/google/samples/apps/sunflower/data/GardenPlantingTest.kt b/app/src/test/java/com/google/samples/apps/sunflower/data/GardenPlantingTest.kt index 545e07601..7912da85a 100644 --- a/app/src/test/java/com/google/samples/apps/sunflower/data/GardenPlantingTest.kt +++ b/app/src/test/java/com/google/samples/apps/sunflower/data/GardenPlantingTest.kt @@ -16,30 +16,20 @@ package com.google.samples.apps.sunflower.data -import org.hamcrest.CoreMatchers.equalTo +import com.google.samples.apps.sunflower.test.HasSameDateWIth.Companion.hasSameDateWith import org.hamcrest.MatcherAssert.assertThat import org.junit.Assert.assertEquals import org.junit.Test import java.util.Calendar -import java.util.Calendar.DAY_OF_MONTH -import java.util.Calendar.MONTH -import java.util.Calendar.YEAR -class GardenPlantingTest { +internal class GardenPlantingTest { @Test fun testDefaultValues() { val gardenPlanting = GardenPlanting("1") - val cal = Calendar.getInstance() - assertYMD(cal, gardenPlanting.plantDate) - assertYMD(cal, gardenPlanting.lastWateringDate) + val calendar = Calendar.getInstance() + assertThat(gardenPlanting.plantDate, hasSameDateWith(calendar)) + assertThat(gardenPlanting.lastWateringDate, hasSameDateWith(calendar)) assertEquals(0L, gardenPlanting.gardenPlantingId) } - - // Only Year/Month/Day precision is needed for comparing GardenPlanting Calendar entries - private fun assertYMD(expectedCal: Calendar, actualCal: Calendar) { - assertThat(actualCal.get(YEAR), equalTo(expectedCal.get(YEAR))) - assertThat(actualCal.get(MONTH), equalTo(expectedCal.get(MONTH))) - assertThat(actualCal.get(DAY_OF_MONTH), equalTo(expectedCal.get(DAY_OF_MONTH))) - } } diff --git a/app/src/test/java/com/google/samples/apps/sunflower/data/PlantTest.kt b/app/src/test/java/com/google/samples/apps/sunflower/data/PlantTest.kt index da847f144..5c20f0130 100644 --- a/app/src/test/java/com/google/samples/apps/sunflower/data/PlantTest.kt +++ b/app/src/test/java/com/google/samples/apps/sunflower/data/PlantTest.kt @@ -24,7 +24,7 @@ import org.junit.Test import java.util.Calendar import java.util.Calendar.DAY_OF_YEAR -class PlantTest { +internal class PlantTest { private lateinit var plant: Plant diff --git a/app/src/test/java/com/google/samples/apps/sunflower/test/HasSameDateWIth.kt b/app/src/test/java/com/google/samples/apps/sunflower/test/HasSameDateWIth.kt new file mode 100644 index 000000000..6c5ad93fd --- /dev/null +++ b/app/src/test/java/com/google/samples/apps/sunflower/test/HasSameDateWIth.kt @@ -0,0 +1,57 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.samples.apps.sunflower.test + +import org.hamcrest.Description +import org.hamcrest.Factory +import org.hamcrest.Matcher +import org.hamcrest.TypeSafeDiagnosingMatcher +import java.text.SimpleDateFormat +import java.util.Calendar +import java.util.Calendar.DAY_OF_MONTH +import java.util.Calendar.MONTH +import java.util.Calendar.YEAR + +/** + * Calendar matcher. + * Only Year/Month/Day precision is needed for comparing GardenPlanting Calendar entries + */ +internal class HasSameDateWIth( + private val expected: Calendar +) : TypeSafeDiagnosingMatcher() { + private val formatter = SimpleDateFormat("dd.MM.yyyy") + + override fun describeTo(description: Description?) { + description?.appendText(formatter.format(expected.time)) + } + + override fun matchesSafely(actual: Calendar?, mismatchDescription: Description?): Boolean { + return (actual?.let { + actual.get(YEAR) == expected.get(YEAR) && + actual.get(MONTH) == expected.get(MONTH) && + actual.get(DAY_OF_MONTH) == expected.get(DAY_OF_MONTH) + } ?: false).also { _ -> + mismatchDescription?.appendText("was ") + ?.appendText(actual?.time?.let { formatter.format(it) } ?: "null") + } + } + + companion object { + @Factory + fun hasSameDateWith(expected: Calendar): Matcher = HasSameDateWIth(expected) + } +} diff --git a/app/src/test/java/com/google/samples/apps/sunflower/utilities/GrowZoneUtilTest.kt b/app/src/test/java/com/google/samples/apps/sunflower/utilities/GrowZoneUtilTest.kt index 7279389be..54d09e7c2 100644 --- a/app/src/test/java/com/google/samples/apps/sunflower/utilities/GrowZoneUtilTest.kt +++ b/app/src/test/java/com/google/samples/apps/sunflower/utilities/GrowZoneUtilTest.kt @@ -19,7 +19,7 @@ package com.google.samples.apps.sunflower.utilities import org.junit.Assert.assertEquals import org.junit.Test -class GrowZoneUtilTest { +internal class GrowZoneUtilTest { @Test fun getZoneForLatitude() { assertEquals(13, getZoneForLatitude(0.0))