diff options
Diffstat (limited to 'watchmaker/examples/src/java/test/org/uncommons/watchmaker/examples/sudoku/SudokuCellRendererTest.java')
-rw-r--r-- | watchmaker/examples/src/java/test/org/uncommons/watchmaker/examples/sudoku/SudokuCellRendererTest.java | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/watchmaker/examples/src/java/test/org/uncommons/watchmaker/examples/sudoku/SudokuCellRendererTest.java b/watchmaker/examples/src/java/test/org/uncommons/watchmaker/examples/sudoku/SudokuCellRendererTest.java new file mode 100644 index 0000000..e1f3df3 --- /dev/null +++ b/watchmaker/examples/src/java/test/org/uncommons/watchmaker/examples/sudoku/SudokuCellRendererTest.java @@ -0,0 +1,112 @@ +//============================================================================= +// Copyright 2006-2010 Daniel W. Dyer +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//============================================================================= +package org.uncommons.watchmaker.examples.sudoku; + +import java.awt.Color; +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.table.TableCellRenderer; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +/** + * Unit test for the {@link SudokuCellRenderer} class. + * @author Daniel Dyer + */ +public class SudokuCellRendererTest +{ + private JTable table; + + + @Test + public void testRenderFixedCells() + { + SudokuTableModel model = new SudokuTableModel(); + // Set the 2 lefthand cells in the top row. + model.setValueAt('1', 0, 0); + model.setValueAt('2', 0, 1); + + JTable table = new JTable(model); + TableCellRenderer renderer = new SudokuCellRenderer(); + + JLabel cell1 = (JLabel) renderer.getTableCellRendererComponent(table, '1', false, false, 0, 0); + assert cell1.getText().equals("1") : "Wrong text at cell 1: " + cell1.getText(); + assert cell1.getFont().isBold() : "Fixed cells should be rendered in bold."; + JLabel cell2 = (JLabel) renderer.getTableCellRendererComponent(table, '2', false, false, 0, 1); + assert cell2.getText().equals("2") : "Wrong text at cell 2: " + cell2.getText(); + assert cell2.getFont().isBold() : "Fixed cells should be rendered in bold."; + // Check an empty cell, it should have no text. + JLabel cell3 = (JLabel) renderer.getTableCellRendererComponent(table, null, false, false, 0, 2); + assert cell3.getText().length() == 0 : "Wrong text at cell 3: " + cell3.getText(); + } + + + @BeforeClass + public void createTable() + { + SudokuTableModel model = new SudokuTableModel(); + model.setSudoku(SudokuTestUtils.createSudoku(new int[][]{{3, 2, 4, 8, 9, 1, 7, 5, 6}, + {6, 9, 7, 1, 5, 2, 8, 4, 3}, + {8, 1, 5, 7, 3, 6, 4, 2, 9}, + {5, 2, 6, 9, 7, 4, 3, 1, 8}, + {4, 9, 8, 1, 2, 5, 6, 7, 3}, + {8, 7, 1, 3, 4, 2, 9, 6, 5}, + {2, 6, 3, 4, 8, 7, 5, 9, 1}, + {1, 3, 5, 8, 4, 9, 2, 6, 7}, + {7, 4, 2, 1, 5, 3, 9, 8, 6}})); + table = new JTable(model); + } + + + @Test + public void testRenderCellWithNoConflicts() + { + TableCellRenderer renderer = new SudokuCellRenderer(); + JLabel cell = (JLabel) renderer.getTableCellRendererComponent(table, 1, false, false, 2, 1); + assert cell.getText().equals("1") : "Wrong value at cell (2, 1): " + cell.getText(); + assert cell.getBackground() == Color.WHITE : "Cell without conflicts should be white."; + } + + + @Test + public void testRenderCellWithOneConflict() + { + TableCellRenderer renderer = new SudokuCellRenderer(); + JLabel cell = (JLabel) renderer.getTableCellRendererComponent(table, 3, false, false, 7, 1); + assert cell.getText().equals("3") : "Wrong value at cell (7, 1): " + cell.getText(); + assert cell.getBackground() == Color.YELLOW : "Cell with one conflict should be yellow."; + } + + + @Test + public void testRenderCellWithTwoConflicts() + { + TableCellRenderer renderer = new SudokuCellRenderer(); + JLabel cell = (JLabel) renderer.getTableCellRendererComponent(table, 6, false, false, 8, 8); + assert cell.getText().equals("6") : "Wrong value at cell (8, 8): " + cell.getText(); + assert cell.getBackground() == Color.ORANGE : "Cell with two conflicts should be orange."; + } + + + @Test + public void testRenderCellWithThreeConflicts() + { + TableCellRenderer renderer = new SudokuCellRenderer(); + JLabel cell = (JLabel) renderer.getTableCellRendererComponent(table, 1, false, false, 1, 3); + assert cell.getText().equals("1") : "Wrong value at cell (1, 3): " + cell.getText(); + assert cell.getBackground() == Color.RED : "Cell with two conflicts should be red."; + } +} |