galaxy_save_core 0.2.0

Defining common types and traits used in the save data of Super Mario Galaxy and Super Mario Galaxy 2
Documentation
use binrw::{BinReaderExt, BinWriterExt, io::Cursor};

use super::*;

#[test]
fn read_buf_init() {
    let mut reader = Cursor::new(b"mario1\0\0\0\0\0\0");
    let value = reader.read_be::<FixedString12>().unwrap();

    assert_eq!(value.to_string().unwrap(), "mario1");
}

#[test]
fn read_buf_uninit() {
    let mut reader = Cursor::new(b"luigi1\0\xFF\xFF\xFF\xFF\xFF");
    let value = reader.read_be::<FixedString12>().unwrap();

    assert_eq!(value.to_string().unwrap(), "luigi1");
}

#[test]
fn read_buf_empty_init() {
    let mut reader = Cursor::new(b"\0\0\0\0\0\0\0\0");
    let value = reader.read_be::<FixedString12>().unwrap();

    assert_eq!(value.to_string().unwrap(), "");
}

#[test]
fn read_buf_empty_uninit() {
    let mut reader = Cursor::new(b"\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF");
    let value = reader.read_be::<FixedString12>().unwrap();

    assert_eq!(value.to_string().unwrap(), "");
}

#[test]
fn read_buf_missing_nul() {
    let mut reader = Cursor::new(b"user1");
    let value = reader.read_be::<FixedString<5>>();

    assert!(value.is_err());
}

#[test]
fn from_str_ok() {
    let s = "";
    let value = FixedString12::from_str(s).unwrap();
    assert_eq!(value.to_string().unwrap(), s);

    let s = "config1";
    let value = FixedString12::from_str(s).unwrap();
    assert_eq!(value.to_string().unwrap(), s);
}

#[test]
fn from_str_err() {
    let s = "buffer_overflow";
    let value = FixedString12::from_str(s);

    assert_eq!(value, Err(ParseFixedStringError::BufferOverflow));
}

#[test]
fn write_buf() {
    let value = FixedString12::from_str("sysconf").unwrap();
    let mut writer = Cursor::new(Vec::new());

    writer.write_be(&value).unwrap();

    assert_eq!(writer.into_inner(), b"sysconf\0\0\0\0\0");
}

#[test]
fn write_buf_empty() {
    let value = FixedString12::new();
    let mut writer = Cursor::new(Vec::new());

    writer.write_be(&value).unwrap();

    assert_eq!(writer.into_inner(), b"\0\0\0\0\0\0\0\0\0\0\0\0");
}