package com.github.sarxos.webcam;
import java.awt.Dimension;
import java.awt.Image;
import java.util.List;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import com.github.sarxos.webcam.ds.test.DummyDriver;
import com.github.sarxos.webcam.ds.test.DummyDriver2;
import com.github.sarxos.webcam.ds.test.DummyDriver3;
/**
* @author bfiryn
*/
public class WebcamStaticsTest {
@Before
public void prepare() {
Webcam.resetDriver();
System.out.println(Thread.currentThread().getName() + ": Register dummy driver");
Webcam.registerDriver(DummyDriver.class);
}
@After
public void cleanup() {
System.out.println(Thread.currentThread().getName() + ": Reset driver");
for (Webcam webcam : Webcam.getWebcams()) {
webcam.close();
}
Webcam.resetDriver();
}
@Test
public void test_getWebcams() {
System.out.println(Thread.currentThread().getName() + ": test_getWebcams() start");
List<Webcam> webcams = Webcam.getWebcams();
List<WebcamDevice> devices = DummyDriver.getInstance().getDevices();
Assert.assertTrue(webcams.size() > 0);
Assert.assertEquals(devices.size(), webcams.size());
System.out.println(Thread.currentThread().getName() + ": test_getWebcams() end");
}
@Test
public void test_getDefault() {
System.out.println(Thread.currentThread().getName() + ": test_getDefault() start");
List<Webcam> webcams = Webcam.getWebcams();
List<WebcamDevice> devices = DummyDriver.getInstance().getDevices();
Assert.assertNotNull(Webcam.getDefault());
Assert.assertSame(webcams.get(0), Webcam.getDefault());
Assert.assertSame(devices.get(0), Webcam.getDefault().getDevice());
System.out.println(Thread.currentThread().getName() + ": test_getDefault() end");
}
@Test
public void test_open() {
System.out.println(Thread.currentThread().getName() + ": test_open() start");
Webcam webcam = Webcam.getDefault();
webcam.open();
Assert.assertTrue(webcam.isOpen());
webcam.open();
Assert.assertTrue(webcam.isOpen());
System.out.println(Thread.currentThread().getName() + ": test_open() end");
}
@Test
public void test_close() {
System.out.println(Thread.currentThread().getName() + ": test_close() start");
Webcam webcam = Webcam.getDefault();
webcam.open();
Assert.assertSame(DummyDriver.class, Webcam.getDriver().getClass());
Assert.assertTrue(webcam.isOpen());
webcam.close();
Assert.assertFalse(webcam.isOpen());
webcam.close();
Assert.assertFalse(webcam.isOpen());
System.out.println(Thread.currentThread().getName() + ": test_close() end");
}
@Test
public void test_getImage() {
System.out.println(Thread.currentThread().getName() + ": test_getImage() start");
Webcam webcam = Webcam.getDefault();
webcam.open();
Assert.assertSame(DummyDriver.class, Webcam.getDriver().getClass());
Image image = webcam.getImage();
Assert.assertNotNull(image);
System.out.println(Thread.currentThread().getName() + ": test_getImage() end");
}
@Test
public void test_getSizes() {
System.out.println(Thread.currentThread().getName() + ": test_getSizes() start");
Dimension[] sizes = Webcam.getDefault().getViewSizes();
Assert.assertSame(DummyDriver.class, Webcam.getDriver().getClass());
Assert.assertNotNull(sizes);
Assert.assertEquals(2, sizes.length);
System.out.println(Thread.currentThread().getName() + ": test_getSizes() end");
}
@Test
public void test_setSize() {
Webcam webcam = Webcam.getDefault();
Dimension[] sizes = webcam.getViewSizes();
webcam.setViewSize(sizes[0]);
Assert.assertNotNull(webcam.getViewSize());
Assert.assertSame(sizes[0], webcam.getViewSize());
}
@Test
public void test_setDriver() throws InstantiationException {
Webcam.setDriver(DummyDriver2.class);
WebcamDriver driver2 = Webcam.getDriver();
Assert.assertSame(DummyDriver2.class, driver2.getClass());
WebcamDriver driver3 = new DummyDriver3();
Webcam.setDriver(driver3);
Assert.assertSame(driver3, Webcam.getDriver());
}
@Test
public void test_registerDriver() {
Webcam.resetDriver();
Webcam.registerDriver(DummyDriver.class);
Webcam.getWebcams();
WebcamDriver driver = Webcam.getDriver();
Assert.assertSame(DummyDriver.class, driver.getClass());
}
@Test
public void test_GetWebcamByName() throws InstantiationException {
Webcam.setDriver(new DummyDriver());
for (Webcam webcam : Webcam.getWebcams()) {
Assert.assertEquals(webcam.getName(), Webcam.getWebcamByName(webcam.getName()).getName());
}
}
@Test
public void test_GetWebcamByNameWithNotExistingWebcamName() throws InstantiationException {
Webcam.setDriver(new DummyDriver());
Assert.assertNull(Webcam.getWebcamByName("DatCameraDoesNotExist"));
}
@Test(expected = IllegalArgumentException.class)
public void test_GetWebcamByNameWithNullArgument() throws InstantiationException {
Webcam.setDriver(new DummyDriver());
Webcam.getWebcamByName(null);
}
}