Implement new tests!
This commit is contained in:
parent
4294f2c1d2
commit
c51a72f17b
@ -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 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));
|
//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,553,115,26))));
|
||||||
//System.out.println(typeface1.extractNumbersFromImage(MYROBOT.createScreenCapture(new Rectangle(1235,583,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))));
|
//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"));
|
ImageIO.write(MYROBOT.createNormalScreenCapture(new Rectangle(418,204,1227,690)),"png",new File("scoreimage.png"));
|
||||||
File tmp = new File("tmp");
|
File tmp = new File("tmp");
|
||||||
if (tmp.exists()) {
|
if (tmp.exists()) {
|
||||||
@ -235,19 +236,21 @@ public class MyRobot{
|
|||||||
} else {
|
} else {
|
||||||
tmp.mkdir();
|
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 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 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 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"));
|
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)));
|
boolean fail = textFailPixel(MYROBOT.createNormalScreenCapture(new Rectangle(952,385,1,1)));
|
||||||
/*try {
|
/*try {
|
||||||
ImageIO.write(MYROBOT.createScreenCapture(new Rectangle(1235,583,115,26)),"png",new File("worst.png"));
|
ImageIO.write(MYROBOT.createScreenCapture(new Rectangle(1235,583,115,26)),"png",new File("worst.png"));
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
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"));
|
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) {
|
if (cool==-1 || fine==-1 || safe==-1 || sad==-1 || worst==-1 || percent==-0.01f) {
|
||||||
System.out.println("Waiting for results to populate...");
|
System.out.println("Waiting for results to populate...");
|
||||||
@ -502,13 +505,16 @@ public class MyRobot{
|
|||||||
typeface1 = null;
|
typeface1 = null;
|
||||||
typeface2=null;
|
typeface2=null;
|
||||||
try {
|
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")));
|
img2 = ImageUtils.toCompatibleImage(ImageIO.read(new File("typeface2.png")));
|
||||||
typeface1 = new TypeFace2(img1);
|
typeface1 = new TypeFace2(img1);
|
||||||
typeface2 = new TypeFace2(img2);
|
typeface2 = new TypeFace2(img2);
|
||||||
typeface2.green_minthreshold=typeface2.blue_minthreshold=100;
|
typeface2.green_minthreshold=typeface2.blue_minthreshold=100;
|
||||||
typeface2.green_maxthreshold=typeface2.blue_maxthreshold=200;
|
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) {
|
} catch (IOException e1) {
|
||||||
e1.printStackTrace();
|
e1.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -627,7 +633,7 @@ public class MyRobot{
|
|||||||
BotMain();
|
BotMain();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RunTests() {
|
void RunTests() throws IOException {
|
||||||
|
|
||||||
//418,204
|
//418,204
|
||||||
/*int cool = typeface1.extractNumbersFromImage(MYROBOT.createScreenCapture(new Rectangle(1235,451,115,26)),new File(tmp,"cool"));
|
/*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[] {});
|
selectedSong=new SongData("LIKE THE WIND",new Color[] {});
|
||||||
difficulty="H";
|
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("え?あぁ、そう。_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_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);
|
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_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("結ンデ開イテ羅刹ト骸_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("エイリアンエイリアン_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);
|
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) {
|
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);
|
System.out.println("Running test "+_img);
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
String testdir="testsuite";
|
String testdir="testsuite";
|
||||||
@ -669,21 +691,25 @@ public class MyRobot{
|
|||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
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 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 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 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"));
|
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;
|
//TODO Needs fixing.
|
||||||
boolean fail = textFailPixel(ImageUtils.cropImage(img, new Rectangle(952-offset.x,385-offset.y,1,1))); ;
|
//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.
|
||||||
assert cool == _cool : "Expected cool count to be "+_cool+", got "+cool;
|
//boolean fail = textFailPixel(ImageUtils.cropImage(img, new Rectangle(952-offset.x,385-offset.y,1,1)));
|
||||||
assert fine == _fine : "Expected fine count to be "+_fine+", got "+fine;
|
assert data[0] == _cool : "Expected cool count to be "+_cool+", got "+data[0];
|
||||||
assert safe == _safe : "Expected safe count to be "+_safe+", got "+safe;
|
assert data[1] == _fine : "Expected fine count to be "+_fine+", got "+data[1];
|
||||||
assert sad == _sad : "Expected sad count to be "+_sad+", got "+sad;
|
assert data[2] == _safe : "Expected safe count to be "+_safe+", got "+data[2];
|
||||||
assert worst == _worst : "Expected worst count to be "+_worst+", got "+worst;
|
assert data[3] == _sad : "Expected sad count to be "+_sad+", got "+data[3];
|
||||||
assert percent == _percent : "Expected percent to be "+_percent+", got "+percent;
|
assert data[4] == _worst : "Expected worst count to be "+_worst+", got "+data[4];
|
||||||
assert fail == _fail : "Expected fail to be "+_fail+", got "+fail;
|
//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)!");
|
System.out.println(" Passed ("+(System.currentTimeMillis()-startTime)+"ms)!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,9 +20,9 @@ public class TestMain {
|
|||||||
/*Thread.sleep(3000);
|
/*Thread.sleep(3000);
|
||||||
r.refreshScoreScreen();
|
r.refreshScoreScreen();
|
||||||
ImageIO.write(r.scoreCurrentScreen,"png",new File("testimage.png"));*/
|
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("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("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 {
|
public int[] getAllData(BufferedImage img) throws IOException {
|
||||||
BufferedImage img2 = ImageUtils.toBufferedImage(img.getScaledInstance(1280, 720, Image.SCALE_AREA_AVERAGING));
|
return getAllData(img,false);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int extractNumbersFromImage(BufferedImage img) throws IOException {
|
public int extractNumbersFromImage(BufferedImage img) throws IOException {
|
||||||
@ -135,4 +112,31 @@ public class TypeFace2 {
|
|||||||
return Integer.parseInt(total);
|
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…
x
Reference in New Issue
Block a user