@@ -1001,6 +1001,62 @@ mod tests {
10011001 use super :: * ;
10021002 use image:: Luma ;
10031003
1004+ #[ test]
1005+ fn projection_and_then_applies_projections_in_order ( ) {
1006+ let translation = Projection :: translate ( 2.0 , 3.0 ) ;
1007+ let scaling = Projection :: scale ( 2.0 , 4.0 ) ;
1008+ let point = ( 1.0 , 2.0 ) ;
1009+ let expected = ( 6.0 , 20.0 ) ;
1010+
1011+ let projection = translation. and_then ( scaling) ;
1012+
1013+ assert_eq ! ( projection * point, expected) ;
1014+ }
1015+
1016+ #[ test]
1017+ fn warp_into_writes_transformed_pixels_to_output ( ) {
1018+ let image = gray_image ! (
1019+ 00 , 01 , 02 ;
1020+ 10 , 11 , 12 ) ;
1021+ let border_value = 99 ;
1022+ let expected = gray_image ! (
1023+ 99 , 00 , 01 ;
1024+ 99 , 10 , 11 ) ;
1025+ let projection = Projection :: translate ( 1.0 , 0.0 ) ;
1026+ let mut output = image. clone ( ) ;
1027+
1028+ warp_into (
1029+ & image,
1030+ projection,
1031+ Interpolation :: Nearest ,
1032+ Border :: Constant ( Luma ( [ border_value] ) ) ,
1033+ & mut output,
1034+ ) ;
1035+
1036+ assert_pixels_eq ! ( output, expected) ;
1037+ }
1038+
1039+ #[ test]
1040+ fn warp_with_uses_mapping_to_find_source_pixels ( ) {
1041+ let image = gray_image ! (
1042+ 00 , 01 , 02 ;
1043+ 10 , 11 , 12 ) ;
1044+ let border_value = 99 ;
1045+ let expected = gray_image ! (
1046+ 01 , 02 , 99 ;
1047+ 11 , 12 , 99 ) ;
1048+ let horizontal_offset = 1.0 ;
1049+
1050+ let warped = warp_with (
1051+ & image,
1052+ |x, y| ( x + horizontal_offset, y) ,
1053+ Interpolation :: Nearest ,
1054+ Border :: Constant ( Luma ( [ border_value] ) ) ,
1055+ ) ;
1056+
1057+ assert_pixels_eq ! ( warped, expected) ;
1058+ }
1059+
10041060 #[ test]
10051061 fn test_rotate_nearest_zero_radians ( ) {
10061062 let image = gray_image ! (
0 commit comments