Files
GarandPLG 73f544d5d6
Nix package / build (push) Successful in 8m44s
Linux package builds (test) / linux (push) Successful in 2m25s
Linux package builds (test) / aur (push) Successful in 7m41s
Rust checks / check (push) Successful in 3m39s
Update formatting to use 4‑space indentation
- Adjust rustfmt.toml to set tab_spaces = 4.
- Reformat imports, struct definitions, function bodies, and match arms
  across the project to match the new style (aligned fields, added
  spacing, etc.).
- Ensure all code complies with the updated rustfmt settings.
2026-10-19 17:43:43 +02:00

66 lines
2.2 KiB
Rust

use rodio::Decoder;
use std::{
fs::{self, read},
io::{BufReader, Cursor},
path::PathBuf,
process::{Command, Output},
};
use war_in_tunnels::app::threads::{SoundrackParts, Soundtrack, load_audio};
#[test]
fn audio_repeats_after_end_of_file() {
let data = read("soundtracks/default/calm.ogg").unwrap();
let sample_count = Decoder::new(BufReader::new(Cursor::new(data)))
.unwrap()
.count();
assert!(sample_count > 0);
let mut source = load_audio(&Soundtrack::Default, &SoundrackParts::Calm);
assert_eq!(source.by_ref().take(sample_count).count(), sample_count);
assert_eq!(source.take(1024).count(), 1024);
}
#[test]
fn packaged_audio_loads_without_project_working_directory() -> () {
if std::env::var_os("WAR_IN_TUNNELS_PACKAGED_AUDIO_TEST").is_some() {
let mut source: rodio::source::Amplify<
rodio::decoder::LoopedDecoder<BufReader<Cursor<Vec<u8>>>>,
> = load_audio(&Soundtrack::Default, &SoundrackParts::Calm);
assert_eq!(source.by_ref().take(1024).count(), 1024);
return;
}
let directory: PathBuf = std::env::temp_dir().join(format!(
"war-in-tunnels-packaged-audio-{}",
std::process::id()
));
fs::create_dir_all(directory.join("soundtracks/default")).unwrap();
fs::create_dir_all(directory.join("working-directory")).unwrap();
let executable: PathBuf = directory.join("audio-test");
fs::copy(std::env::current_exe().unwrap(), &executable).unwrap();
for filename in ["calm.ogg", "test.ogg"] {
fs::copy(
PathBuf::from("soundtracks/default").join(filename),
directory.join("soundtracks/default").join(filename),
)
.unwrap();
}
let output: Output = Command::new(executable)
.args([
"--exact",
"packaged_audio_loads_without_project_working_directory",
"--nocapture",
])
.env("WAR_IN_TUNNELS_PACKAGED_AUDIO_TEST", "1")
.current_dir(directory.join("working-directory"))
.output()
.unwrap();
fs::remove_dir_all(directory).unwrap();
assert!(
output.status.success(),
"{}{}",
String::from_utf8_lossy(&output.stdout),
String::from_utf8_lossy(&output.stderr)
);
}