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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
#!/usr/bin/env python3
########################################################################
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
########################################################################
import unittest
import os
import os.path
import mmap
from orcus import xlsx
import file_load_common as common
class TestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
# base directory for xlsx test files.
basedir = os.path.join(os.path.dirname(__file__), "..", "xlsx")
cls.basedir = os.path.normpath(basedir)
def test_import(self):
test_dirs = (
"boolean-values",
"empty-shared-strings",
"formula-cells",
"formula-shared",
"named-expression",
"named-expression-sheet-local",
"raw-values-1",
)
for test_dir in test_dirs:
test_dir = os.path.join(self.basedir, test_dir)
common.run_test_dir(self, test_dir, common.DocLoader(xlsx))
def test_named_expression(self):
filepath = os.path.join(self.basedir, "named-expression", "input.xlsx")
with open(filepath, "rb") as f:
doc = xlsx.read(f)
named_exps = doc.get_named_expressions()
self.assertEqual(named_exps.names(), {"MyRange", "MyRange2"})
self.assertEqual(len(named_exps), 2)
named_exps_dict = {x[0]: x[1] for x in named_exps}
exp = named_exps_dict["MyRange"]
self.assertEqual(exp.origin, "Sheet1!$A$1")
self.assertEqual(exp.formula, "$A$1:$A$5")
iter = exp.get_formula_tokens()
self.assertEqual(len(iter), 1)
tokens = [t for t in iter]
self.assertEqual(str(tokens[0]), "$A$1:$A$5")
exp = named_exps_dict["MyRange2"]
self.assertEqual(exp.origin, "Sheet1!$A$1")
self.assertEqual(exp.formula, "$A$1:$B$5")
iter = exp.get_formula_tokens()
self.assertEqual(len(iter), 1)
tokens = [t for t in iter]
self.assertEqual(str(tokens[0]), "$A$1:$B$5")
def test_named_expression_sheet_local(self):
filepath = os.path.join(self.basedir, "named-expression-sheet-local", "input.xlsx")
with open(filepath, "rb") as f:
doc = xlsx.read(f)
sheet = doc.sheets[0]
named_exps = sheet.get_named_expressions()
self.assertEqual(len(named_exps), 1)
self.assertEqual(named_exps.names(), {"MyRange",})
named_exps_dict = {x[0]: x[1] for x in named_exps}
exp = named_exps_dict["MyRange"]
self.assertEqual(exp.formula, "$A$1:$B$3")
iter = exp.get_formula_tokens()
self.assertEqual(len(iter), 1)
tokens = [t for t in iter]
self.assertEqual(str(tokens[0]), "$A$1:$B$3")
sheet = doc.sheets[1]
named_exps = sheet.get_named_expressions()
self.assertEqual(named_exps.names(), {"MyRange",})
self.assertEqual(len(named_exps), 1)
named_exps_dict = {x[0]: x[1] for x in named_exps}
exp = named_exps_dict["MyRange"]
self.assertEqual(exp.formula, "$A$4:$B$5")
iter = exp.get_formula_tokens()
self.assertEqual(len(iter), 1)
tokens = [t for t in iter]
self.assertEqual(str(tokens[0]), "$A$4:$B$5")
if __name__ == '__main__':
unittest.main()
|