From c6ed898cef42588061c28e6d6196303d7b1b5346 Mon Sep 17 00:00:00 2001
From: Brandon Clayton <bclayton@usgs.gov>
Date: Thu, 31 Aug 2023 13:32:46 -0600
Subject: [PATCH] test

---
 gradle/nshm.gradle                            |  2 +-
 .../nshmp/model/Conus2018Tests.java           | 42 +++++++++++++++++++
 .../earthquake/nshmp/model/NshmTestUtils.java | 12 ++++++
 .../earthquake/nshmp/model/NshmTests.java     | 18 ++++----
 4 files changed, 64 insertions(+), 10 deletions(-)
 create mode 100644 src/test/java/gov/usgs/earthquake/nshmp/model/Conus2018Tests.java

diff --git a/gradle/nshm.gradle b/gradle/nshm.gradle
index 910405dd..008bf38f 100644
--- a/gradle/nshm.gradle
+++ b/gradle/nshm.gradle
@@ -152,7 +152,7 @@ task testConus2018(type: Test) {
       )
 
   filter {
-    includeTestsMatching "gov.usgs.earthquake.nshmp.model.NshmTests.testConus2018"
+    includeTestsMatching "gov.usgs.earthquake.nshmp.model.Conus2018Tests"
   }
 }
 
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/Conus2018Tests.java b/src/test/java/gov/usgs/earthquake/nshmp/model/Conus2018Tests.java
new file mode 100644
index 00000000..baeb1da4
--- /dev/null
+++ b/src/test/java/gov/usgs/earthquake/nshmp/model/Conus2018Tests.java
@@ -0,0 +1,42 @@
+package gov.usgs.earthquake.nshmp.model;
+
+import java.io.IOException;
+import java.util.stream.Stream;
+
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.api.TestInstance.Lifecycle;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import gov.usgs.earthquake.nshmp.NamedLocation;
+import gov.usgs.earthquake.nshmp.model.NshmTestUtils.Nshm;
+import gov.usgs.earthquake.nshmp.model.NshmTestUtils.NshmModel;
+
+@TestInstance(Lifecycle.PER_CLASS)
+class Conus2018Tests {
+
+  Nshm nshm = NshmTests.NSHMS.get("nshm-conus-2018");
+  NshmModel nshmModel;
+
+  @BeforeAll
+  void load() {
+    nshmModel = NshmTestUtils.loadModel(nshm);
+  }
+
+  @AfterAll
+  void stop() {
+    nshmModel.exec.shutdown();
+  }
+
+  @ParameterizedTest
+  @MethodSource("conusSites")
+  final void testConus2018(NamedLocation location) throws IOException {
+    NshmTestUtils.testNshm(nshmModel, location);
+  }
+
+  private static Stream<NamedLocation> conusSites() {
+    return NshmTests.CONUS_LOCATIONS.stream();
+  }
+}
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java
index 8edc4534..91d95cf6 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestUtils.java
@@ -100,6 +100,18 @@ class NshmTestUtils {
     nshmModel.exec.shutdown();
   }
 
+  static void testNshm(Nshm nshm, NamedLocation location) {
+    NshmModel nshmModel = loadModel(nshm);
+    LOGGER.info("Location: " + location.toString());
+    compareCurves(nshmModel, location);
+    nshmModel.exec.shutdown();
+  }
+
+  static void testNshm(NshmModel nshmModel, NamedLocation location) {
+    LOGGER.info("Location: " + location.toString());
+    compareCurves(nshmModel, location);
+  }
+
   /**
    * Write expected values
    *
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java
index 58cc6adc..a5ba46a7 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java
@@ -10,8 +10,8 @@ import java.util.Optional;
 import java.util.Set;
 
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestInstance;
-import org.junit.jupiter.api.TestInstance.Lifecycle;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import gov.usgs.earthquake.nshmp.NamedLocation;
 import gov.usgs.earthquake.nshmp.gmm.Imt;
@@ -23,10 +23,9 @@ import gov.usgs.earthquake.nshmp.site.NshmpSite;
 /**
  * Test NSHMs.
  */
-@TestInstance(Lifecycle.PER_CLASS)
 class NshmTests {
   /* Alaska test sites */
-  private static final List<NamedLocation> ALASKA_LOCATIONS = List.of(
+  static final List<NamedLocation> ALASKA_LOCATIONS = List.of(
       NshmpSite.ANCHORAGE_AK,
       NshmpSite.FAIRBANKS_AK,
       NshmpSite.JUNEAU_AK,
@@ -34,7 +33,7 @@ class NshmTests {
       NshmpSite.VALDEZ_AK);
 
   /* CONUS test sites */
-  private static final List<NamedLocation> CONUS_LOCATIONS = List.of(
+  static final List<NamedLocation> CONUS_LOCATIONS = List.of(
       NshmpSite.LOS_ANGELES_CA,
       NshmpSite.SAN_FRANCISCO_CA,
       NshmpSite.SEATTLE_WA,
@@ -54,7 +53,7 @@ class NshmTests {
   private static final Set<Imt> IMTS = EnumSet.of(Imt.PGA, Imt.SA0P2, Imt.SA1P0, Imt.SA5P0);
   private static final Set<Imt> AK_2007_IMTS = EnumSet.of(Imt.PGA, Imt.SA0P2, Imt.SA1P0);
 
-  private static final Map<String, Nshm> NSHMS;
+  static final Map<String, Nshm> NSHMS;
 
   static {
     Map<String, Nshm> nshms = new HashMap<>();
@@ -137,9 +136,10 @@ class NshmTests {
    *
    * To run test: ./gradlew testConus2018
    */
-  @Test
-  final void testConus2018() throws IOException {
-    NshmTestUtils.testNshm(NSHMS.get("nshm-conus-2018"), Optional.ofNullable(getSite()));
+  @ParameterizedTest
+  @MethodSource("conusSites")
+  final void testConus2018(NamedLocation location) throws IOException {
+    NshmTestUtils.testNshm(NSHMS.get("nshm-conus-2018"), location);
   }
 
   /**
-- 
GitLab