check if game data is present
This commit is contained in:
parent
2d3bcc4f50
commit
fe690a6d9b
16
src/game.rs
16
src/game.rs
|
@ -67,8 +67,10 @@ impl Version {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, PartialEq)]
|
||||
pub enum NotFound {
|
||||
/// no game data whatsoever
|
||||
Anything,
|
||||
Avatar,
|
||||
Room,
|
||||
Sprite,
|
||||
|
@ -105,6 +107,10 @@ impl Game {
|
|||
// would be nice to *try* to parse a game, and catalogue any and all errors without crashing,
|
||||
// for display purposes etc.
|
||||
pub fn from(string: String) -> Result<Game, NotFound> {
|
||||
if string.clone().trim() == "".to_string() {
|
||||
return Err(NotFound::Anything);
|
||||
}
|
||||
|
||||
let line_endings_crlf = string.contains("\r\n");
|
||||
let mut string = string;
|
||||
if line_endings_crlf {
|
||||
|
@ -837,7 +843,7 @@ impl Game {
|
|||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::game::{Version, Game};
|
||||
use crate::game::{Version, Game, NotFound};
|
||||
use crate::text::{TextDirection, Font};
|
||||
use crate::tile::Tile;
|
||||
use crate::image::Image;
|
||||
|
@ -1062,4 +1068,10 @@ mod test {
|
|||
let expected = Some(&game.tiles[0]);
|
||||
assert_eq!(output, expected);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn empty_game_data_throws_error() {
|
||||
assert_eq!(Game::from("".to_string() ).err().unwrap(), NotFound::Anything);
|
||||
assert_eq!(Game::from(" \n \r\n".to_string()).err().unwrap(), NotFound::Anything);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue