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 crate::{Avatar, Dialogue, Ending, Item, Palette, Room, Sprite, Tile, Variable, mock};
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
pub struct Game {
|
pub struct Game {
|
||||||
|
@ -266,3 +267,50 @@ fn test_add_tile() {
|
||||||
assert_eq!(new_id, 1);
|
assert_eq!(new_id, 1);
|
||||||
assert_eq!(game.tiles.len(), 3);
|
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