Coverage for lasso/dyna/test_d3plot_header.py: 100%
42 statements
« prev ^ index » next coverage.py v7.2.4, created at 2023-04-28 18:42 +0100
« prev ^ index » next coverage.py v7.2.4, created at 2023-04-28 18:42 +0100
1from unittest import TestCase
3import numpy as np
4from lasso.dyna.d3plot_header import (
5 D3plotFiletype,
6 D3plotHeader,
7 d3plot_filetype_from_integer,
8 get_digit,
9)
10from lasso.io.binary_buffer import BinaryBuffer
13class D3plotHeaderTest(TestCase):
14 def test_loading(self):
16 filepaths = [
17 "test/simple_d3plot/d3plot",
18 "test/d3plot_node_temperature/d3plot",
19 "test/d3plot_beamip/d3plot",
20 "test/d3plot_solid_int/d3plot",
21 ]
23 for filepath in filepaths:
24 D3plotHeader().load_file(filepath)
26 # TODO more
28 def test_get_digit(self) -> None:
30 number = 1234567890
32 # the numbers are sorted from the lowest importance
33 # upwards
34 # 0 -> 0
35 # 1 -> 9
36 # ...
37 number_str = str(number)[::-1]
39 for index in range(len(number_str)):
40 digit = get_digit(number, index)
41 self.assertEqual(
42 digit,
43 int(number_str[index]),
44 f"index {index} digit {digit} digit_str {number_str[index]}",
45 )
47 self.assertEqual(get_digit(number, 10), 0)
49 def test_d3plot_filetype_from_integer(self) -> None:
51 self.assertEqual(
52 d3plot_filetype_from_integer(1),
53 D3plotFiletype.D3PLOT,
54 )
55 self.assertEqual(
56 d3plot_filetype_from_integer(5),
57 D3plotFiletype.D3PART,
58 )
59 self.assertEqual(
60 d3plot_filetype_from_integer(11),
61 D3plotFiletype.D3EIGV,
62 )
64 # INFOR is forbidden
65 with self.assertRaises(ValueError):
66 d3plot_filetype_from_integer(4)
68 with self.assertRaises(ValueError):
69 d3plot_filetype_from_integer(0)
71 def test_determine_file_settings(self) -> None:
73 # the routine checks the "filetype" flag
74 # if it makes any sense under any circumstances
75 # we assume the corresponding file settings
77 # 44 -> int32
78 # 88 -> int64
79 for position in (44, 88):
80 for filetype in (D3plotFiletype.D3PLOT, D3plotFiletype.D3PART, D3plotFiletype.D3EIGV):
82 bb = BinaryBuffer()
83 bb.memoryview = memoryview(bytearray(256))
84 bb.write_number(position, filetype.value, np.int32)
86 word_size, itype, ftype = D3plotHeader._determine_file_settings(bb)
88 if position == 44:
89 self.assertEqual(word_size, 4)
90 self.assertEqual(itype, np.int32)
91 self.assertEqual(ftype, np.float32)
92 else:
93 self.assertEqual(word_size, 8)
94 self.assertEqual(itype, np.int64)
95 self.assertEqual(ftype, np.float64)
97 # error
98 bb = BinaryBuffer()
99 bb.memoryview = memoryview(bytearray(256))
101 with self.assertRaises(RuntimeError):
102 D3plotHeader._determine_file_settings(bb)