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()
|