use super::cubic::*;
use super::linear::*;
#[test]
fn test_cubic() {
assert_eq!(cubic(255, 0, 0, 255), 0);
assert_eq!(cubic(128, 0, 84, 32), 37);
assert_eq!(cubic(250, 10, 12, 243), 10);
}
#[test]
fn test_lift_cubic() {
let mut image = vec![
1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2,
4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5,
7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7,
];
let expected = vec![
1, 0, 0, 0, 1, 0, 1, 0, 6, -9, 0, 0, 0, 0, 0, -1, 1, 8, -2, 5, 0, 0, 0, 0, 2, 1, 7, -2, -2,
2, 0, 0, 0, -1, 1, 8, -3, 3, 1, 0, 4, 0, 1, 1, 2, -2, -3, 0, -5, 1, 0, 0, 1, 8, -3, 3, 1,
0, 0, 0, 2, 0, 4, -1, -6, 1, 7, 0, 5, 1, 1, 6, -7, 6, 2, -1, 1, 0, 1, 0,
];
{
let mut image: Vec<_> = image.chunks_mut(10).collect();
lift_cubic(&mut image);
}
assert_eq!(image, expected);
}
#[test]
fn test_unlift_cubic() {
let mut image = vec![
1, 0, 0, 0, 1, 0, 1, 0, 6, -9, 0, 0, 0, 0, 0, -1, 1, 8, -2, 5, 0, 0, 0, 0, 2, 1, 7, -2, -2,
2, 0, 0, 0, -1, 1, 8, -3, 3, 1, 0, 4, 0, 1, 1, 2, -2, -3, 0, -5, 1, 0, 0, 1, 8, -3, 3, 1,
0, 0, 0, 2, 0, 4, -1, -6, 1, 7, 0, 5, 1, 1, 6, -7, 6, 2, -1, 1, 0, 1, 0,
];
let expected = vec![
1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2,
4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5,
7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7,
];
{
let mut image: Vec<_> = image.chunks_mut(10).collect();
unlift_cubic(&mut image);
}
assert_eq!(image, expected);
}
#[test]
fn test_linear_lift() {
let mut image = vec![
1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2,
4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5,
7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7,
];
let expected = vec![
1, 0, 0, 0, 1, 0, 1, 0, 6, -9, 0, 0, 0, 0, 0, 0, 2, 7, -2, 5, 0, 0, 0, 0, 2, 1, 7, -3, -2,
2, 0, 0, 0, 0, 2, 7, -3, 2, 1, 0, 4, 0, 1, 1, 2, -3, -2, 0, -5, 1, 0, 0, 2, 7, -3, 2, 1, 0,
0, 0, 2, 1, 3, -2, -6, 0, 6, 0, 4, 1, 1, 5, -7, 5, 2, 0, 1, 0, 1, 0,
];
{
let mut image: Vec<_> = image.chunks_mut(10).collect();
lift_linear(&mut image);
}
assert_eq!(image, expected);
}
#[test]
fn test_linear_unlift() {
let mut image = vec![
1, 0, 0, 0, 1, 0, 1, 0, 6, -9, 0, 0, 0, 0, 0, 0, 2, 7, -2, 5, 0, 0, 0, 0, 2, 1, 7, -3, -2,
2, 0, 0, 0, 0, 2, 7, -3, 2, 1, 0, 4, 0, 1, 1, 2, -3, -2, 0, -5, 1, 0, 0, 2, 7, -3, 2, 1, 0,
0, 0, 2, 1, 3, -2, -6, 0, 6, 0, 4, 1, 1, 5, -7, 5, 2, 0, 1, 0, 1, 0,
];
let expected = vec![
1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2,
4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5,
7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7,
];
{
let mut image: Vec<_> = image.chunks_mut(10).collect();
unlift_linear(&mut image);
}
assert_eq!(image, expected);
}