diff --git a/src/plugins/wp/tests/wp_gallery/euclid3.c b/src/plugins/wp/tests/wp_gallery/euclid3.c
new file mode 100644
index 0000000000000000000000000000000000000000..8276d9682a602c7fa1538ca60cf842c3cceadfcf
--- /dev/null
+++ b/src/plugins/wp/tests/wp_gallery/euclid3.c
@@ -0,0 +1,43 @@
+#include <limits.h>
+
+//@ import why3: number::Gcd;
+
+//@ import why3: int::MinMax;
+
+/*@
+  requires \abs(a) <= INT_MAX ;
+  requires \abs(b) <= INT_MAX ;
+  assigns \nothing;
+  ensures \result == Gcd::gcd(a,b);
+*/
+
+int euclid_gcd(int a, int b)
+{
+  int r;
+  /*@
+    loop assigns a, b, r;
+    loop invariant Gcd::gcd(a,b) == \at( Gcd::gcd(a,b), Pre );
+    loop variant \abs(b);
+  */
+  while( b != 0 ) {
+    r = b ;
+    b = a % b ;
+    a = r ;
+  }
+  return a < 0 ? -a : a;
+}
+
+/*@
+    requires \abs(a) <= INT_MAX;
+    requires \abs(b) <= INT_MAX;
+    requires \abs(c) <= INT_MAX;
+    requires \abs(d) <= INT_MAX;
+    assigns \nothing;
+    ensures \result == Gcd::gcd(MinMax::min(a,b), MinMax::max(c,d) );
+*/
+int minmax_gcd(int a, int b, int c, int d)
+{
+    int x = (a > b) ? b : a;
+    int y = (c > d) ? c : d;
+    return euclid_gcd(x,y);
+}
diff --git a/src/plugins/wp/tests/wp_gallery/external-import.c b/src/plugins/wp/tests/wp_gallery/external-import.c
new file mode 100644
index 0000000000000000000000000000000000000000..1751fa492643deae669a441c4427561a35db9ee5
--- /dev/null
+++ b/src/plugins/wp/tests/wp_gallery/external-import.c
@@ -0,0 +1,23 @@
+#include <limits.h>
+
+//@ import why3: summodule::Sum;
+
+/*@
+    requires \abs(a) <= INT_MAX ;
+    requires \abs(b) <= INT_MAX ;
+    assigns \nothing;
+    ensures \result == Sum::sum(a,b);
+*/
+int sum (int a, int b) {
+
+    /*@
+        loop assigns a, b;
+        loop invariant a <= a + b;
+        loop variant b;
+    */
+    while( b != 0){
+        a+=1;
+        b-=1;
+    }
+    return a;
+}