generated from ElnuDev/rust-project
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1017 B
38 lines
1017 B
use std::{fs::{self, File}, io::{Write, Read}};
|
|
|
|
use crate::jmdict::Jmdict;
|
|
|
|
fn get_jmdict_json() -> String {
|
|
fs::read_dir("loader")
|
|
.unwrap()
|
|
.filter_map(|file| {
|
|
let file = file.unwrap();
|
|
if file.file_name().to_string_lossy().ends_with(".json") {
|
|
Some(fs::read_to_string(file.path()).ok())
|
|
} else {
|
|
None
|
|
}
|
|
})
|
|
.next()
|
|
.unwrap()
|
|
.unwrap()
|
|
}
|
|
|
|
const BIN_PATH: &str = "JMdict.bin";
|
|
|
|
#[test]
|
|
fn jmdict_load_and_serialize() {
|
|
let jmdict: Jmdict = serde_json::from_str(&get_jmdict_json()).unwrap();
|
|
let encoded: Vec<u8> = bincode::serialize(&jmdict).unwrap();
|
|
let mut file = File::create(BIN_PATH).unwrap();
|
|
file.write_all(&encoded).unwrap();
|
|
}
|
|
|
|
#[test]
|
|
fn jmdict_deserialize() {
|
|
let mut file = File::open(BIN_PATH).unwrap();
|
|
let mut buffer = Vec::new();
|
|
file.read_to_end(&mut buffer).unwrap();
|
|
let _jmdict: Jmdict = bincode::deserialize(&buffer).unwrap();
|
|
}
|