changeset 20657:bc51aa0d604a

ntsc2rgb.m: add more tests for scaling and truncation of values outside [0 1].
author Carnë Draug <carandraug@octave.org>
date Sun, 25 Oct 2015 19:34:56 +0000
parents 175aed5acb85
children eafc22e4c857
files scripts/image/ntsc2rgb.m
diffstat 1 files changed, 34 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/image/ntsc2rgb.m	Sun Oct 25 19:18:01 2015 +0000
+++ b/scripts/image/ntsc2rgb.m	Sun Oct 25 19:34:56 2015 +0000
@@ -70,6 +70,11 @@
   rgb = colorspace_conversion_revert (rgb, cls, sz, is_im, is_nd, is_int);
 endfunction
 
+%!shared trans
+%! trans = [ 1.0,      1.0,      1.0;
+%!          0.95617, -0.27269, -1.10374;
+%!          0.62143, -0.64681,  1.70062 ];
+
 ## Test pure R, G, B colors
 %!assert (ntsc2rgb ([.299  .596  .211]), [1 0 0], 1e-5)
 %!assert (ntsc2rgb ([.587 -.274 -.523]), [0 1 0], 1e-5)
@@ -86,6 +91,35 @@
 ## test cropping of rgb output
 %!assert (ntsc2rgb ([1.5 0 0]), [1   1   1]);
 
+## Test scaling of output.  After conversion, cut of negative values
+## and scaling of all the others relative to the maximum above 1.
+%!test
+%! ntsc = [0.4229  0.0336  0.7184];
+%! rgb = ntsc * trans;    # [0.9014  -0.0509  1.6075]
+%! rgb(1) /= rgb(3); # scaled based on the maximum
+%! rgb(2) = 0; # cut to 0
+%! rgb(3) = 1; # cut to 1
+%! assert (ntsc2rgb (ntsc), rgb)
+
+## test scaling when conversion has more than one value above 1
+## (check that it does pick the maximum)
+%!test
+%! ntsc = [0.8229  0.3336  0.7184];
+%! rgb = ntsc * trans;    # [1.58831   0.26726   1.67642]
+%! rgb /= rgb(3);
+%! assert (ntsc2rgb (ntsc), rgb)
+
+## check scaling for more than 1 row
+%!test
+%! ntsc = [0.4229  0.0336  0.7184
+%!         0.8229  0.3336  0.7184];
+%! rgb = ntsc * trans; # [0.9014  -0.0509  1.6075;  1.58831  0.26726  1.67642]
+%! rgb(1,1) /= rgb(1,3);
+%! rgb(1,2) = 0;
+%! rgb(1,3) = 1;
+%! rgb(2,:) /= rgb(2,3);
+%! assert (ntsc2rgb (ntsc), rgb)
+
 ## Test input validation
 %!error ntsc2rgb ()
 %!error ntsc2rgb (1,2)