diff --git a/pytiled_parser/utilities.py b/pytiled_parser/utilities.py index b3aae42..b43c367 100644 --- a/pytiled_parser/utilities.py +++ b/pytiled_parser/utilities.py @@ -1,5 +1,6 @@ -import functools -from typing import Dict, List, Optional +"""Helper unitilies for pytiled_parser.""" + +from typing import List, Optional import pytiled_parser.objects as objects @@ -13,8 +14,9 @@ def parse_color(color: str) -> objects.Color: Returns: :Color: Color object in the format that Arcade understands. """ - # strip initial '#' character - if not len(color) % 2 == 0: + # the actual part we care about is always an even number + if len(color) % 2: + # strip initial '#' character color = color[1:] if len(color) == 6: diff --git a/pytiled_parser/xml_parser.py b/pytiled_parser/xml_parser.py index 9e504fb..63b0796 100644 --- a/pytiled_parser/xml_parser.py +++ b/pytiled_parser/xml_parser.py @@ -48,12 +48,12 @@ def _decode_base64_data( for byte in unzipped_data: int_value += byte << (byte_count * 8) byte_count += 1 - if byte_count % 4 == 0: + if not byte_count % 4: byte_count = 0 int_count += 1 tile_grid[row_count].append(int_value) int_value = 0 - if int_count % layer_width == 0: + if not int_count % layer_width: row_count += 1 tile_grid.append([]) @@ -498,7 +498,7 @@ def _parse_tiles( terrain_list: List[Optional[int]] = [] # each index in terrain_list_attrib refers to a corner for corner in terrain_list_attrib: - if corner == "": + if not corner: terrain_list.append(None) else: terrain_list.append(int(corner)) diff --git a/tests/test_parser.py b/tests/test_parser.py index 82c3388..360ddf3 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -1,6 +1,7 @@ +"""Unit tests for pytiled_parser""" + import xml.etree.ElementTree as etree from contextlib import contextmanager -from typing import Callable, List, Optional, Tuple import pytest from pytiled_parser import objects, utilities, xml_parser @@ -12,24 +13,33 @@ def does_not_raise(): def _get_root_element(xml: str) -> etree.Element: + """Get root element of string of XML. + + Args: + xml (str): String of XML to be parsed into etree. + + Returns: + etree.Element: Root element of XML given. + """ return etree.fromstring(xml) -layer_data = [ +LAYER_DATA = [ ( - '' "", + '' + + "", (int(1), "Tile Layer 1", None, None, None), ), ( '' - "", + + "", (int(2), "Tile Layer 2", None, float(0.5), None), ), ( '' - "" - "" - "", + + "" + + "" + + "", ( int(5), "Tile Layer 4", @@ -41,7 +51,7 @@ layer_data = [ ] -@pytest.mark.parametrize("xml,expected", layer_data) +@pytest.mark.parametrize("xml,expected", LAYER_DATA) def test_parse_layer(xml, expected, monkeypatch): def mockreturn(*args): return "properties" @@ -62,9 +72,6 @@ def test_parse_layer(xml, expected, monkeypatch): ], ) def test_color_parsing(test_input, expected): - """ - Tiled has a few different types of color representations. - """ assert utilities.parse_color(test_input) == expected @@ -94,7 +101,7 @@ def test_decode_csv_data(data_csv, expected): assert xml_parser._decode_csv_data(data_csv) == expected -data_base64 = [ +DATA_BASE64 = [ ( "AQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAA", 8, @@ -155,7 +162,7 @@ data_base64 = [ @pytest.mark.parametrize( - "data_base64,width,compression,expected,raises", data_base64 + "data_base64,width,compression,expected,raises", DATA_BASE64 ) def test_decode_base64_data(data_base64, width, compression, expected, raises): with raises: