001    /* Copyright 2000 by Basil Vandegriend.  All rights reserved. */
002    
003    package com.basilv.examples.dom4j;
004    
005    /**
006     * Unit tests for a single class.
007     */
008    public 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    }