/*
* 作成日: 2008/06/14
*/
package jp.ac.fit.asura.nao.vision.perception;
import static jp.ac.fit.asura.nao.vision.GCD.cBLACK;
import static jp.ac.fit.asura.nao.vision.GCD.cCYAN;
import static jp.ac.fit.asura.nao.vision.GCD.cGREEN;
import static jp.ac.fit.asura.nao.vision.GCD.cYELLOW;
import jp.ac.fit.asura.nao.AsuraCoreTest;
import jp.ac.fit.asura.nao.VisualFrameContext;
import jp.ac.fit.asura.nao.vision.VisualContext;
import junit.framework.TestCase;
/**
* @author $Author: sey $
*
* @version $Id: BlobUtilsTest.java 709 2008-11-23 07:40:31Z sey $
*
*/
public class BlobUtilsTest extends TestCase {
public void testFormBlobs() {
BlobVision utils = new BlobVision();
VisualFrameContext frameContext = new VisualFrameContext(null);
VisualContext context = new VisualContext(null);
frameContext.setVisualContext(context);
byte[] plane = new byte[] { //
cBLACK, cCYAN, cCYAN, cBLACK, cBLACK, //
cBLACK, cYELLOW, cCYAN, cCYAN, cBLACK, //
cYELLOW, cYELLOW, cGREEN, cYELLOW, cGREEN, //
cBLACK, cBLACK, cBLACK, cYELLOW, cYELLOW, //
cBLACK, cBLACK, cBLACK, cBLACK, cBLACK };
assertEquals(5 * 5, plane.length);
context.gcdPlane = plane;
context.image = AsuraCoreTest.createImage(null, 5, 5, 0);
utils.setVisualFrameContext(frameContext);
utils.formBlobs();
assertEquals(1, utils.nBlobs[cCYAN]);
assertEquals(1, utils.nBlobs[cYELLOW]);
assertEquals(1, utils.nBlobs[cGREEN]);
System.out.println(utils.blobInfo[cCYAN][0]);
System.out.println(utils.blobInfo[cYELLOW][0]);
assertEquals(1, utils.blobInfo[cCYAN][0].xmin);
assertEquals(3, utils.blobInfo[cCYAN][0].xmax);
assertEquals(0, utils.blobInfo[cCYAN][0].ymin);
assertEquals(1, utils.blobInfo[cCYAN][0].ymax);
assertEquals(4, utils.blobInfo[cCYAN][0].mass);
assertEquals(0, utils.blobInfo[cYELLOW][0].xmin);
assertEquals(4, utils.blobInfo[cYELLOW][0].xmax);
assertEquals(1, utils.blobInfo[cYELLOW][0].ymin);
assertEquals(3, utils.blobInfo[cYELLOW][0].ymax);
assertEquals(7, utils.blobInfo[cYELLOW][0].mass);
assertFalse(utils.findBlobs(cCYAN, 1, 3).isEmpty());
assertTrue(utils.findBlobs(cCYAN, 1, 5).isEmpty());
assertFalse(utils.findBlobs(cYELLOW, 1, 3).isEmpty());
}
}