Index: trunk/test/unit/org/openstreetmap/josm/TestUtils.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 9906)
+++ trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 9907)
@@ -4,10 +4,35 @@
 import static org.junit.Assert.fail;
 
+import java.awt.Canvas;
+import java.awt.Color;
 import java.awt.Component;
+import java.awt.Composite;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.Image;
+import java.awt.Paint;
+import java.awt.Rectangle;
+import java.awt.RenderingHints;
+import java.awt.RenderingHints.Key;
+import java.awt.Shape;
+import java.awt.Stroke;
+import java.awt.font.FontRenderContext;
+import java.awt.font.GlyphVector;
+import java.awt.geom.AffineTransform;
+import java.awt.image.BufferedImage;
+import java.awt.image.BufferedImageOp;
+import java.awt.image.ImageObserver;
+import java.awt.image.RenderedImage;
+import java.awt.image.renderable.RenderableImage;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.text.AttributedCharacterIterator;
 import java.util.Arrays;
 import java.util.Comparator;
+import java.util.Map;
 
 import org.openstreetmap.josm.gui.progress.AbstractProgressMonitor;
@@ -196,6 +221,327 @@
                 return null;
             }
-
         };
     }
+
+    // CHECKSTYLE.OFF: AnonInnerLength
+    // CHECKSTYLE.OFF: MethodLength
+    // CHECKSTYLE.OFF: ParameterNumber
+
+    /**
+     * Returns an instance of {@link Graphics2D}.
+     * @return a mockup graphics instance
+     */
+    public static Graphics2D newGraphics() {
+        return new Graphics2D() {
+
+            @Override
+            public void setXORMode(Color c1) {
+            }
+
+            @Override
+            public void setPaintMode() {
+            }
+
+            @Override
+            public void setFont(Font font) {
+            }
+
+            @Override
+            public void setColor(Color c) {
+            }
+
+            @Override
+            public void setClip(int x, int y, int width, int height) {
+            }
+
+            @Override
+            public void setClip(Shape clip) {
+            }
+
+            @Override
+            public FontMetrics getFontMetrics(Font f) {
+                return new Canvas().getFontMetrics(getFont());
+            }
+
+            @Override
+            public Font getFont() {
+                return new Font(null, 0, 0);
+            }
+
+            @Override
+            public Color getColor() {
+                return null;
+            }
+
+            @Override
+            public Rectangle getClipBounds() {
+                return null;
+            }
+
+            @Override
+            public Shape getClip() {
+                return null;
+            }
+
+            @Override
+            public void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) {
+            }
+
+            @Override
+            public void fillRect(int x, int y, int width, int height) {
+            }
+
+            @Override
+            public void fillPolygon(int[] xPoints, int[] yPoints, int nPoints) {
+            }
+
+            @Override
+            public void fillOval(int x, int y, int width, int height) {
+            }
+
+            @Override
+            public void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) {
+            }
+
+            @Override
+            public void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) {
+            }
+
+            @Override
+            public void drawPolyline(int[] xPoints, int[] yPoints, int nPoints) {
+            }
+
+            @Override
+            public void drawPolygon(int[] xPoints, int[] yPoints, int nPoints) {
+            }
+
+            @Override
+            public void drawOval(int x, int y, int width, int height) {
+            }
+
+            @Override
+            public void drawLine(int x1, int y1, int x2, int y2) {
+            }
+
+            @Override
+            public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2,
+                    Color bgcolor, ImageObserver observer) {
+                return false;
+            }
+
+            @Override
+            public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2,
+                    ImageObserver observer) {
+                return false;
+            }
+
+            @Override
+            public boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer) {
+                return false;
+            }
+
+            @Override
+            public boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) {
+                return false;
+            }
+
+            @Override
+            public boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer) {
+                return false;
+            }
+
+            @Override
+            public boolean drawImage(Image img, int x, int y, ImageObserver observer) {
+                return false;
+            }
+
+            @Override
+            public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) {
+            }
+
+            @Override
+            public void dispose() {
+            }
+
+            @Override
+            public Graphics create() {
+                return this;
+            }
+
+            @Override
+            public void copyArea(int x, int y, int width, int height, int dx, int dy) {
+            }
+
+            @Override
+            public void clipRect(int x, int y, int width, int height) {
+            }
+
+            @Override
+            public void clearRect(int x, int y, int width, int height) {
+            }
+
+            @Override
+            public void translate(double tx, double ty) {
+            }
+
+            @Override
+            public void translate(int x, int y) {
+            }
+
+            @Override
+            public void transform(AffineTransform Tx) {
+            }
+
+            @Override
+            public void shear(double shx, double shy) {
+            }
+
+            @Override
+            public void setTransform(AffineTransform Tx) {
+            }
+
+            @Override
+            public void setStroke(Stroke s) {
+            }
+
+            @Override
+            public void setRenderingHints(Map<?, ?> hints) {
+            }
+
+            @Override
+            public void setRenderingHint(Key hintKey, Object hintValue) {
+            }
+
+            @Override
+            public void setPaint(Paint paint) {
+            }
+
+            @Override
+            public void setComposite(Composite comp) {
+            }
+
+            @Override
+            public void setBackground(Color color) {
+            }
+
+            @Override
+            public void scale(double sx, double sy) {
+            }
+
+            @Override
+            public void rotate(double theta, double x, double y) {
+            }
+
+            @Override
+            public void rotate(double theta) {
+            }
+
+            @Override
+            public boolean hit(Rectangle rect, Shape s, boolean onStroke) {
+                return false;
+            }
+
+            @Override
+            public AffineTransform getTransform() {
+                return null;
+            }
+
+            @Override
+            public Stroke getStroke() {
+                return null;
+            }
+
+            @Override
+            public RenderingHints getRenderingHints() {
+                return null;
+            }
+
+            @Override
+            public Object getRenderingHint(Key hintKey) {
+                return null;
+            }
+
+            @Override
+            public Paint getPaint() {
+                return null;
+            }
+
+            @Override
+            public FontRenderContext getFontRenderContext() {
+                return null;
+            }
+
+            @Override
+            public GraphicsConfiguration getDeviceConfiguration() {
+                return null;
+            }
+
+            @Override
+            public Composite getComposite() {
+                return null;
+            }
+
+            @Override
+            public Color getBackground() {
+                return null;
+            }
+
+            @Override
+            public void fill(Shape s) {
+            }
+
+            @Override
+            public void drawString(AttributedCharacterIterator iterator, float x, float y) {
+            }
+
+            @Override
+            public void drawString(AttributedCharacterIterator iterator, int x, int y) {
+            }
+
+            @Override
+            public void drawString(String str, float x, float y) {
+            }
+
+            @Override
+            public void drawString(String str, int x, int y) {
+            }
+
+            @Override
+            public void drawRenderedImage(RenderedImage img, AffineTransform xform) {
+            }
+
+            @Override
+            public void drawRenderableImage(RenderableImage img, AffineTransform xform) {
+            }
+
+            @Override
+            public void drawImage(BufferedImage img, BufferedImageOp op, int x, int y) {
+            }
+
+            @Override
+            public boolean drawImage(Image img, AffineTransform xform, ImageObserver obs) {
+                return false;
+            }
+
+            @Override
+            public void drawGlyphVector(GlyphVector g, float x, float y) {
+            }
+
+            @Override
+            public void draw(Shape s) {
+            }
+
+            @Override
+            public void clip(Shape s) {
+            }
+
+            @Override
+            public void addRenderingHints(Map<?, ?> hints) {
+            }
+        };
+    }
+
+    // CHECKSTYLE.ON: ParameterNumber
+    // CHECKSTYLE.ON: MethodLength
+    // CHECKSTYLE.ON: AnonInnerLength
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRendererTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRendererTest.java	(revision 9907)
+++ trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRendererTest.java	(revision 9907)
@@ -0,0 +1,40 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.dialogs.relation;
+
+import static org.junit.Assert.assertEquals;
+
+import javax.swing.JTable;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType;
+
+/**
+ * Unit tests of {@link MemberTableLinkedCellRenderer} class.
+ */
+public class MemberTableLinkedCellRendererTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Unit test of {@link MemberTableLinkedCellRenderer#MemberTableLinkedCellRenderer}.
+     */
+    @Test
+    public void testMemberTableLinkedCellRenderer() {
+        MemberTableLinkedCellRenderer r = new MemberTableLinkedCellRenderer();
+        assertEquals(r, r.getTableCellRendererComponent(null, null, false, false, 0, 0));
+        r.paintComponent(TestUtils.newGraphics());
+        assertEquals(r, r.getTableCellRendererComponent(
+                new JTable(new MemberTableModel(null, null, null)),
+                new WayConnectionType(), false, false, 0, 0));
+        r.paintComponent(TestUtils.newGraphics());
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRendererTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRendererTest.java	(revision 9907)
+++ trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRendererTest.java	(revision 9907)
@@ -0,0 +1,39 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.dialogs.relation;
+
+import static org.junit.Assert.assertEquals;
+
+import javax.swing.JTable;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+/**
+ * Unit tests of {@link MemberTableMemberCellRenderer} class.
+ */
+public class MemberTableMemberCellRendererTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Unit test of {@link MemberTableMemberCellRenderer#MemberTableMemberCellRenderer}.
+     */
+    @Test
+    public void testMemberTableMemberCellRenderer() {
+        MemberTableMemberCellRenderer r = new MemberTableMemberCellRenderer();
+        assertEquals(r, r.getTableCellRendererComponent(null, null, false, false, 0, 0));
+        assertEquals(r, r.getTableCellRendererComponent(
+                new JTable(new MemberTableModel(null, new OsmDataLayer(new DataSet(), "", null), null)),
+                new Node(), false, false, 0, 0));
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/MemberTableRoleCellRendererTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/MemberTableRoleCellRendererTest.java	(revision 9907)
+++ trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/MemberTableRoleCellRendererTest.java	(revision 9907)
@@ -0,0 +1,38 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.dialogs.relation;
+
+import static org.junit.Assert.assertEquals;
+
+import javax.swing.JTable;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+/**
+ * Unit tests of {@link MemberTableRoleCellRenderer} class.
+ */
+public class MemberTableRoleCellRendererTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Unit test of {@link MemberTableRoleCellRenderer#MemberTableRoleCellRenderer}.
+     */
+    @Test
+    public void testMemberTableRoleCellRenderer() {
+        MemberTableRoleCellRenderer r = new MemberTableRoleCellRenderer();
+        assertEquals(r, r.getTableCellRendererComponent(null, null, false, false, 0, 0));
+        assertEquals(r, r.getTableCellRendererComponent(
+                new JTable(new MemberTableModel(null, new OsmDataLayer(new DataSet(), "", null), null)),
+                "foo", false, false, 0, 0));
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/RelationTreeCellRendererTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/RelationTreeCellRendererTest.java	(revision 9907)
+++ trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/RelationTreeCellRendererTest.java	(revision 9907)
@@ -0,0 +1,34 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.dialogs.relation;
+
+import static org.junit.Assert.assertEquals;
+
+import javax.swing.JTree;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.osm.Relation;
+
+/**
+ * Unit tests of {@link RelationTreeCellRenderer} class.
+ */
+public class RelationTreeCellRendererTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Unit test of {@link RelationTreeCellRenderer#RelationTreeCellRenderer}.
+     */
+    @Test
+    public void testRelationTreeCellRenderer() {
+        RelationTreeCellRenderer r = new RelationTreeCellRenderer();
+        assertEquals(r, r.getTreeCellRendererComponent(new JTree(), new Relation(), false, false, false, 0, false));
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRendererTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRendererTest.java	(revision 9907)
+++ trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRendererTest.java	(revision 9907)
@@ -0,0 +1,37 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.dialogs.relation;
+
+import static org.junit.Assert.assertEquals;
+
+import javax.swing.JTable;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.osm.Node;
+
+/**
+ * Unit tests of {@link SelectionTableCellRenderer} class.
+ */
+public class SelectionTableCellRendererTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Unit test of {@link SelectionTableCellRenderer#SelectionTableCellRenderer}.
+     */
+    @Test
+    public void testSelectionTableCellRenderer() {
+        MemberTableModel model = new MemberTableModel(null, null, null);
+        SelectionTableCellRenderer r = new SelectionTableCellRenderer();
+        r.setMemberTableModel(model);
+        assertEquals(r, r.getTableCellRendererComponent(null, null, false, false, 0, 0));
+        assertEquals(r, r.getTableCellRendererComponent(new JTable(model), new Node(), false, false, 0, 0));
+    }
+}
