From 8245de8336ff53a7406b3e7149ed78e353e6461c Mon Sep 17 00:00:00 2001
From: "Timothy A. Smith" <tasmith4@illinois.edu>
Date: Sun, 21 Jul 2019 23:32:58 -0500
Subject: [PATCH] introduce first version of fixture to replace parametrization

---
 test.py | 111 ++++++++++++++++++++++++++++++++++++++++----------------
 1 file changed, 80 insertions(+), 31 deletions(-)

diff --git a/test.py b/test.py
index d117069..995067a 100644
--- a/test.py
+++ b/test.py
@@ -356,21 +356,78 @@ def test_pointwise_eigenvalues_ideal_gas(
     u.compare_arrays(lam_dev.get(), lam_expected)
 
 
-@pytest.mark.parametrize("states_str,fluxes_str,direction", [
-    ("2 4 4 4 20,1 1 1 1 5.5", "4 11.2 8 8 46.4,1 2.6 1 1 7.1", "x"),
-    ("2 4 4 4 20,1 1 1 1 5.5", "4 8 11.2 8 46.4,1 1 2.6 1 7.1", "y"),
-    ("2 4 4 4 20,1 1 1 1 5.5", "4 8 8 11.2 46.4,1 1 1 2.6 7.1", "z"),
-    ("1 -1 -1 -1 5.5,2 -4 -4 -4 20", "-1 2.6 1 1 -7.1,-4 11.2 8 8 -46.4", "x"),
-    ("1 -1 -1 -1 5.5,2 -4 -4 -4 20", "-1 1 2.6 1 -7.1,-4 8 11.2 8 -46.4", "y"),
-    ("1 -1 -1 -1 5.5,2 -4 -4 -4 20", "-1 1 1 2.6 -7.1,-4 8 8 11.2 -46.4", "z"),
-    ("2 4 8 12 64,1 1 2 3 11", "4 11.2 16 24 134.4,1 2.6 2 3 12.6", "x"),
-    ("2 4 8 12 64,1 1 2 3 11", "8 16 35.2 48 268.8,2 2 5.6 6 25.2", "y"),
-    ("2 4 8 12 64,1 1 2 3 11", "12 24 48 75.2 403.2,3 3 6 10.6 37.8", "z"),
-    ("1 -1 -2 -3 11,2 -4 -8 -12 64", "-1 2.6 2 3 -12.6,-4 11.2 16 24 -134.4", "x"),
-    ("1 -1 -2 -3 11,2 -4 -8 -12 64", "-2 2 5.6 6 -25.2,-8 16 35.2 48 -268.8", "y"),
-    ("1 -1 -2 -3 11,2 -4 -8 -12 64", "-3 3 6 10.6 -37.8,-12 24 48 75.2 -403.2", "z")
-    ])
-def test_roe_uniform_grid_ideal_gas(ctx_factory, states_str, fluxes_str, direction):
+class FluxDataSingle:
+    nvars = 5
+    ndim = 3
+    dirs = {"x": 1, "y": 2, "z": 3}
+
+    def __init__(self, states_str, fluxes_str, direction):
+        self.states = u.transposed_array_from_string(states_str)
+        self.fluxes = u.transposed_array_from_string(fluxes_str)
+        self.direction = self.dirs[direction]
+
+
+uniformData = {}
+uniformData["Case a:x"] = FluxDataSingle(
+        "2 4 4 4 20,1 1 1 1 5.5",
+        "4 11.2 8 8 46.4,1 2.6 1 1 7.1",
+        "x")
+uniformData["Case a:y"] = FluxDataSingle(
+        "2 4 4 4 20,1 1 1 1 5.5",
+        "4 8 11.2 8 46.4,1 1 2.6 1 7.1",
+        "y")
+uniformData["Case a:z"] = FluxDataSingle(
+        "2 4 4 4 20,1 1 1 1 5.5",
+        "4 8 8 11.2 46.4,1 1 1 2.6 7.1",
+        "z")
+uniformData["Case b:x"] = FluxDataSingle(
+        "1 -1 -1 -1 5.5,2 -4 -4 -4 20",
+        "-1 2.6 1 1 -7.1,-4 11.2 8 8 -46.4",
+        "x")
+uniformData["Case b:y"] = FluxDataSingle(
+        "1 -1 -1 -1 5.5,2 -4 -4 -4 20",
+        "-1 1 2.6 1 -7.1,-4 8 11.2 8 -46.4",
+        "y")
+uniformData["Case b:z"] = FluxDataSingle(
+        "1 -1 -1 -1 5.5,2 -4 -4 -4 20",
+        "-1 1 1 2.6 -7.1,-4 8 8 11.2 -46.4",
+        "z")
+uniformData["Case c:x"] = FluxDataSingle(
+        "2 4 8 12 64,1 1 2 3 11",
+        "4 11.2 16 24 134.4,1 2.6 2 3 12.6",
+        "x")
+uniformData["Case c:y"] = FluxDataSingle(
+        "2 4 8 12 64,1 1 2 3 11",
+        "8 16 35.2 48 268.8,2 2 5.6 6 25.2",
+        "y")
+uniformData["Case c:z"] = FluxDataSingle(
+        "2 4 8 12 64,1 1 2 3 11",
+        "12 24 48 75.2 403.2,3 3 6 10.6 37.8",
+        "z")
+uniformData["Case d:x"] = FluxDataSingle(
+        "1 -1 -2 -3 11,2 -4 -8 -12 64",
+        "-1 2.6 2 3 -12.6,-4 11.2 16 24 -134.4",
+        "x")
+uniformData["Case d:y"] = FluxDataSingle(
+        "1 -1 -2 -3 11,2 -4 -8 -12 64",
+        "-2 2 5.6 6 -25.2,-8 16 35.2 48 -268.8",
+        "y")
+uniformData["Case d:z"] = FluxDataSingle(
+        "1 -1 -2 -3 11,2 -4 -8 -12 64",
+        "-3 3 6 10.6 -37.8,-12 24 48 75.2 -403.2",
+        "z")
+
+
+@pytest.fixture(params=[
+    "Case a:x", "Case a:y", "Case a:z",
+    "Case b:x", "Case b:y", "Case b:z",
+    "Case c:x", "Case c:y", "Case c:z",
+    "Case d:x", "Case d:y", "Case d:z"])
+def data(request):
+    return uniformData[request.param]
+
+
+def test_roe_uniform_grid_ideal_gas(ctx_factory, data):
     def identity_matrix(n):
         return np.identity(n).astype(np.float32).copy(order="F")
 
@@ -389,30 +446,22 @@ def test_roe_uniform_grid_ideal_gas(ctx_factory, states_str, fluxes_str, directi
     prg = u.get_weno_program_with_root_kernel("roe_eigensystem")
     queue = u.get_queue(ctx_factory)
 
-    nvars = 5
-    ndim = 3
-    dirs = {"x": 1, "y": 2, "z": 3}
+    metrics_frozen = identity_matrix(data.ndim)
 
-    states = u.transposed_array_from_string(states_str)
-    fluxes = u.transposed_array_from_string(fluxes_str)
-    metrics_frozen = identity_matrix(ndim)
+    R_dev = u.empty_array_on_device(queue, data.nvars, data.nvars)
+    R_inv_dev = u.empty_array_on_device(queue, data.nvars, data.nvars)
+    lam_dev = u.empty_array_on_device(queue, data.nvars)
 
-    R_dev = u.empty_array_on_device(queue, nvars, nvars)
-    R_inv_dev = u.empty_array_on_device(queue, nvars, nvars)
-    lam_dev = u.empty_array_on_device(queue, nvars)
-
-    prg(queue, nvars=nvars, ndim=ndim, d=dirs[direction],
-            states=states, metrics_frozen=metrics_frozen,
+    prg(queue, nvars=data.nvars, ndim=data.ndim, d=data.direction,
+            states=data.states, metrics_frozen=metrics_frozen,
             R=R_dev, R_inv=R_inv_dev, lambda_roe=lam_dev)
 
     R = R_dev.get()
     R_inv = R_inv_dev.get()
     lam = lam_dev.get()
 
-    print(lam)
-
-    check_roe_identity(states, R, R_inv)
-    check_roe_property(states, fluxes, R, R_inv, lam)
+    check_roe_identity(data.states, R, R_inv)
+    check_roe_property(data.states, data.fluxes, R, R_inv, lam)
 
 
 @pytest.mark.slow
-- 
GitLab