mirror of
https://github.com/RYDE-WORK/pybind11.git
synced 2026-01-20 21:53:42 +08:00
PR #309 broke scoped enums, which failed to compile because the added: value == value2 comparison isn't valid for a scoped enum (they aren't implicitly convertible to the underlying type). This commit fixes it by explicitly converting the enum value to its underlying type before doing the comparison. It also adds a scoped enum example to the constants-and-functions example that triggers the problem fixed in this commit.
78 lines
2.6 KiB
Python
Executable File
78 lines
2.6 KiB
Python
Executable File
#!/usr/bin/env python
|
|
from __future__ import print_function
|
|
import sys
|
|
sys.path.append('.')
|
|
|
|
from example import test_function
|
|
from example import some_constant
|
|
from example import EMyEnumeration
|
|
from example import ECMyEnum, test_ecenum
|
|
from example import EFirstEntry
|
|
from example import ExampleWithEnum
|
|
from example import return_bytes
|
|
from example import print_bytes
|
|
|
|
print(EMyEnumeration)
|
|
print(EMyEnumeration.EFirstEntry)
|
|
print(EMyEnumeration.ESecondEntry)
|
|
print(EFirstEntry)
|
|
|
|
print(test_function())
|
|
print(test_function(7))
|
|
print(test_function(EMyEnumeration.EFirstEntry))
|
|
print(test_function(EMyEnumeration.ESecondEntry))
|
|
test_ecenum(ECMyEnum.Three)
|
|
test_ecenum(ECMyEnum.Two)
|
|
print("enum->integer = %i" % int(EMyEnumeration.ESecondEntry))
|
|
print("integer->enum = %s" % str(EMyEnumeration(2)))
|
|
|
|
print("A constant = " + str(some_constant))
|
|
|
|
print(ExampleWithEnum.EMode)
|
|
print(ExampleWithEnum.EMode.EFirstMode)
|
|
print(ExampleWithEnum.EFirstMode)
|
|
ExampleWithEnum.test_function(ExampleWithEnum.EFirstMode)
|
|
|
|
print("Equality test 1: " + str(
|
|
ExampleWithEnum.test_function(ExampleWithEnum.EFirstMode) ==
|
|
ExampleWithEnum.test_function(ExampleWithEnum.EFirstMode)))
|
|
|
|
print("Inequality test 1: " + str(
|
|
ExampleWithEnum.test_function(ExampleWithEnum.EFirstMode) !=
|
|
ExampleWithEnum.test_function(ExampleWithEnum.EFirstMode)))
|
|
|
|
print("Equality test 2: " + str(
|
|
ExampleWithEnum.test_function(ExampleWithEnum.EFirstMode) ==
|
|
ExampleWithEnum.test_function(ExampleWithEnum.ESecondMode)))
|
|
|
|
print("Inequality test 2: " + str(
|
|
ExampleWithEnum.test_function(ExampleWithEnum.EFirstMode) !=
|
|
ExampleWithEnum.test_function(ExampleWithEnum.ESecondMode)))
|
|
|
|
print("Equality test 3: " + str(
|
|
ExampleWithEnum.test_function(ExampleWithEnum.EFirstMode) ==
|
|
int(ExampleWithEnum.test_function(ExampleWithEnum.EFirstMode))))
|
|
|
|
print("Inequality test 3: " + str(
|
|
ExampleWithEnum.test_function(ExampleWithEnum.EFirstMode) !=
|
|
int(ExampleWithEnum.test_function(ExampleWithEnum.EFirstMode))))
|
|
|
|
print("Equality test 4: " + str(
|
|
ExampleWithEnum.test_function(ExampleWithEnum.EFirstMode) ==
|
|
int(ExampleWithEnum.test_function(ExampleWithEnum.ESecondMode))))
|
|
|
|
print("Inequality test 4: " + str(
|
|
ExampleWithEnum.test_function(ExampleWithEnum.EFirstMode) !=
|
|
int(ExampleWithEnum.test_function(ExampleWithEnum.ESecondMode))))
|
|
|
|
x = {
|
|
ExampleWithEnum.test_function(ExampleWithEnum.EFirstMode): 1,
|
|
ExampleWithEnum.test_function(ExampleWithEnum.ESecondMode): 2
|
|
}
|
|
|
|
x[ExampleWithEnum.test_function(ExampleWithEnum.EFirstMode)] = 3
|
|
x[ExampleWithEnum.test_function(ExampleWithEnum.ESecondMode)] = 4
|
|
print("Hashing test = " + str(x))
|
|
|
|
print_bytes(return_bytes())
|