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