Split C complex.h from C++ complex testing
diff --git a/Examples/test-suite/ccomplextest.i b/Examples/test-suite/ccomplextest.i
new file mode 100644
index 0000000..4a2f68f
--- /dev/null
+++ b/Examples/test-suite/ccomplextest.i
@@ -0,0 +1,79 @@
+%module ccomplextest
+
+%include <complex.i>
+
+%{
+#include <complex.h>
+
+#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199001L
+#define HAS_C99_COMPLEX_FOR_TESTING 1
+#else
+/* complex not supported - hack tests to just test plain floating point numbers */
+/* some pre c99 compilers (gcc-4.x) don't define _Complex but do define complex */
+#define _Complex
+#if !defined(complex)
+# define complex
+#endif
+#define conj
+#define conjf
+#if defined(I)
+# undef I
+# define I 1
+#endif
+#define HAS_C99_COMPLEX_FOR_TESTING 0
+#endif
+%}
+
+%inline
+{
+ int has_c99_complex(void) {
+ return HAS_C99_COMPLEX_FOR_TESTING;
+ }
+
+ complex double Conj(complex double a)
+ {
+ return conj(a);
+ }
+
+
+ complex float Conjf(complex float a)
+ {
+ return conjf(a);
+ }
+
+
+ double complex Conj1(double complex a)
+ {
+ return conj(a);
+ }
+
+
+ float complex Conjf1(float complex a)
+ {
+ return conjf(a);
+ }
+
+
+ _Complex double Conj2(_Complex double a)
+ {
+ return conj(a);
+ }
+
+
+ _Complex float Conjf2(_Complex float a)
+ {
+ return conjf(a);
+ }
+
+
+ double _Complex Conj3(double _Complex a)
+ {
+ return conj(a);
+ }
+
+
+ float _Complex Conjf3(float _Complex a)
+ {
+ return conjf(a);
+ }
+}
diff --git a/Examples/test-suite/complextest.i b/Examples/test-suite/complextest.i
index 622b380..6c7b1f4 100644
--- a/Examples/test-suite/complextest.i
+++ b/Examples/test-suite/complextest.i
@@ -2,7 +2,6 @@
%include <complex.i>
-#ifdef __cplusplus
%{
#include <algorithm>
#include <functional>
@@ -10,9 +9,7 @@
%}
%include <std_vector.i>
-#if 1
%template(VectorStdCplx) std::vector<std::complex<double> >;
-#endif
%inline
{
@@ -63,63 +60,3 @@
}
}
-
-#else
-
-
-%{
-#include <complex.h>
-%}
-
-%inline
-{
- complex double Conj(complex double a)
- {
- return conj(a);
- }
-
-
- complex float Conjf(complex float a)
- {
- return conjf(a);
- }
-
-
- double complex Conj1(double complex a)
- {
- return conj(a);
- }
-
-
- float complex Conjf1(float complex a)
- {
- return conjf(a);
- }
-
-
- _Complex double Conj2(_Complex double a)
- {
- return conj(a);
- }
-
-
- _Complex float Conjf2(_Complex float a)
- {
- return conjf(a);
- }
-
-
- double _Complex Conj3(double _Complex a)
- {
- return conj(a);
- }
-
-
- float _Complex Conjf3(float _Complex a)
- {
- return conjf(a);
- }
-}
-
-
-#endif
diff --git a/Examples/test-suite/javascript/Makefile.in b/Examples/test-suite/javascript/Makefile.in
index 4fab312..d42ffec 100644
--- a/Examples/test-suite/javascript/Makefile.in
+++ b/Examples/test-suite/javascript/Makefile.in
@@ -13,6 +13,9 @@
top_srcdir = @top_srcdir@
top_builddir = @top_builddir@
+C_TEST_CASES += \
+ ccomplextest \
+
SWIGEXE = $(top_builddir)/swig
SWIG_LIB_DIR = $(top_srcdir)/Lib
diff --git a/Examples/test-suite/octave/Makefile.in b/Examples/test-suite/octave/Makefile.in
index 1d54a47..9602d85 100644
--- a/Examples/test-suite/octave/Makefile.in
+++ b/Examples/test-suite/octave/Makefile.in
@@ -29,14 +29,6 @@
li_std_set \
li_std_stream
-#C_TEST_CASES +=
-
-#
-# This test only works with modern C compilers
-#
-#C_TEST_CASES += \
-# complextest
-
include $(srcdir)/../common.mk
# Overridden variables here
diff --git a/Examples/test-suite/python/Makefile.in b/Examples/test-suite/python/Makefile.in
index 7ca98b3..c2528eb 100644
--- a/Examples/test-suite/python/Makefile.in
+++ b/Examples/test-suite/python/Makefile.in
@@ -83,19 +83,13 @@
cpp11_std_unordered_set \
C_TEST_CASES += \
- complextest \
+ ccomplextest \
file_test \
li_cstring \
li_cwstring \
python_nondynamic \
python_varargs_typemap \
-#
-# This test only works with modern C compilers
-#
-#C_TEST_CASES += \
-# complextest
-
include $(srcdir)/../common.mk
# Overridden variables here
diff --git a/Examples/test-suite/python/ccomplextest_runme.py b/Examples/test-suite/python/ccomplextest_runme.py
new file mode 100644
index 0000000..60b9545
--- /dev/null
+++ b/Examples/test-suite/python/ccomplextest_runme.py
@@ -0,0 +1,24 @@
+import ccomplextest
+
+a = complex(-1, 2)
+
+if ccomplextest.has_c99_complex():
+ if ccomplextest.Conj(a) != a.conjugate():
+ raise RuntimeError("bad complex mapping")
+
+ if ccomplextest.Conjf(a) != a.conjugate():
+ raise RuntimeError("bad complex mapping")
+
+ if ccomplextest.Conj2(a) != a.conjugate():
+ raise RuntimeError("bad complex mapping")
+
+ if ccomplextest.Conjf2(a) != a.conjugate():
+ raise RuntimeError("bad complex mapping")
+
+ if ccomplextest.Conj3(a) != a.conjugate():
+ raise RuntimeError("bad complex mapping")
+
+ if ccomplextest.Conjf3(a) != a.conjugate():
+ raise RuntimeError("bad complex mapping")
+else:
+ print("Not a c99 compiler")
diff --git a/Examples/test-suite/python/complextest_runme.py b/Examples/test-suite/python/complextest_runme.py
index 3eef2b2..1b9ad66 100644
--- a/Examples/test-suite/python/complextest_runme.py
+++ b/Examples/test-suite/python/complextest_runme.py
@@ -14,26 +14,16 @@
if complextest.Conjf2(a) != a.conjugate():
raise RuntimeError("bad complex mapping")
-if 'Conj3' in dir(complextest):
- if complextest.Conj3(a) != a.conjugate():
- raise RuntimeError("bad complex mapping")
+v = (complex(1, 2), complex(2, 3), complex(4, 3), 1)
-if 'Conjf3' in dir(complextest):
- if complextest.Conjf3(a) != a.conjugate():
- raise RuntimeError("bad complex mapping")
+if len(complextest.CopyHalf(v)) != 2:
+ raise RuntimeError("CopyHalf failed")
-if 'CopyHalf' in dir(complextest):
+if len(complextest.CopyHalfRef(v)) != 2:
+ raise RuntimeError("CopyHalfRef failed")
- v = (complex(1, 2), complex(2, 3), complex(4, 3), 1)
-
- if len(complextest.CopyHalf(v)) != 2:
- raise RuntimeError("CopyHalf failed")
-
- if len(complextest.CopyHalfRef(v)) != 2:
- raise RuntimeError("CopyHalfRef failed")
-
- p = complextest.ComplexPair()
- p.z1 = complex(0, 1)
- p.z2 = complex(0, -1)
- if complextest.Conj(p.z2) != p.z1:
- raise RuntimeError("bad complex mapping")
+p = complextest.ComplexPair()
+p.z1 = complex(0, 1)
+p.z2 = complex(0, -1)
+if complextest.Conj(p.z2) != p.z1:
+ raise RuntimeError("bad complex mapping")