test framework for archive of bitsy game data
This commit is contained in:
parent
833e44a019
commit
5413be82bc
48
src/game.rs
48
src/game.rs
|
@ -1,4 +1,5 @@
|
|||
use crate::{Avatar, Dialogue, Ending, Item, Palette, Room, Sprite, Tile, Variable, mock};
|
||||
use std::fs;
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
pub struct Game {
|
||||
|
@ -266,3 +267,50 @@ fn test_add_tile() {
|
|||
assert_eq!(new_id, 1);
|
||||
assert_eq!(game.tiles.len(), 3);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_bitsy_omnibus() {
|
||||
let acceptable_failures: Vec<String> = vec![
|
||||
// avatar ordering issues
|
||||
"src/test-resources/omnibus/682993AC.bitsy.txt".to_string(),
|
||||
"src/test-resources/omnibus/0D901EE6.bitsy.txt".to_string(),
|
||||
"src/test-resources/omnibus/7FEF71E4.bitsy.txt".to_string(),
|
||||
"src/test-resources/omnibus/245E93CB.bitsy.txt".to_string(),
|
||||
"src/test-resources/omnibus/A643C5F4.bitsy.txt".to_string(),
|
||||
"src/test-resources/omnibus/7533372B.bitsy.txt".to_string(),
|
||||
"src/test-resources/omnibus/DBD5D375.bitsy.txt".to_string(),
|
||||
|
||||
// fails because of sprite colours but also because a tile contains "NaN"
|
||||
"src/test-resources/omnibus/DA88C287.bitsy.txt".to_string(),
|
||||
|
||||
// fails because room wall array is not implemented - @todo investigate
|
||||
// (this game uses room_format 1 - I thought it'd be using 0...)
|
||||
"src/test-resources/omnibus/76EB6E4A.bitsy.txt".to_string(),
|
||||
"src/test-resources/omnibus/DC053B1A.bitsy.txt".to_string(),
|
||||
|
||||
// todo handle fonts!
|
||||
"src/test-resources/omnibus/4B4EB988.bitsy.txt".to_string(),
|
||||
];
|
||||
|
||||
let mut passes = 0;
|
||||
let mut skips = 0;
|
||||
|
||||
for file in fs::read_dir("src/test-resources/omnibus").unwrap() {
|
||||
let path = file.unwrap().path();
|
||||
let nice_name = format!("{}", path.display());
|
||||
|
||||
if ! nice_name.contains("bitsy") || acceptable_failures.contains(&nice_name) {
|
||||
skips += 1;
|
||||
println!("Skipping: {}", nice_name);
|
||||
println!("Skipped. {} passes, {} skips.", passes, skips);
|
||||
continue;
|
||||
}
|
||||
|
||||
println!("\nTesting: {}...", path.display());
|
||||
let game_data = fs::read_to_string(path).unwrap();
|
||||
let game = Game::from(game_data.clone());
|
||||
assert_eq!(game.to_string().trim(), game_data.trim());
|
||||
passes += 1;
|
||||
println!("Success! {} passes, {} skips.", passes, skips);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue