summaryrefslogtreecommitdiff
path: root/tests/run/cpdef_scoped_enums_import.srctree
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run/cpdef_scoped_enums_import.srctree')
-rw-r--r--tests/run/cpdef_scoped_enums_import.srctree71
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/run/cpdef_scoped_enums_import.srctree b/tests/run/cpdef_scoped_enums_import.srctree
new file mode 100644
index 000000000..2d79fb05a
--- /dev/null
+++ b/tests/run/cpdef_scoped_enums_import.srctree
@@ -0,0 +1,71 @@
+# mode: run
+# tag: cpp, cpp11
+
+"""
+PYTHON setup.py build_ext --inplace
+PYTHON -c "import runner"
+"""
+
+######## setup.py ########
+
+from Cython.Build.Dependencies import cythonize
+from distutils.core import setup
+setup(ext_modules=cythonize("*.pyx", language='c++'))
+
+setup(
+ ext_modules = cythonize([
+ "cheese.pyx",
+ "import_scoped_enum_test.pyx",
+ "dotted_import_scoped_enum_test.pyx"
+ ])
+)
+
+######## cheese.pxd ########
+# distutils: language = c++
+# distutils: extra_compile_args = -std=c++11
+
+
+cdef extern from * namespace "Namespace":
+ """
+ namespace Namespace {
+ enum class Cheese {
+ cheddar = 1,
+ camembert = 2
+ };
+ }
+ """
+ cpdef enum class Cheese:
+ cheddar
+ camembert
+
+######## cheese.pyx ########
+# distutils: language = c++
+# distutils: extra_compile_args = -std=c++11
+
+pass
+
+######## import_scoped_enum_test.pyx ########
+# distutils: language = c++
+# distutils: extra_compile_args = -std=c++11
+
+from cheese import Cheese
+from cheese cimport Cheese
+
+cdef Cheese c = Cheese.cheddar
+assert list(Cheese) == [1, 2]
+
+######## dotted_import_scoped_enum_test.pyx ########
+# distutils: language = c++
+# distutils: extra_compile_args = -std=c++11
+
+
+cimport cheese
+
+cdef cheese.Cheese c = cheese.Cheese.cheddar
+assert [cheese.Cheese.cheddar, cheese.Cheese.camembert] == [1, 2]
+cdef cheese.Cheese d = int(1)
+
+######## runner.py ########
+
+import import_scoped_enum_test
+import dotted_import_scoped_enum_test