JUnit测试用户绘制的线条

时间:2016-11-17 17:02:53

标签: java user-interface junit

我在为这段代码编写测试时遇到了问题,并且不知道怎么做。

当按下其中一个键长度为1时,此代码绘制一条线。 按住shift键会产生一条长度为5的线。 我需要测试是否为每种情况绘制一条具有正确长度参数的行。

class SketchPanel extends JPanel {   

private Point2D last;

private final ArrayList<Line2D> lines;

private static final int SMALL_INCREMENT = 1;

private static final int LARGE_INCREMENT = 5;

public SketchPanel() { 
    super();
    last = new Point2D.Double(100, 100);
    lines = new ArrayList<>();
    KeyHandler listener;
    listener = new KeyHandler();
    addKeyListener(listener);
    setFocusable(true);      
}

public void add(final int dexX, final int dexY) {  
    Point2D end;
    end = new Point2D.Double(last.getX() + dexX, last.getY() + dexY);
    Line2D line;
    line = new Line2D.Double(last, end);
    lines.add(line);
    repaint();
    last = end;
}

@Override
public void paintComponent(final Graphics graph) {  
    super.paintComponent(graph);
    Graphics2D graph2 = (Graphics2D) graph;
    lines.forEach((s) -> graph2.draw(s));
}

private class KeyHandler implements KeyListener {  

    @Override
    public void keyPressed(final KeyEvent event) {  
        final int keyCode = event.getKeyCode();

        int dex = 0;
        if (event.isShiftDown()) {
            dex = LARGE_INCREMENT;               
        } else {
            dex = SMALL_INCREMENT;
        }
        switch (keyCode) {
            case KeyEvent.VK_LEFT:
                add(-dex, 0);
                break;
            case KeyEvent.VK_RIGHT:
                add(dex, 0);
                break;
            case KeyEvent.VK_UP:
                add(0, -dex);
                break;
            case KeyEvent.VK_DOWN:
                add(0, dex);
                break;
            default:
                break;
        }
    }

    @Override
    public void keyReleased(final KeyEvent event) {}

    @Override
    public void keyTyped(final KeyEvent event) {  
        char keyChar = event.getKeyChar();
        int dex;
        if (Character.isUpperCase(keyChar)) {  
            dex = LARGE_INCREMENT;
            keyChar = Character.toLowerCase(keyChar);
        } else {
            dex = SMALL_INCREMENT;
        }

        switch (keyChar) {
            case 'h':
                add(-dex, 0);
                break;
            case 'l':
                add(dex, 0);
                break;
            case 'k':
                add(0, -dex);
                break;
            case 'j':
                add(0, dex);
                break;
            default:
                break;
        }
    }
}

0 个答案:

没有答案