import { test, expect } from 'vitest' import { TiledParser } from "../src/parser/parser" import { MapClass } from '../src' const xmlWithTileProperties = ` 1,2, 3,4 ` const tileset = ` ` function getMap(xml: string): MapClass { const parser = new TiledParser(xml) const mapData = parser.parseMap() mapData.tilesets = mapData.tilesets.map(source => { const parserTileset = new TiledParser(tileset) const tilesetData = parserTileset.parseTileset() return { ...source, ...tilesetData } }) return new MapClass(mapData) } test('Tile properties should be preserved after creation', () => { const map = getMap(xmlWithTileProperties) // Get tile at position (0, 0) which should be tile ID 1 (firstgid=1, so tile 0 from tileset) const tileInfo = map.getTileByPosition(0, 0) const [tile] = tileInfo.tiles expect(tile).toBeDefined() expect(tile.properties).toBeDefined() expect(Object.keys(tile.properties)).toHaveLength(2) expect(tile.getProperty('collision')).toBe(true) expect(tile.getProperty('damage')).toBe(10) }) test('Multiple tiles should have their own properties', () => { const map = getMap(xmlWithTileProperties) // Get tile at position (32, 0) which should be tile ID 2 (tile 1 from tileset) const tileInfo = map.getTileByPosition(32, 0) const [tile] = tileInfo.tiles expect(tile).toBeDefined() expect(tile.properties).toBeDefined() expect(Object.keys(tile.properties)).toHaveLength(2) expect(tile.getProperty('collision')).toBe(false) expect(tile.getProperty('heal')).toBe(5) }) test('Tiles without properties should have empty properties object', () => { const map = getMap(xmlWithTileProperties) // Get tile at position (0, 32) which should be tile ID 3 (tile 2 from tileset, no properties defined) const tileInfo = map.getTileByPosition(0, 32) const [tile] = tileInfo.tiles expect(tile).toBeDefined() expect(tile.properties).toBeDefined() expect(Object.keys(tile.properties)).toHaveLength(0) })