libcaesium/tests/png.rs

141 lines
4.3 KiB
Rust
Raw Normal View History

2022-10-02 15:02:15 +02:00
use std::sync::Once;
2023-02-25 20:39:52 +01:00
use crate::cleanup::remove_compressed_test_file;
mod cleanup;
2021-10-23 17:18:52 +02:00
static INIT: Once = Once::new();
pub fn initialize(file: &str) {
INIT.call_once(|| {
2023-02-25 20:39:52 +01:00
remove_compressed_test_file(file);
2021-10-23 17:18:52 +02:00
});
}
#[test]
fn standard_compress_png() {
let output = "tests/samples/output/compressed.png";
initialize(output);
2022-10-02 15:02:15 +02:00
caesium::compress(
String::from("tests/samples/uncompressed_드림캐쳐.png"),
String::from(output),
2022-11-14 23:00:14 +01:00
&caesium::initialize_parameters(),
2022-10-02 15:02:15 +02:00
)
.unwrap();
2021-10-23 17:18:52 +02:00
assert!(std::path::Path::new(output).exists());
2022-10-02 15:02:15 +02:00
assert_eq!(
infer::get_from_path(output).unwrap().unwrap().mime_type(),
"image/png"
);
2022-02-12 14:10:12 +01:00
assert_eq!(image::image_dimensions(output).unwrap(), (380, 287));
2023-02-25 20:39:52 +01:00
remove_compressed_test_file(output)
2021-10-23 17:18:52 +02:00
}
#[test]
fn standard_compress_png_with_optimize_flag() {
let output = "tests/samples/output/compressed_max.png";
initialize(output);
2022-02-23 17:50:48 +01:00
let mut params = caesium::initialize_parameters();
2021-10-23 17:18:52 +02:00
params.optimize = true;
2022-10-02 15:02:15 +02:00
caesium::compress(
String::from("tests/samples/uncompressed_드림캐쳐.png"),
String::from(output),
2022-11-14 23:00:14 +01:00
&params,
2022-10-02 15:02:15 +02:00
)
.unwrap();
2021-10-23 17:18:52 +02:00
assert!(std::path::Path::new(output).exists());
2022-10-02 15:02:15 +02:00
assert_eq!(
infer::get_from_path(output).unwrap().unwrap().mime_type(),
"image/png"
);
2022-02-12 14:10:12 +01:00
assert_eq!(image::image_dimensions(output).unwrap(), (380, 287));
2023-02-25 20:39:52 +01:00
remove_compressed_test_file(output)
2021-10-23 17:18:52 +02:00
}
2022-02-23 17:50:48 +01:00
// #[test]
// fn zopfli_compress_png() {
// let output = "tests/samples/output/optimized.png";
// initialize(output);
// let mut params = caesium::initialize_parameters();
// params.png.level = 3;
// params.optimize = true;
// params.png.force_zopfli = true;
// caesium::compress(String::from("tests/samples/uncompressed_드림캐쳐.png"),
// String::from(output),
// params)
// .unwrap();
// assert!(std::path::Path::new(output).exists());
// assert_eq!(infer::get_from_path(output).unwrap().unwrap().mime_type(), "image/png");
// assert_eq!(image::image_dimensions(output).unwrap(), (380, 287));
2023-02-25 20:39:52 +01:00
// remove_compressed_test_file(output)
2022-02-23 17:50:48 +01:00
// }
2022-02-12 14:10:12 +01:00
#[test]
fn downscale_standard_compress_png() {
let output = "tests/samples/output/downscale_compressed.png";
initialize(output);
2022-02-23 17:50:48 +01:00
let mut params = caesium::initialize_parameters();
2022-02-12 14:10:12 +01:00
params.width = 150;
params.height = 150;
2022-10-02 15:02:15 +02:00
caesium::compress(
String::from("tests/samples/uncompressed_드림캐쳐.png"),
String::from(output),
2022-11-14 23:00:14 +01:00
&params,
2022-10-02 15:02:15 +02:00
)
.unwrap();
2022-02-12 14:10:12 +01:00
assert!(std::path::Path::new(output).exists());
2022-10-02 15:02:15 +02:00
assert_eq!(
infer::get_from_path(output).unwrap().unwrap().mime_type(),
"image/png"
);
2022-02-12 14:10:12 +01:00
assert_eq!(image::image_dimensions(output).unwrap(), (150, 150));
2023-02-25 20:39:52 +01:00
remove_compressed_test_file(output)
2022-02-12 14:10:12 +01:00
}
#[test]
fn downscale_standard_compress_png_with_optimize_flag() {
let output = "tests/samples/output/downscale_compressed_max.png";
initialize(output);
2022-02-23 17:50:48 +01:00
let mut params = caesium::initialize_parameters();
2022-02-12 14:10:12 +01:00
params.width = 150;
params.height = 150;
params.optimize = true;
2022-10-02 15:02:15 +02:00
caesium::compress(
String::from("tests/samples/uncompressed_드림캐쳐.png"),
String::from(output),
2022-11-14 23:00:14 +01:00
&params,
2022-10-02 15:02:15 +02:00
)
.unwrap();
2022-02-12 14:10:12 +01:00
assert!(std::path::Path::new(output).exists());
2022-10-02 15:02:15 +02:00
assert_eq!(
infer::get_from_path(output).unwrap().unwrap().mime_type(),
"image/png"
);
2022-02-12 14:10:12 +01:00
assert_eq!(image::image_dimensions(output).unwrap(), (150, 150));
2023-02-25 20:39:52 +01:00
remove_compressed_test_file(output)
2022-02-12 14:10:12 +01:00
}
#[test]
fn downscale_zopfli_compress_png() {
let output = "tests/samples/output/downscale_optimized.png";
initialize(output);
2022-02-23 17:50:48 +01:00
let mut params = caesium::initialize_parameters();
2022-02-12 14:10:12 +01:00
params.width = 150;
params.height = 150;
2022-07-29 12:19:00 +02:00
params.png.quality = 80;
2022-02-12 14:10:12 +01:00
params.optimize = true;
params.png.force_zopfli = true;
2022-10-02 15:02:15 +02:00
caesium::compress(
String::from("tests/samples/uncompressed_드림캐쳐.png"),
String::from(output),
2022-11-14 23:00:14 +01:00
&params,
2022-10-02 15:02:15 +02:00
)
.unwrap();
2022-02-12 14:10:12 +01:00
assert!(std::path::Path::new(output).exists());
2022-10-02 15:02:15 +02:00
assert_eq!(
infer::get_from_path(output).unwrap().unwrap().mime_type(),
"image/png"
);
2022-02-12 14:10:12 +01:00
assert_eq!(image::image_dimensions(output).unwrap(), (150, 150));
2023-02-25 20:39:52 +01:00
remove_compressed_test_file(output)
2021-10-23 17:18:52 +02:00
}