-
-
Notifications
You must be signed in to change notification settings - Fork 964
Expand file tree
/
Copy pathtest_sql.py
More file actions
80 lines (66 loc) · 2.73 KB
/
Copy pathtest_sql.py
File metadata and controls
80 lines (66 loc) · 2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# IfcOpenShell - IFC toolkit and geometry engine
# Copyright (C) 2021 Thomas Krijnen <thomas@aecgeeks.com>
#
# This file is part of IfcOpenShell.
#
# IfcOpenShell is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# IfcOpenShell is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import tempfile
from pathlib import Path
import pytest
from ifcpatch.recipes import Ifc2Sql
import ifcopenshell
TEST_FILE = Path(__file__).parent / "files" / "basic.ifc"
SQLITE_PATH = None
def get_ifc_sqlite() -> ifcopenshell.sqlite:
global SQLITE_PATH
if SQLITE_PATH is None:
tmp = tempfile.NamedTemporaryFile(delete=False, suffix=".ifcsqlite")
ifc_file = ifcopenshell.open(TEST_FILE)
assert isinstance(ifc_file, ifcopenshell.file)
patcher = Ifc2Sql.Patcher(ifc_file, database=tmp.name)
patcher.patch()
SQLITE_PATH = tmp.name
ifc_sqlite = ifcopenshell.open(SQLITE_PATH)
assert isinstance(ifc_sqlite, ifcopenshell.sqlite)
return ifc_sqlite
class TestFile:
def test_run(self):
ifc_sqlite = get_ifc_sqlite()
assert ifc_sqlite.schema == "IFC4"
def test_by_id(self):
ifc_sqlite = get_ifc_sqlite()
assert (element := ifc_sqlite.by_id(1))
assert str(element) == "#1=IFCPROJECT('3kv235yMjDO9tHiTzD8QuS',$,'My Project',$,$,$,$,(#14,#26),#9);"
def test_by_type(self):
ifc_sqlite = get_ifc_sqlite()
assert (elements := ifc_sqlite.by_type("IfcProject"))
assert str(elements[0]) == "#1=IFCPROJECT('3kv235yMjDO9tHiTzD8QuS',$,'My Project',$,$,$,$,(#14,#26),#9);"
class TestEntity:
def test_getattr(self):
ifc_sqlite = get_ifc_sqlite()
assert (element := ifc_sqlite.by_id(1))
assert element.Name == "My Project"
def test_getattr_derive(self):
ifc_sqlite = get_ifc_sqlite()
assert (units := ifc_sqlite.by_type("IfcSIUnit"))
with pytest.raises(RuntimeError):
units[0].Dimensions
def test_setattr(self):
ifc_sqlite = get_ifc_sqlite()
assert (element := ifc_sqlite.by_id(1))
assert element.Name == "My Project"
element.Name = "Foo"
assert element.Name == "Foo"
element.Name = "My Project"
assert element.Name == "My Project"