mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-10-02 21:12:07 +00:00
Re-enable setting logical with UNKNOWN in python
This commit is contained in:
@@ -76,3 +76,17 @@ def test_equality():
|
|||||||
assert f[1] == g[1]
|
assert f[1] == g[1]
|
||||||
g[1].Coordinates = (1., 0.)
|
g[1].Coordinates = (1., 0.)
|
||||||
assert f[1] != g[1]
|
assert f[1] != g[1]
|
||||||
|
|
||||||
|
def test_setting_logical():
|
||||||
|
f = ifcopenshell.file()
|
||||||
|
inst = f.createIfcPresentationLayerWithStyle(LayerOn="UNKNOWN")
|
||||||
|
assert inst.LayerOn == "UNKNOWN"
|
||||||
|
assert '.U.' in str(inst)
|
||||||
|
with pytest.raises(Exception):
|
||||||
|
inst.LayerOn = "SOME_OTHER_STRING"
|
||||||
|
inst.LayerOn = False
|
||||||
|
assert inst.LayerOn is False
|
||||||
|
assert '.F.' in str(inst)
|
||||||
|
inst.LayerOn = True
|
||||||
|
assert inst.LayerOn is True
|
||||||
|
assert '.T.' in str(inst)
|
||||||
|
|||||||
@@ -789,6 +789,14 @@ private:
|
|||||||
boost::logic::tribool t(boost::logic::indeterminate);
|
boost::logic::tribool t(boost::logic::indeterminate);
|
||||||
if (PyBool_Check(value)) {
|
if (PyBool_Check(value)) {
|
||||||
t = (value == Py_True);
|
t = (value == Py_True);
|
||||||
|
} else if (PyUnicode_Check(value)) {
|
||||||
|
if (PyObject* ascii = PyUnicode_AsEncodedString(value, "UTF-8", "strict")) {
|
||||||
|
// value is kept as indeterminate
|
||||||
|
if (strcmp(PyBytes_AS_STRING(ascii), "UNKNOWN") != 0) {
|
||||||
|
throw IfcParse::IfcException("Attribute not set");
|
||||||
|
}
|
||||||
|
Py_DECREF(ascii);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
long v = to_index_long(value);
|
long v = to_index_long(value);
|
||||||
if (v == 0) t = false;
|
if (v == 0) t = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user