@@ -12,12 +12,11 @@ pub enum MyEnum {
12
12
13
13
#[ test]
14
14
fn test_enum_class_attr ( ) {
15
- let gil = Python :: acquire_gil ( ) ;
16
- let py = gil. python ( ) ;
17
- let my_enum = py. get_type :: < MyEnum > ( ) ;
18
- py_assert ! ( py, my_enum, "getattr(my_enum, 'Variant', None) is not None" ) ;
19
- py_assert ! ( py, my_enum, "getattr(my_enum, 'foobar', None) is None" ) ;
20
- py_run ! ( py, my_enum, "my_enum.Variant = None" ) ;
15
+ Python :: with_gil ( |py| {
16
+ let my_enum = py. get_type :: < MyEnum > ( ) ;
17
+ let var = Py :: new ( py, MyEnum :: Variant ) . unwrap ( ) ;
18
+ py_assert ! ( py, my_enum var, "my_enum.Variant == var" ) ;
19
+ } )
21
20
}
22
21
23
22
#[ pyfunction]
@@ -26,7 +25,6 @@ fn return_enum() -> MyEnum {
26
25
}
27
26
28
27
#[ test]
29
- #[ ignore] // need to implement __eq__
30
28
fn test_return_enum ( ) {
31
29
let gil = Python :: acquire_gil ( ) ;
32
30
let py = gil. python ( ) ;
@@ -42,14 +40,24 @@ fn enum_arg(e: MyEnum) {
42
40
}
43
41
44
42
#[ test]
45
- #[ ignore] // need to implement __eq__
46
43
fn test_enum_arg ( ) {
47
- let gil = Python :: acquire_gil ( ) ;
48
- let py = gil. python ( ) ;
49
- let f = wrap_pyfunction ! ( enum_arg) ( py) . unwrap ( ) ;
50
- let mynum = py. get_type :: < MyEnum > ( ) ;
44
+ Python :: with_gil ( |py| {
45
+ let f = wrap_pyfunction ! ( enum_arg) ( py) . unwrap ( ) ;
46
+ let mynum = py. get_type :: < MyEnum > ( ) ;
51
47
52
- py_run ! ( py, f mynum, "f(mynum.Variant)" )
48
+ py_run ! ( py, f mynum, "f(mynum.OtherVariant)" )
49
+ } )
50
+ }
51
+
52
+ #[ test]
53
+ fn test_enum_eq ( ) {
54
+ Python :: with_gil ( |py| {
55
+ let var1 = Py :: new ( py, MyEnum :: Variant ) . unwrap ( ) ;
56
+ let var2 = Py :: new ( py, MyEnum :: Variant ) . unwrap ( ) ;
57
+ let other_var = Py :: new ( py, MyEnum :: OtherVariant ) . unwrap ( ) ;
58
+ py_assert ! ( py, var1 var2, "var1 == var2" ) ;
59
+ py_assert ! ( py, var1 other_var, "var1 != other_var" ) ;
60
+ } )
53
61
}
54
62
55
63
#[ test]
0 commit comments