Answered You can hire a professional tutor to get the answer.
I need help with writing a java test case for the following FourRowSolitaire program class: /* This file is a part of Four Row Solitaire Copyright
I need help with writing a java test case for the following FourRowSolitaire program class:
/* This file is a part of Four Row Solitaire Copyright (C) 2010 by Matt Stephen Four Row Solitaire is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Four Row Solitaire is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with FourRowSolitaire. If not, see <http://www.gnu.org/licenses/>. */package FourRowSolitaire;import java.awt.*;import java.awt.event.*;import javax.swing.*;/** * Class: ChangeAppearance * * Description: The ChangeAppearance class manages the ability to change the background or card backs. * * @author Matt Stephen */public class ChangeAppearance extends JDialog implements ActionListener{ public static final int NUM_DECKS = 3; public static final int NUM_BACKGROUNDS = 3; public static final int FRS_DECK = 3; public static final int FRS_BACKGROUND = 2; private JRadioButton[] decks = new JRadioButton[NUM_DECKS]; private JRadioButton[] backgrounds = new JRadioButton[NUM_BACKGROUNDS]; private JButton ok = new JButton("Choose This Setup"); public int deckNumber = 3; public int backgroundNumber = 2; private boolean exited = true; //To hold the image previews private JLabel cardBackLabel = new JLabel(); private JLabel backgroundLabel = new JLabel(); public ChangeAppearance(JFrame parent, int deckNumber, int backgroundNumber) { setTitle("Change Appearance"); setSize(400,300); setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); setModalityType(JDialog.ModalityType.APPLICATION_MODAL); setLocationRelativeTo(parent); this.deckNumber = deckNumber; this.backgroundNumber = backgroundNumber; setup(); setVisible(true); } private void setup() { //Card backs JPanel cardBackPanel = new JPanel(); cardBackPanel.setLayout(new FlowLayout()); ButtonGroup cardBacks = new ButtonGroup(); for(int i = 0; i < NUM_DECKS; i++) { decks[i] = new JRadioButton("Deck " + (i + 1)); cardBacks.add(decks[i]); cardBackPanel.add(decks[i]); decks[i].addActionListener(this); } if(deckNumber <= decks.length) { decks[deckNumber - 1].setSelected(true); } else { decks[2].setSelected(true); } //Backgrounds JPanel backgroundPanel = new JPanel(); backgroundPanel.setLayout(new FlowLayout()); ButtonGroup backgroundsBG = new ButtonGroup(); for(int i = 0; i < NUM_BACKGROUNDS; i++) { backgrounds[i] = new JRadioButton("Background " + (i + 1)); backgroundsBG.add(backgrounds[i]); backgroundPanel.add(backgrounds[i]); backgrounds[i].addActionListener(this); } if(backgroundNumber <= NUM_BACKGROUNDS) { backgrounds[backgroundNumber - 1].setSelected(true); } else { backgrounds[0].setSelected(true); } JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new FlowLayout(FlowLayout.CENTER)); buttonPanel.add(ok); cardBackLabel.setIcon(new ImageIcon(this.getClass().getResource ("images/cardbacks/cardback" + deckNumber + ".png"))); JPanel cardBackViewer = new JPanel(); cardBackViewer.add(cardBackLabel); backgroundLabel.setIcon(new ImageIcon(this.getClass().getResource ("images/backgrounds/background" + backgroundNumber + "small.jpg"))); JPanel backgroundViewer = new JPanel(); backgroundViewer.add(backgroundLabel); JPanel p2 = new JPanel(); p2.setLayout(new GridLayout(2, 2, 0, 0)); p2.add(cardBackPanel); p2.add(backgroundPanel); p2.add(cardBackViewer); p2.add(backgroundViewer); //Put everything together JPanel p1 = new JPanel(); p1.setLayout(new BorderLayout()); JLabel note = new JLabel("Note: Deck changes will take effect on new game"); note.setHorizontalAlignment(JLabel.CENTER); p1.add(note, BorderLayout.NORTH); p1.add(p2, BorderLayout.CENTER); p1.add(buttonPanel, BorderLayout.SOUTH); add(p1); ok.addActionListener(this); } public int getDeckNumber() { if(!exited) { return deckNumber; } return -1; } public int getBackgroundNumber() { if(!exited) { return backgroundNumber; } return -1; } public void actionPerformed(ActionEvent e) { if(e.getSource() == decks[0]) { deckNumber = 1; cardBackLabel.setIcon(new ImageIcon(this.getClass().getResource ("images/cardbacks/cardback" + deckNumber + ".png"))); } else if(e.getSource() == decks[1]) { deckNumber = 2; cardBackLabel.setIcon(new ImageIcon(this.getClass().getResource ("images/cardbacks/cardback" + deckNumber + ".png"))); } else if(e.getSource() == decks[2]) { deckNumber = 3; cardBackLabel.setIcon(new ImageIcon(this.getClass().getResource ("images/cardbacks/cardback" + deckNumber + ".png"))); } else if(e.getSource() == backgrounds[0]) { backgroundNumber = 1; backgroundLabel.setIcon(new ImageIcon(this.getClass().getResource ("images/backgrounds/background" + backgroundNumber + "small.jpg"))); } else if(e.getSource() == backgrounds[1]) { backgroundNumber = 2; backgroundLabel.setIcon(new ImageIcon(this.getClass().getResource ("images/backgrounds/background" + backgroundNumber + "small.jpg"))); } else if(e.getSource() == backgrounds[2]) { backgroundNumber = 3; backgroundLabel.setIcon(new ImageIcon(this.getClass().getResource ("images/backgrounds/background" + backgroundNumber + "small.jpg"))); } else if(e.getSource() == ok) { exited = false; setVisible(false); } }}