use std::io::Cursor;
use anni_common::decode;
use anni_common::decode::{raw_to_string, DecodeError};
#[test]
fn take_token() {
let arr = b"fLaC|2333|114515";
let mut cursor = Cursor::new(arr);
assert!(decode::token(&mut cursor, b"fLaC").is_ok());
assert!(decode::token(&mut cursor, b"|2333|").is_ok());
assert_eq!(
decode::token(&mut cursor, b"114514").map_err(|e| match e {
DecodeError::InvalidTokenError { expected, got } => {
&expected == b"114514" && &got == b"114515"
}
_ => false,
}),
Err(true)
);
}
#[test]
fn u32_le() -> Result<(), decode::DecodeError> {
let arr = vec![1, 2, 3, 4, 5, 6, 7, 8];
let mut cursor = Cursor::new(arr);
assert_eq!(decode::u32_le(&mut cursor)?, 0x04030201);
assert_eq!(decode::u32_le(&mut cursor)?, 0x08070605);
Ok(())
}
#[test]
fn u32_be() -> Result<(), decode::DecodeError> {
let arr = vec![1, 2, 3, 4, 5, 6, 7, 8];
let mut cursor = Cursor::new(arr);
assert_eq!(decode::u32_be(&mut cursor)?, 0x01020304);
assert_eq!(decode::u32_be(&mut cursor)?, 0x05060708);
Ok(())
}
#[test]
fn test_raw_to_string() {
let input = include_bytes!("GNCA-0337.cue");
let str = raw_to_string(input);
assert_eq!(
str,
r#"TITLE "TVアニメ「ご注文はうさぎですか?」キャラクターソング①"
REM DATE "2014"
FILE "GNCA-0337.flac" WAVE
TRACK 01 AUDIO
TITLE "全天候型いらっしゃいませ"
PERFORMER "ココア(佐倉綾音)、チノ(水瀬いのり)"
INDEX 01 00:00:00
TRACK 02 AUDIO
TITLE "ハミングsoon!"
PERFORMER "ココア(佐倉綾音)"
INDEX 00 03:44:10
INDEX 01 03:45:48
TRACK 03 AUDIO
TITLE "a cup of happiness"
PERFORMER "チノ(水瀬いのり)"
INDEX 00 08:22:22
INDEX 01 08:23:23
TRACK 04 AUDIO
TITLE "全天候型いらっしゃいませ (Instrumental)"
PERFORMER "ココア(佐倉綾音)、チノ(水瀬いのり)"
INDEX 00 12:56:41
INDEX 01 12:58:46
TRACK 05 AUDIO
TITLE "ハミングsoon!(Instrumental)"
PERFORMER "ココア(佐倉綾音)"
INDEX 00 16:42:18
INDEX 01 16:43:56
TRACK 06 AUDIO
TITLE "a cup of happiness (Instrumental)"
PERFORMER "チノ(水瀬いのり)"
INDEX 00 21:20:30
INDEX 01 21:21:31
"#
)
}