(
full_object: object,
message_data: Sequence[tuple[str, str, str]],
number_of_elements: int,
different_ids: Sequence[object],
max_abs_diff: float,
max_rel_diff: float,
)
| 22 | |
| 23 | |
| 24 | def _compare_approx( |
| 25 | full_object: object, |
| 26 | message_data: Sequence[tuple[str, str, str]], |
| 27 | number_of_elements: int, |
| 28 | different_ids: Sequence[object], |
| 29 | max_abs_diff: float, |
| 30 | max_rel_diff: float, |
| 31 | ) -> list[str]: |
| 32 | message_list = list(message_data) |
| 33 | message_list.insert(0, (class="st">"Index", class="st">"Obtained", class="st">"Expected")) |
| 34 | max_sizes = [0, 0, 0] |
| 35 | for index, obtained, expected in message_list: |
| 36 | max_sizes[0] = max(max_sizes[0], len(index)) |
| 37 | max_sizes[1] = max(max_sizes[1], len(obtained)) |
| 38 | max_sizes[2] = max(max_sizes[2], len(expected)) |
| 39 | explanation = [ |
| 40 | fclass="st">"comparison failed. Mismatched elements: {len(different_ids)} / {number_of_elements}:", |
| 41 | fclass="st">"Max absolute difference: {max_abs_diff}", |
| 42 | fclass="st">"Max relative difference: {max_rel_diff}", |
| 43 | ] + [ |
| 44 | fclass="st">"{indexes:<{max_sizes[0]}} | {obtained:<{max_sizes[1]}} | {expected:<{max_sizes[2]}}" |
| 45 | for indexes, obtained, expected in message_list |
| 46 | ] |
| 47 | return explanation |
| 48 | |
| 49 | |
| 50 | class="cm"># builtin pytest.approx helper |
no test coverage detected