Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

73 Zeilen
2.8 KiB
Python

import unittest
from pathlib import Path
from numpy import ndarray
from src.ddrescue_tui.ddrescue_tui_parser import parse_mapfile
# ######### #
# UNIT TEST #
# ######### #
# noinspection PyTypeChecker
class TestParseMapfile(unittest.TestCase):
MAP_A = Path("./mapfiles/2024-02-08_virt.map")
X_A, Y_A = 90, 30
MAP_B = Path("./mapfiles/2024-02-10_virt.map")
X_B, Y_B = 45, 30
MAP_C = Path("./mapfiles/running.map")
X_C, Y_C = 92, 42
MAP_INEXISTANT = Path("./mapfiles/inexistant.map")
MAP_INVALID = Path("./LICENSE")
def test_inexistant_mapfile(self):
"""This file does not exist"""
self.assertEqual(parse_mapfile(self.MAP_INEXISTANT, 90, 30)[0], None)
def test_invalid_argument(self):
"""Handle bad arguments"""
self.assertEqual(parse_mapfile("./mapfiles/2024-02-08_virt.map", 90, 30)[0], None)
self.assertEqual(parse_mapfile(self.MAP_A, True, False)[0], None)
self.assertEqual(parse_mapfile(None, None, None)[0], None)
def test_invalid_mapfile(self):
"""This file is not a mapfile"""
self.assertEqual(parse_mapfile(self.MAP_INVALID, 90, 30)[0], None)
def test_invalid_arraysize(self):
"""Arrays cannot be smaller than 2x2 or numpy throws an error"""
self.assertEqual(parse_mapfile(self.MAP_A, 1, 1)[0], None)
def test_mapfile_A(self):
arr, general = parse_mapfile(self.MAP_A, self.X_A, self.Y_A)
self.assertIsInstance(general, dict)
self.assertEqual(general["command"], 'ddrescue /dev/sdb 2024-02-08_virt.img 2024-02-08_virt.map')
self.assertEqual(general["version"], "GNU ddrescue version 1.27")
self.assertEqual(general["cur_pass"], 1)
self.assertEqual(general["direction"], 'forwards')
self.assertIsInstance(arr, ndarray)
self.assertEqual(arr.max(), 5)
self.assertEqual(arr.size, self.X_A*self.Y_A)
self.assertEqual(arr.shape, (self.Y_A, self.X_A))
def test_mapfile_B(self):
arr, general = parse_mapfile(self.MAP_B, self.X_B, self.Y_B)
self.assertIsInstance(general, dict)
self.assertIn("2024-02-10_virt.img 2024-02-10_virt.map", general["command"])
self.assertIsInstance(arr, ndarray)
self.assertEqual(arr.max(), 6)
self.assertEqual(arr.size, self.X_B*self.Y_B)
self.assertEqual(arr.shape, (self.Y_B, self.X_B))
def test_mapfile_C(self):
"""Currently running map"""
arr, general = parse_mapfile(self.MAP_C, self.X_C, self.Y_C)
self.assertIsInstance(general, dict)
self.assertEqual(general["direction"], "")
self.assertIn("running.img running.map", general["command"])
self.assertIsInstance(arr, ndarray)
self.assertEqual(arr.size, self.X_C*self.Y_C)
self.assertEqual(arr.shape, (self.Y_C, self.X_C))
if __name__ == "__main__":
unittest.main()