Skip to content
This repository has been archived by the owner on Aug 2, 2024. It is now read-only.

Commit

Permalink
Replace additional function with custom matcher for better assertion …
Browse files Browse the repository at this point in the history
…errors.
  • Loading branch information
Keworker committed Aug 6, 2023
1 parent f99a3d8 commit 205adc7
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
@@ -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<Calendar>() {
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<Calendar> = HasSameDateWIth(expected)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down

0 comments on commit 205adc7

Please sign in to comment.