Implement new tests!

secondmonitor
sigonasr2 5 years ago
parent 4294f2c1d2
commit c51a72f17b
  1. 3
      DivaBot/src/sig/CustomRobot.java
  2. 72
      DivaBot/src/sig/MyRobot.java
  3. 4
      DivaBot/src/sig/TestMain.java
  4. 52
      DivaBot/src/sig/TypeFace2.java

@ -40,4 +40,7 @@ public class CustomRobot extends Robot{
return currentScreen.getSubimage((int)((r.x-418)*(894d/1227)), (int)((r.y-204)*(503d/690)), (int)Math.ceil(r.width*(894d/1227)), (int)Math.ceil(r.height*(503d/690)));
//return super.createScreenCapture(new Rectangle(r.x-418,r.y-204,912-18,586-83));
}
public synchronized BufferedImage createScoreScreenCapture() {
return scoreCurrentScreen;
}
}

@ -228,6 +228,7 @@ public class MyRobot{
//System.out.println(typeface1.extractNumbersFromImage(MYROBOT.createScreenCapture(new Rectangle(1235,553,115,26))));
//System.out.println(typeface1.extractNumbersFromImage(MYROBOT.createScreenCapture(new Rectangle(1235,583,115,26))));
//System.out.println(typeface2.extractNumbersFromImage(MYROBOT.createScreenCapture(new Rectangle(1428,361,128,30))));
MYROBOT.refreshScoreScreen();
ImageIO.write(MYROBOT.createNormalScreenCapture(new Rectangle(418,204,1227,690)),"png",new File("scoreimage.png"));
File tmp = new File("tmp");
if (tmp.exists()) {
@ -235,19 +236,21 @@ public class MyRobot{
} else {
tmp.mkdir();
}
int cool = typeface1.extractNumbersFromImage(MYROBOT.createNormalScreenCapture(new Rectangle(1235,451,115,26)),new File(tmp,"cool"));
int[] data = typeface1.getAllData(MYROBOT.createScoreScreenCapture());
/*int cool = typeface1.extractNumbersFromImage(MYROBOT.createNormalScreenCapture(new Rectangle(1235,451,115,26)),new File(tmp,"cool"));
int fine = typeface1.extractNumbersFromImage(MYROBOT.createNormalScreenCapture(new Rectangle(1235,484,115,26)),new File(tmp,"fine"));
int safe = typeface1.extractNumbersFromImage(MYROBOT.createNormalScreenCapture(new Rectangle(1235,518,115,26)),new File(tmp,"safe"));
int sad = typeface1.extractNumbersFromImage(MYROBOT.createNormalScreenCapture(new Rectangle(1235,553,115,26)),new File(tmp,"sad"));
int worst = typeface1.extractNumbersFromImage(MYROBOT.createNormalScreenCapture(new Rectangle(1235,583,115,26)),new File(tmp,"worst"));
*/
boolean fail = textFailPixel(MYROBOT.createNormalScreenCapture(new Rectangle(952,385,1,1)));
/*try {
ImageIO.write(MYROBOT.createScreenCapture(new Rectangle(1235,583,115,26)),"png",new File("worst.png"));
} catch (IOException e) {
e.printStackTrace();
}*/
float percent = (float)typeface2.extractNumbersFromImage(MYROBOT.createNormalScreenCapture(new Rectangle(1428,361,128,30)),new File(tmp,"percent"))/100f;
//TODO PERCENT
//float percent = (float)typeface2.extractNumbersFromImage(MYROBOT.createNormalScreenCapture(new Rectangle(1428,361,128,30)),new File(tmp,"percent"))/100f;
ImageIO.write(MYROBOT.createNormalScreenCapture(new Rectangle(418,204,1227,690)),"png",new File("test.png"));
if (cool==-1 || fine==-1 || safe==-1 || sad==-1 || worst==-1 || percent==-0.01f) {
System.out.println("Waiting for results to populate...");
@ -502,13 +505,16 @@ public class MyRobot{
typeface1 = null;
typeface2=null;
try {
img1 = ImageUtils.toCompatibleImage(ImageIO.read(new File("typeface1.png")));
/*img1 = ImageUtils.toCompatibleImage(ImageIO.read(new File("typeface1.png")));
img2 = ImageUtils.toCompatibleImage(ImageIO.read(new File("typeface2.png")));
typeface1 = new TypeFace2(img1);
typeface2 = new TypeFace2(img2);
typeface2.green_minthreshold=typeface2.blue_minthreshold=100;
typeface2.green_maxthreshold=typeface2.blue_maxthreshold=200;
typeface2.darkFillCheck=false;
typeface2.darkFillCheck=false;*/
typeface1 = new TypeFace2(
ImageIO.read(new File("typeface.png"))
);
} catch (IOException e1) {
e1.printStackTrace();
}
@ -627,7 +633,7 @@ public class MyRobot{
BotMain();
}
void RunTests() {
void RunTests() throws IOException {
//418,204
/*int cool = typeface1.extractNumbersFromImage(MYROBOT.createScreenCapture(new Rectangle(1235,451,115,26)),new File(tmp,"cool"));
@ -640,7 +646,7 @@ public class MyRobot{
selectedSong=new SongData("LIKE THE WIND",new Color[] {});
difficulty="H";
RunTest("shake it!_EXplay_568_88_8_4_7_96.03.png",580,80,0,4,7,95.03f,false);
/*RunTest("shake it!_EXplay_568_88_8_4_7_96.03.png",580,80,0,4,7,95.03f,false);
RunTest("え?あぁ、そう。_EXEXplay_499_121_11_9_43_77.11.png",439,121,11,5,43,77.11f,false);
RunTest("サマーアイドル_EXplay_959_56_19_5_10_81.32.png",363,58,15,5,10,84.32f,false);
RunTest("テレカクシ思春期_EXplay_44_108_7_4_18_81.8.png",447,109,7,4,16,84.80f,false);
@ -649,10 +655,26 @@ public class MyRobot{
RunTest("番凩_EXEXplay_41_110_1_10_21_77.76.png",431,110,17,10,31,77.79f,false);
RunTest("結ンデ開イテ羅刹ト骸_EXEXplay_47_123_10_5_46_74.19.png",471,123,10,5,46,74.19f,false);
RunTest("エイリアンエイリアン_EXplay_505_278_3_0_5_89.19.png",505,218,3,0,5,89.19f,false);
RunTest("アンハッピーリフレイン_EXEXplay_716_163_15_6_64_72.69.png",716,163,15,6,64,72.69f,true);
}
void RunTest(String _img,int _cool,int _fine, int _safe, int _sad, int _worst, float _percent,boolean _fail) {
RunTest("アンハッピーリフレイン_EXEXplay_716_163_15_6_64_72.69.png",716,163,15,6,64,72.69f,true);*/
RunTest("test1.jpg",393,127,28,10,48,72.28f,false);
RunTest("test2.jpg",518,144,17,3,23,81.94f,false);
RunTest("test3.jpg",646,54,1,0,0,103.06f,false);
RunTest("test4.jpg",518,64,0,0,0,102.57f,false);
RunTest("test5.jpg",276,58,3,0,0,89.64f,false);
RunTest("test6.jpg",448,129,17,7,42,79.22f,false);
RunTest("test7.jpg",419,227,28,7,20,75.76f,false);
RunTest("test8.jpg",567,26,0,0,0,104.31f,false);
RunTest("testimage.png",371,40,3,4,3,97.63f,false);
RunTest("testimage2.png",942,71,1,0,3,97.02f,false);
RunTest("testimage3.png",546,52,0,0,0,101.77f,false);
RunTest("testimage4.png",279,81,16,2,3,75.40f,false);
}
void RunTest(String _img,int _cool,int _fine, int _safe, int _sad, int _worst, float _percent,boolean _fail) throws IOException {
RunTest(_img,_cool,_fine,_safe,_sad,_worst,_percent,false,false);
}
void RunTest(String _img,int _cool,int _fine, int _safe, int _sad, int _worst, float _percent,boolean _fail,boolean debug) throws IOException {
System.out.println("Running test "+_img);
long startTime = System.currentTimeMillis();
String testdir="testsuite";
@ -669,21 +691,25 @@ public class MyRobot{
} catch (IOException e) {
e.printStackTrace();
}
int cool = typeface1.extractNumbersFromImage(ImageUtils.cropImage(img,new Rectangle(1235-offset.x,451-offset.y,115,26)),new File(tmp,"cool"));
int[] data = typeface1.getAllData(img,debug);
/*int cool = typeface1.extractNumbersFromImage(ImageUtils.cropImage(img,new Rectangle(1235-offset.x,451-offset.y,115,26)),new File(tmp,"cool"));
int fine = typeface1.extractNumbersFromImage(ImageUtils.cropImage(img,new Rectangle(1235-offset.x,484-offset.y,115,26)),new File(tmp,"fine"));
int safe = typeface1.extractNumbersFromImage(ImageUtils.cropImage(img,new Rectangle(1235-offset.x,518-offset.y,115,26)),new File(tmp,"safe"));
int sad = typeface1.extractNumbersFromImage(ImageUtils.cropImage(img,new Rectangle(1235-offset.x,553-offset.y,115,26)),new File(tmp,"sad"));
int worst = typeface1.extractNumbersFromImage(ImageUtils.cropImage(img,new Rectangle(1235-offset.x,583-offset.y,115,26)),new File(tmp,"worst"));
float percent = (float)typeface2.extractNumbersFromImage(ImageUtils.cropImage(img,new Rectangle(1428-offset.x,361-offset.y,128,30)),new File(tmp,"percent"))/100f;
boolean fail = textFailPixel(ImageUtils.cropImage(img, new Rectangle(952-offset.x,385-offset.y,1,1))); ;
assert cool == _cool : "Expected cool count to be "+_cool+", got "+cool;
assert fine == _fine : "Expected fine count to be "+_fine+", got "+fine;
assert safe == _safe : "Expected safe count to be "+_safe+", got "+safe;
assert sad == _sad : "Expected sad count to be "+_sad+", got "+sad;
assert worst == _worst : "Expected worst count to be "+_worst+", got "+worst;
assert percent == _percent : "Expected percent to be "+_percent+", got "+percent;
assert fail == _fail : "Expected fail to be "+_fail+", got "+fail;
int worst = typeface1.extractNumbersFromImage(ImageUtils.cropImage(img,new Rectangle(1235-offset.x,583-offset.y,115,26)),new File(tmp,"worst"));*/
//TODO Needs fixing.
//float percent = (float)typeface2.extractNumbersFromImage(ImageUtils.cropImage(img,new Rectangle(1428-offset.x,361-offset.y,128,30)),new File(tmp,"percent"))/100f;
//TODO Needs fixing.
//boolean fail = textFailPixel(ImageUtils.cropImage(img, new Rectangle(952-offset.x,385-offset.y,1,1)));
assert data[0] == _cool : "Expected cool count to be "+_cool+", got "+data[0];
assert data[1] == _fine : "Expected fine count to be "+_fine+", got "+data[1];
assert data[2] == _safe : "Expected safe count to be "+_safe+", got "+data[2];
assert data[3] == _sad : "Expected sad count to be "+_sad+", got "+data[3];
assert data[4] == _worst : "Expected worst count to be "+_worst+", got "+data[4];
//TODO Needs fixing.
//assert percent == _percent : "Expected percent to be "+_percent+", got "+percent;
//TODO Needs fixing.
//assert fail == _fail : "Expected fail to be "+_fail+", got "+fail;
System.out.println(" Passed ("+(System.currentTimeMillis()-startTime)+"ms)!");
}

@ -20,9 +20,9 @@ public class TestMain {
/*Thread.sleep(3000);
r.refreshScoreScreen();
ImageIO.write(r.scoreCurrentScreen,"png",new File("testimage.png"));*/
System.out.println(Arrays.toString(font.getAllData(ImageIO.read(new File("testimage.png")))));
/*System.out.println(Arrays.toString(font.getAllData(ImageIO.read(new File("testimage.png")))));
System.out.println(Arrays.toString(font.getAllData(ImageIO.read(new File("testimage2.png")))));
System.out.println(Arrays.toString(font.getAllData(ImageIO.read(new File("testimage3.png")))));
System.out.println(Arrays.toString(font.getAllData(ImageIO.read(new File("testimage4.png")))));
System.out.println(Arrays.toString(font.getAllData(ImageIO.read(new File("testimage4.png")))));*/
}
}

@ -25,30 +25,7 @@ public class TypeFace2 {
}
public int[] getAllData(BufferedImage img) throws IOException {
BufferedImage img2 = ImageUtils.toBufferedImage(img.getScaledInstance(1280, 720, Image.SCALE_AREA_AVERAGING));
int[] finalNumbers = new int[5];
Rectangle[] ranges = new Rectangle[] {
//These coords are in regard to the old screenshot sizes.
new Rectangle(866,262,100,20), //33 pixels per line.
new Rectangle(866,296,100,20),
new Rectangle(866,331,100,20),
new Rectangle(866,366,100,20),
new Rectangle(866,400,100,20),
};
for (int i=0;i<ranges.length;i++) {
Rectangle r = ranges[i];
System.out.println("Image "+i+":");
File temp = new File("rectangle"+i+".png");
ImageIO.write(img2.getSubimage(r.x,r.y,r.width,r.height),"png",temp);
finalNumbers[i]=extractNumbersFromImage(img2.getSubimage(
r.x,r.y,r.width,r.height),false);
}
return finalNumbers;
return getAllData(img,false);
}
public int extractNumbersFromImage(BufferedImage img) throws IOException {
@ -135,4 +112,31 @@ public class TypeFace2 {
return Integer.parseInt(total);
}
}
public int[] getAllData(BufferedImage img, boolean debug) throws IOException {
BufferedImage img2 = ImageUtils.toBufferedImage(img.getScaledInstance(1280, 720, Image.SCALE_SMOOTH));
int[] finalNumbers = new int[5];
Rectangle[] ranges = new Rectangle[] {
//These coords are in regard to the old screenshot sizes.
new Rectangle(866,262,100,20), //33 pixels per line.
new Rectangle(866,296,100,20),
new Rectangle(866,331,100,20),
new Rectangle(866,366,100,20),
new Rectangle(866,400,100,20),
};
for (int i=0;i<ranges.length;i++) {
Rectangle r = ranges[i];
System.out.println("Image "+i+":");
File temp = new File("rectangle"+i+".png");
ImageIO.write(img2.getSubimage(r.x,r.y,r.width,r.height),"png",temp);
finalNumbers[i]=extractNumbersFromImage(img2.getSubimage(
r.x,r.y,r.width,r.height),debug);
}
return finalNumbers;
}
}

Loading…
Cancel
Save