# MagellanMapper unit testing for libmag
"""Unit testing for the MagellanMapper libmag module.
"""
import unittest
import numpy as np
from magmap.io import libmag
[docs]
class TestLibmag(unittest.TestCase):
[docs]
def test_pad_seq(self):
seq = ["a", "b", "c"]
self.assertSequenceEqual(libmag.pad_seq(list(seq), 2), ["a", "b"])
self.assertSequenceEqual(libmag.pad_seq(list(seq), 3), ["a", "b", "c"])
self.assertSequenceEqual(
libmag.pad_seq(list(seq), 4), ["a", "b", "c", None])
self.assertSequenceEqual(
libmag.pad_seq(list(seq), 4, 1), ["a", "b", "c", 1])
self.assertSequenceEqual(
libmag.pad_seq(list(seq), 5, [1, 2, 3, 4, 5]), ["a", "b", "c", 4, 5])
# fills with last pad value since pad is shorter than seq is
self.assertSequenceEqual(
libmag.pad_seq(list(seq), 5, [1, 2]), ["a", "b", "c", 2, 2])
# modifies the original sequence
self.assertSequenceEqual(libmag.pad_seq(tuple(seq), 4), ["a", "b", "c", None])
self.assertSequenceEqual(seq, ["a", "b", "c"])
# modifies the original sequence
self.assertSequenceEqual(libmag.pad_seq(seq, 4), ["a", "b", "c", None])
self.assertSequenceEqual(seq, ["a", "b", "c", None])
[docs]
def test_replace_seq(self):
seq = [1, 2, 3]
np.testing.assert_array_equal(
libmag.replace_seq(seq, [10, 20]), [10, 20, 3])
np.testing.assert_array_equal(
libmag.replace_seq(seq, [10, 20, 30, 40]), [10, 20, 30])
np.testing.assert_array_equal(libmag.replace_seq(seq, []), [1, 2, 3])
[docs]
def test_flatten(self):
self.assertSequenceEqual(
list(libmag.flatten(["a", "b"])), ["a", "b"])
self.assertSequenceEqual(
list(libmag.flatten([["a", "b"]])), ["a", "b"])
self.assertSequenceEqual(
list(libmag.flatten([["a", "b"], ["c", "d"]])),
["a", "b", "c", "d"])
self.assertSequenceEqual(
list(libmag.flatten([["a", "b"], ["c", "d"], [["e", 1], "g", 3]])),
["a", "b", "c", "d", "e", 1, "g", 3])
[docs]
def test_insert_before_ext(self):
self.assertEqual(libmag.insert_before_ext(
"foo/bar/item.py", "totest", "_"), "foo/bar/item_totest.py")
self.assertEqual(libmag.insert_before_ext(
"foo/bar/item.py", "totest"), "foo/bar/itemtotest.py")
self.assertEqual(libmag.insert_before_ext(
"foo/bar/item", "totest", "_"), "foo/bar/item_totest")
[docs]
def test_splitext(self):
self.assertEqual(
libmag.splitext("foo/bar/item.py"), ("foo/bar/item", ".py"))
self.assertEqual(libmag.splitext("item.py"), ("item", ".py"))
self.assertEqual(libmag.splitext("foo/bar/item"), ("foo/bar/item", ""))
self.assertEqual(
libmag.splitext("foo/bar/item.file.ext"),
("foo/bar/item.file", ".ext"))
self.assertEqual(libmag.splitext("foo/bar/item.file.py"), (
"foo/bar/item.file", ".py"))
[docs]
def test_match_ext(self):
self.assertEqual(
libmag.match_ext("foo1/bar1/item1.ext1", "foo2/bar2/item2.ext2"),
"foo2/bar2/item2.ext1")
# if there is no extension in the path to match, it will retain its own
self.assertEqual(libmag.match_ext(
"foo1/bar1/item1", "foo2/bar2/item2.ext2"), "foo2/bar2/item2.ext2")
self.assertEqual(libmag.match_ext(
"foo1/bar1/item1.ext1", "foo2/bar2/item2"), "foo2/bar2/item2.ext1")
self.assertEqual(libmag.match_ext(
"foo1/bar1/item1", "foo2/bar2/item2"), "foo2/bar2/item2")
self.assertEqual(libmag.match_ext(
"foo1/bar1/item1.file1.ext1", "foo2/bar2/item2.ext2"), (
"foo2/bar2/item2.ext1"))
self.assertEqual(libmag.match_ext(
"foo1/bar1/item1.ext1", "foo2/bar2/item2.file2.ext2"), (
"foo2/bar2/item2.file2.ext1"))
[docs]
def test_get_filename_without_ext(self):
self.assertEqual(
libmag.get_filename_without_ext("foo/bar/item.py"), "item")
self.assertEqual(
libmag.get_filename_without_ext("foo/bar/item"), "item")
self.assertEqual(libmag.get_filename_without_ext(
"foo/bar/item.file.py"), "item.file")
self.assertEqual(libmag.get_filename_without_ext("item.py"), "item")
[docs]
def test_combine_paths(self):
self.assertEqual(libmag.combine_paths(
"foo/bar/item", "file", "_", "py"), "foo/bar/item_file.py")
self.assertEqual(libmag.combine_paths(
"foo/bar/item", "file.py"), "foo/bar/item_file.py")
self.assertEqual(libmag.combine_paths(
"foo/bar/item", "file.py", "_", "ext"), "foo/bar/item_file.ext")
self.assertEqual(libmag.combine_paths(
"foo/bar/item", "file.py", ext="ext"), "foo/bar/item_file.ext")
self.assertEqual(libmag.combine_paths(
"foo/bar/item", "file.py", "_"), "foo/bar/item_file.py")
[docs]
def test_series_as_str(self):
self.assertEqual(libmag.series_as_str("532"), "00532")
self.assertEqual(libmag.series_as_str(""), "00000")
self.assertEqual(libmag.series_as_str("56738"), "56738")
self.assertEqual(libmag.series_as_str("123456789"), "123456789")
[docs]
def test_splice_before(self):
self.assertEqual(
libmag.splice_before("base", "file", "edit"), "baseedit")
self.assertEqual(libmag.splice_before(
"foo/bar/item.py", "item", "file"), "foo/bar/fileitem.py")
self.assertEqual(libmag.splice_before(
"foo/bar/item.py", "edit", "file"), "foo/bar/item.pyfile")
self.assertEqual(libmag.splice_before(
"foo/bar/item.py", ".", "file"), "foo/bar/itemfile.py")
self.assertEqual(libmag.splice_before(
"foo/bar/item.py", "item", "file", "/"), "foo/bar/file/item.py")
[docs]
def test_str_to_disp(self):
self.assertEqual(libmag.str_to_disp("this_is_a_test"), "this is a test")
self.assertEqual(libmag.str_to_disp(
" this is a test "), "this is a test")
self.assertEqual(
libmag.str_to_disp(" this_is a_test "), "this is a test")
[docs]
def test_make_abbreviation(self):
name = "The long name"
self.assertEqual(libmag.make_acronym(name), "ln")
self.assertEqual(libmag.make_acronym(name, "o"), "Tn")
self.assertEqual(libmag.make_acronym(name, ignore=["long"]), "Tn")
self.assertEqual(libmag.make_acronym(name, caps=True), "LN")
self.assertEqual(libmag.make_acronym("Short"), "Sho")
self.assertEqual(libmag.make_acronym("Short", num_single=10), "Short")
self.assertEqual(libmag.make_acronym(None), None)
[docs]
def test_get_int(self):
self.assertEqual(libmag.get_int("5"), 5)
self.assertEqual(libmag.get_int("5.6"), 5.6)
self.assertEqual(libmag.get_int("wrong"), "wrong")
self.assertEqual(libmag.get_int(''), '')
[docs]
def test_is_int(self):
self.assertEqual(libmag.is_int(5), True)
self.assertEqual(libmag.is_int(5.4), False)
self.assertEqual(libmag.is_int("string"), False)
[docs]
def test_is_number(self):
self.assertEqual(libmag.is_number(5), True)
self.assertEqual(libmag.is_number(5.4), True)
self.assertEqual(libmag.is_number("string"), False)
if __name__ == "__main__":
unittest.main()