001/* Copyright 2000 by Basil Vandegriend.  All rights reserved. */
002
003package com.basilv.examples.dom4j;
004
005/**
006 * Unit tests for a single class.
007 */
008public class MazeXmlConverterTest extends junit.framework.TestCase
009{
010  public MazeXmlConverterTest(String name) {
011    super(name);
012  }
013
014  public void testEmpty() {
015    Maze maze = new Maze(3, 5);
016    verifyConvertToXmlAndBack(maze);
017  }
018
019  public void testWithSomeWalls() {
020    Maze maze = new Maze(5, 4);
021    maze.setDescription("A maze");
022    maze.addWall(1, 0, 1, 1);
023    maze.addWall(0, 2, 1, 2);
024    maze.addWall(1, 3, 1, 4);
025    maze.addWall(2, 1, 2, 3);
026    maze.addWall(2, 1, 3, 1);
027    maze.addWall(3, 3, 3, 4);
028    maze.addWall(3, 3, 4, 3);
029    maze.addWall(4, 2, 4, 4);
030    maze.addWall(4, 1, 5, 1);
031
032    verifyConvertToXmlAndBack(maze);
033  }
034
035  private void verifyConvertToXmlAndBack(Maze originalMaze) {
036    MazeXmlConverter converter = new MazeXmlConverter();
037    String xml = converter.toXml(originalMaze);
038    assertNotNull(xml);
039
040    Maze newMaze = converter.fromXml(xml);
041    assertNotNull(newMaze);
042    assertEquals(originalMaze.getSize(), newMaze.getSize());
043
044    if (originalMaze.getDescription() == null) {
045      assertEquals("", newMaze.getDescription());
046    } else {
047      assertEquals(originalMaze.getDescription(), newMaze.getDescription());
048    }
049
050    assertEquals(originalMaze.getWalls().size(), newMaze.getWalls().size());
051    for (int i = 0; i < originalMaze.getWalls().size(); i++) {
052      Wall originalWall = originalMaze.getWalls().get(i);
053      Wall newWall = newMaze.getWalls().get(i);
054      assertEquals(originalWall, newWall);
055    }
056
057  }
058
059}