From fc8d9a6077cf71c13cb73bf0c9678d22e563e565 Mon Sep 17 00:00:00 2001
From: Johannes Mey <johannes.mey@tu-dresden.de>
Date: Mon, 14 Jan 2019 15:29:40 +0100
Subject: [PATCH] add first test of eris contract

---
 .../mquat/solving/HandwrittenTestSuite.java   |  8 +++
 .../src/test/resources/test_eris_01.txt       | 53 +++++++++++++++++++
 2 files changed, 61 insertions(+)
 create mode 100644 jastadd-mquat-solver/src/test/resources/test_eris_01.txt

diff --git a/jastadd-mquat-solver/src/test/java/de/tudresden/inf/st/mquat/solving/HandwrittenTestSuite.java b/jastadd-mquat-solver/src/test/java/de/tudresden/inf/st/mquat/solving/HandwrittenTestSuite.java
index 712acef..83a3065 100644
--- a/jastadd-mquat-solver/src/test/java/de/tudresden/inf/st/mquat/solving/HandwrittenTestSuite.java
+++ b/jastadd-mquat-solver/src/test/java/de/tudresden/inf/st/mquat/solving/HandwrittenTestSuite.java
@@ -200,4 +200,12 @@ public abstract class HandwrittenTestSuite {
     Assignment config_1i0m0 = assertAssignment(modelAndSolution, 0, "config_1i0m0", "r0");
     assertComponentRequirement(config_0i0m0,"other", config_1i0m0);
   }
+
+  @Test
+  public void test_multi_eris_01() throws IOException, Parser.Exception, SolvingException {
+    Tuple<Root, Solution> modelAndSolution = loadAndSolve("test_eris_01.txt");
+    assertValidSolution(modelAndSolution);
+    Assignment a0 = assertAssignment(modelAndSolution, 0, "ap4", "r0");
+    Assignment a1 = assertAssignment(modelAndSolution, 1, "ap2", "r0");
+  }
 }
diff --git a/jastadd-mquat-solver/src/test/resources/test_eris_01.txt b/jastadd-mquat-solver/src/test/resources/test_eris_01.txt
new file mode 100644
index 0000000..41d2a67
--- /dev/null
+++ b/jastadd-mquat-solver/src/test/resources/test_eris_01.txt
@@ -0,0 +1,53 @@
+
+container resource type ComputeNode {
+    // empty, just a dummy type
+}
+resource r0:ComputeNode * 5 {
+    // empty
+}
+
+property runtime [ms]
+property system [boolean]
+
+component lp0_node0_row0 {
+
+    using property runtime
+    using property system
+
+    contract ap1 {
+        requires resource compute_resource_0 of type ComputeNode with {
+            // no hardware requirements
+        }
+        providing runtime = 5
+    }
+
+    contract ap2 {
+        requires resource compute_resource_0 of type ComputeNode with {
+            // no hardware requirements
+        }
+        providing runtime = 2
+    }
+
+    contract ap3 {
+        requires resource compute_resource_0 of type ComputeNode with {
+            // no hardware requirements
+        }
+        providing runtime = 7
+    }
+
+    contract ap4 {
+        requires resource compute_resource_0 of type ComputeNode with {
+            // no hardware requirements
+        }
+        providing runtime = 7
+        providing system = 1
+    }
+
+}
+
+request for lp0_node0_row0 {
+    requiring system = 1
+}
+request for lp0_node0_row0 {
+}
+minimize sum(runtime)
-- 
GitLab