#26 added fixed test files, made Crop class testable

This commit is contained in:
David Guler
2022-11-03 14:28:26 +01:00
parent ce93531ab8
commit 83bc011870
5 changed files with 69 additions and 32 deletions
@@ -20,7 +20,7 @@ import java.util.Map;
import java.util.Optional;
public class JsonGardenPlan implements GardenPlan {
private final URL dataSource = getClass().getResource("user-crops.json");
private final URL dataSource;
private IdProvider idProvider;
private Map<Long, Crop> cropMap = Collections.emptyMap();
@@ -40,7 +40,21 @@ public class JsonGardenPlan implements GardenPlan {
}
/**
* @see GardenPlan#getCrops()
* Default constructor
*/
public JsonGardenPlan() {
this.dataSource = getClass().getResource("user-crops.json");
}
/**
* Constructor to use a specified {@link URL} as a {@link #dataSource}
* @param dataSource A {@link URL} to the file to be used as a data source
*/
public JsonGardenPlan(URL dataSource) {
this.dataSource = dataSource;
}
/**
* {@inheritDoc}
*/
@Override
public List<Crop> getCrops() throws IOException {
@@ -51,7 +65,7 @@ public class JsonGardenPlan implements GardenPlan {
}
/**
* @see GardenPlan#getCropById(long)
* {@inheritDoc}
*/
@Override
public Optional<Crop> getCropById(long id) throws IOException {
@@ -62,7 +76,7 @@ public class JsonGardenPlan implements GardenPlan {
}
/**
* @see GardenPlan#saveCrop(Crop)
* {@inheritDoc}
*
* Saves a crop to the database.
* If no {@link Crop#cropId} is set, one will be generated and
@@ -79,7 +93,7 @@ public class JsonGardenPlan implements GardenPlan {
}
/**
* @see GardenPlan#removeCrop(Crop)
* {@inheritDoc}
*/
@Override
public void removeCrop(Crop crop) throws IOException {
@@ -1,6 +1,7 @@
package ch.zhaw.gartenverwaltung.types;
import java.time.LocalDate;
import java.util.Objects;
import java.util.Optional;
public class Crop {
@@ -41,6 +42,24 @@ public class Crop {
public LocalDate getStartDate() { return startDate; }
public double getArea() { return area; }
@Override
public boolean equals(Object other) {
if (this == other) return true;
if (other instanceof Crop otherCrop) {
return Objects.equals(this.cropId, otherCrop.cropId) &&
plantId == otherCrop.plantId &&
startDate != null && startDate.equals(otherCrop.startDate) &&
area == otherCrop.area;
}
return false;
}
@Override
public int hashCode() {
int startCode = startDate != null ? startDate.hashCode() : 0;
return (int) plantId ^ (startCode << 16);
}
@Override
public String toString() {
return String.format("Crop [ cropId: %d, plantId: %d, startDate: %s, area: %f ]",