summaryrefslogtreecommitdiffstats
path: root/test/python/test_xlsx.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 05:48:59 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 05:48:59 +0000
commitc484829272cd13a738e35412498e12f2c9a194ac (patch)
treea1f5ec09629ee895bd3963fa8820b45f2f4c574b /test/python/test_xlsx.py
parentInitial commit. (diff)
downloadliborcus-c484829272cd13a738e35412498e12f2c9a194ac.tar.xz
liborcus-c484829272cd13a738e35412498e12f2c9a194ac.zip
Adding upstream version 0.19.2.upstream/0.19.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/python/test_xlsx.py')
-rwxr-xr-xtest/python/test_xlsx.py103
1 files changed, 103 insertions, 0 deletions
diff --git a/test/python/test_xlsx.py b/test/python/test_xlsx.py
new file mode 100755
index 0000000..1f691da
--- /dev/null
+++ b/test/python/test_xlsx.py
@@ -0,0 +1,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()