2023-08-01 00:19:05 +08:00
#[ cfg(test) ]
mod tests {
use std ::thread ::sleep ;
use std ::time ::Duration ;
use image ::io ::Reader as ImageReader ;
2023-08-22 00:01:59 +08:00
use log ::LevelFilter ;
use crate ::pokemmo ::const_value ::pokemmo_const_value ::{ BUTTON_HL_1 , BUTTON_HL_2 , BUTTON_HL_3 , BUTTON_HL_4 , GROUP_5_1 , GROUP_5_2 , GROUP_5_3 , GROUP_5_4 , GROUP_5_5 , LAST_TEXT_AREA , LOGO , MAP_CITY , SHORTCUT_KEY_1 , SHORTCUT_KEY_5 , SINGLE_BATTLE , TEMP_BATTLE_TEXT_AREA , TEXT_AREA } ;
use crate ::pokemmo ::pokemmo ::pokemmo ::{ check_screen_active , get_choose_btn , get_last_string , read_area , read_group_5 , single_meet_shiny } ;
2023-08-01 00:19:05 +08:00
use crate ::screen ::screen ::screen ::{ print_image , screen_shot } ;
2023-08-22 00:01:59 +08:00
#[ test ]
fn try_meet_shiny ( ) {
2024-01-05 00:39:17 +08:00
simple_logging ::log_to_file ( " ./test/log/meet_shiny2.log " , LevelFilter ::Info ) . expect ( " set log failed " ) ;
2023-08-01 00:19:05 +08:00
2023-08-22 00:01:59 +08:00
let key_words = vec! [
2024-01-05 00:39:17 +08:00
" shiny " . to_string ( ) ,
// 闪电鸟
" zapdos " . to_string ( ) ,
" zap " . to_string ( ) ,
" pdos " . to_string ( ) ,
2023-08-22 00:01:59 +08:00
] ;
single_meet_shiny ( & key_words ) ;
2023-08-01 00:19:05 +08:00
}
2023-08-22 00:01:59 +08:00
#[ test ]
fn print_shortcut ( ) {
2024-01-05 00:39:17 +08:00
let text = screen_shot ( Some ( TEXT_AREA ) ) ;
2023-08-22 00:01:59 +08:00
print_image ( text , " temp_battle_text " . to_string ( ) ) ;
}
2023-08-01 00:19:05 +08:00
2023-08-22 00:01:59 +08:00
#[ test ]
fn print_group_5 ( ) {
let group_5_1 = screen_shot ( Some ( GROUP_5_1 ) ) ;
print_image ( group_5_1 , " group_5_1 " . to_string ( ) ) ;
let group_5_2 = screen_shot ( Some ( GROUP_5_2 ) ) ;
print_image ( group_5_2 , " group_5_2 " . to_string ( ) ) ;
let group_5_3 = screen_shot ( Some ( GROUP_5_3 ) ) ;
print_image ( group_5_3 , " group_5_3 " . to_string ( ) ) ;
let group_5_4 = screen_shot ( Some ( GROUP_5_4 ) ) ;
print_image ( group_5_4 , " group_5_4 " . to_string ( ) ) ;
let group_5_5 = screen_shot ( Some ( GROUP_5_5 ) ) ;
print_image ( group_5_5 , " group_5_5 " . to_string ( ) ) ;
2023-08-01 00:19:05 +08:00
}
#[ test ]
2023-08-22 00:01:59 +08:00
fn print_button ( ) {
let btn_hl_1 = screen_shot ( Some ( BUTTON_HL_1 ) ) ;
print_image ( btn_hl_1 , " btn_hl_1 " . to_string ( ) ) ;
let btn_hl_2 = screen_shot ( Some ( BUTTON_HL_2 ) ) ;
print_image ( btn_hl_2 , " btn_hl_2 " . to_string ( ) ) ;
let btn_hl_3 = screen_shot ( Some ( BUTTON_HL_3 ) ) ;
print_image ( btn_hl_3 , " btn_hl_3 " . to_string ( ) ) ;
let btn_hl_4 = screen_shot ( Some ( BUTTON_HL_4 ) ) ;
print_image ( btn_hl_4 , " btn_hl_4 " . to_string ( ) ) ;
2023-08-01 00:19:05 +08:00
}
2024-01-05 00:39:17 +08:00
2023-08-01 00:19:05 +08:00
#[ test ]
2023-08-22 00:01:59 +08:00
fn find_text ( ) {
2024-01-05 00:39:17 +08:00
let text = screen_shot ( Some ( TEMP_BATTLE_TEXT_AREA ) ) ;
print_image ( text , " 51 " . to_string ( ) ) ;
2023-08-22 00:01:59 +08:00
let text = read_area ( TEMP_BATTLE_TEXT_AREA ) ;
println! ( " text in image: {} " , text ) ;
2024-01-05 00:39:17 +08:00
2023-08-22 00:01:59 +08:00
}
2023-08-01 00:19:05 +08:00
2023-08-22 00:01:59 +08:00
#[ test ]
fn get_active_btn ( ) {
let index_op = get_choose_btn ( ) ;
if index_op . is_some ( ) {
println! ( " 激活索引: {} " , index_op . unwrap ( ) ) ;
} else {
println! ( " 无激活索引 " ) ;
}
2023-08-01 00:19:05 +08:00
}
2023-08-22 00:01:59 +08:00
2023-08-01 00:19:05 +08:00
#[ test ]
fn compare_logo ( ) {
let active_logo = ImageReader ::open ( " ./resources/pokemmo/image/logo_active.png " ) . expect ( " read active logo image failed " ) . decode ( ) . expect ( " decode image failed " ) ;
let active_logo_data = active_logo . as_bytes ( ) . to_vec ( ) ;
let na_logo = ImageReader ::open ( " ./resources/pokemmo/image/logo_unactive.png " ) . expect ( " read active logo image failed " ) . decode ( ) . expect ( " decode image failed " ) ;
let na_logo_data = na_logo . as_bytes ( ) . to_vec ( ) ;
let size = active_logo_data . len ( ) ;
let mut dis = 0_ isize ;
for i in 0 .. size {
2023-08-22 00:01:59 +08:00
dis + = na_logo_data [ i . clone ( ) ] . clone ( ) as isize - active_logo_data [ i . clone ( ) ] . clone ( ) as isize ;
2023-08-01 00:19:05 +08:00
}
println! ( " dis = {} " , dis ) ;
}
2024-01-05 00:39:17 +08:00
#[ test ]
fn cal_win_influence ( ) {
let list = vec! [
( " 巨钳螳螂 " , 0.4848_ f32 , 0.5072_ f32 ) ,
( " 烈咬陆鲨 " , 0.3482_ f32 , 0.5126_ f32 ) ,
( " 快龙 " , 0.3227_ f32 , 0.5178_ f32 ) ,
( " 宝石海星 " , 0.2184_ f32 , 0.5239_ f32 ) ,
( " 清洗洛托姆 " , 0.2181_ f32 , 0.5174_ f32 ) ,
( " 火神蛾 " , 0.1276_ f32 , 0.4852_ f32 ) ,
] ;
for ( name , usage , win ) in list {
let win_rate = win - 0.5_ f32 ;
let influence = ( ( win_rate * ( usage * usage + 2_ f32 * usage + ( 1_ f32 - usage ) ) ) - usage * usage ) / ( 2_ f32 * usage * ( 1_ f32 - usage ) ) ;
println! ( " {} , win rate {} , influence {} " , name , win_rate , influence ) ;
}
}
}