Skip to content

Commit b64caaf

Browse files
committed
Small unit tests for WebcamPanel
1 parent a04d1ca commit b64caaf

File tree

3 files changed

+174
-9
lines changed

3 files changed

+174
-9
lines changed
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
package com.github.sarxos.webcam;
2+
3+
import java.awt.Dimension;
4+
import java.awt.image.BufferedImage;
5+
6+
import javax.swing.JFrame;
7+
8+
import org.assertj.core.api.Assertions;
9+
import org.junit.Test;
10+
11+
import com.github.sarxos.webcam.WebcamPanel.DrawMode;
12+
import com.github.sarxos.webcam.ds.test.DummyDriver;
13+
14+
15+
public class WebcamPanelTest {
16+
17+
@Test
18+
public void test_size() throws InterruptedException {
19+
20+
Webcam.setDriver(new DummyDriver());
21+
22+
final Webcam w = Webcam.getDefault();
23+
final WebcamPanel p = new WebcamPanel(w);
24+
25+
w.open();
26+
p.repaint();
27+
28+
final BufferedImage bi = w.getImage();
29+
final Dimension d = p.getPreferredSize();
30+
31+
Assertions
32+
.assertThat(d.getWidth())
33+
.isEqualTo(bi.getWidth());
34+
Assertions
35+
.assertThat(d.getHeight())
36+
.isEqualTo(bi.getHeight());
37+
38+
p.stop();
39+
w.close();
40+
}
41+
42+
@Test
43+
public void test_sizeSpecified() throws InterruptedException {
44+
45+
Webcam.setDriver(new DummyDriver());
46+
47+
final Webcam w = Webcam.getDefault();
48+
final WebcamPanel p = new WebcamPanel(w, new Dimension(256, 345), false);
49+
50+
w.open();
51+
p.repaint();
52+
53+
final Dimension d = p.getPreferredSize();
54+
55+
Assertions
56+
.assertThat(d.getWidth())
57+
.isEqualTo(256);
58+
Assertions
59+
.assertThat(d.getHeight())
60+
.isEqualTo(345);
61+
62+
p.stop();
63+
w.close();
64+
}
65+
66+
@Test
67+
public void test_modeFill() throws InterruptedException {
68+
69+
Webcam.setDriver(new DummyDriver());
70+
71+
final Webcam w = Webcam.getDefault();
72+
w.open();
73+
74+
final WebcamPanel p = new WebcamPanel(w, new Dimension(256, 345), false);
75+
p.setDrawMode(DrawMode.FILL);
76+
p.start();
77+
78+
Assertions
79+
.assertThat(p.getDrawMode())
80+
.isEqualTo(DrawMode.FILL);
81+
82+
final JFrame frame = new JFrame();
83+
frame.setContentPane(p);
84+
frame.pack();
85+
86+
Thread.sleep(100);
87+
88+
frame.dispose();
89+
90+
p.stop();
91+
w.close();
92+
}
93+
94+
@Test
95+
public void test_modeFit() throws InterruptedException {
96+
97+
Webcam.setDriver(new DummyDriver());
98+
99+
final Webcam w = Webcam.getDefault();
100+
w.open();
101+
102+
final WebcamPanel p = new WebcamPanel(w, new Dimension(256, 345), false);
103+
p.setDrawMode(DrawMode.FIT);
104+
p.start();
105+
106+
Assertions
107+
.assertThat(p.getDrawMode())
108+
.isEqualTo(DrawMode.FIT);
109+
110+
final JFrame frame = new JFrame();
111+
frame.setContentPane(p);
112+
frame.pack();
113+
114+
Thread.sleep(100);
115+
116+
frame.dispose();
117+
118+
p.stop();
119+
w.close();
120+
}
121+
122+
@Test
123+
public void test_modeNone() throws InterruptedException {
124+
125+
Webcam.setDriver(new DummyDriver());
126+
127+
final Webcam w = Webcam.getDefault();
128+
w.open();
129+
130+
final WebcamPanel p = new WebcamPanel(w, new Dimension(256, 345), false);
131+
p.setDrawMode(DrawMode.NONE);
132+
p.start();
133+
134+
Assertions
135+
.assertThat(p.getDrawMode())
136+
.isEqualTo(DrawMode.NONE);
137+
138+
final JFrame frame = new JFrame();
139+
frame.setContentPane(p);
140+
frame.pack();
141+
142+
Thread.sleep(100);
143+
144+
frame.dispose();
145+
146+
p.stop();
147+
w.close();
148+
}
149+
}

webcam-capture/src/test/java/com/github/sarxos/webcam/ds/test/DummyDevice.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,37 @@ public void setResolution(Dimension size) {
4242
this.size = size;
4343
}
4444

45+
private int mx = 1;
46+
private int my = 1;
47+
private int r = 10;
48+
private int x = r;
49+
private int y = r;
50+
4551
@Override
4652
public BufferedImage getImage() {
4753

4854
if (!open) {
4955
throw new WebcamException("Not open");
5056
}
5157

52-
BufferedImage bi = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
53-
Graphics2D g2 = bi.createGraphics();
58+
final BufferedImage bi = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
59+
final Graphics2D g2 = bi.createGraphics();
5460
g2.setColor(Color.RED);
5561
g2.fillRect(0, 0, size.width, size.height);
56-
g2.drawString(getName(), 20, 20);
62+
g2.setColor(Color.BLACK);
63+
g2.drawString(getName(), 10, 20);
64+
g2.setColor(Color.WHITE);
65+
g2.drawOval(x += mx, y += my, r, r);
5766
g2.dispose();
5867
bi.flush();
5968

69+
if (x <= 0 + r || x >= size.width - r) {
70+
mx = -mx;
71+
}
72+
if (y <= 0 + r || y >= size.height - r) {
73+
my = -my;
74+
}
75+
6076
return bi;
6177
}
6278

@@ -70,6 +86,7 @@ public void close() {
7086
open = false;
7187
}
7288

89+
@Override
7390
public boolean isOpen() {
7491
return open;
7592
}

webcam-capture/src/test/java/com/github/sarxos/webcam/ds/test/DummyDriver.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@
1111
public class DummyDriver implements WebcamDriver {
1212

1313
private static final List<WebcamDevice> DEVICES = new ArrayList<WebcamDevice>(Arrays.asList(new WebcamDevice[] {
14-
new DummyDevice(),
15-
new DummyDevice(),
16-
new DummyDevice(),
17-
new DummyDevice(),
14+
new DummyDevice(),
15+
new DummyDevice(),
16+
new DummyDevice(),
17+
new DummyDevice(),
1818
}));
1919

2020
private static DummyDriver instance = null;
2121

22-
public DummyDriver() throws InstantiationException {
22+
public DummyDriver() {
2323
if (instance == null) {
2424
instance = this;
2525
}
@@ -38,5 +38,4 @@ public List<WebcamDevice> getDevices() {
3838
public boolean isThreadSafe() {
3939
return false;
4040
}
41-
4241
}

0 commit comments

Comments
 (0)