blob: d5c0f9cf90a34e409e5c877a0718567e22cdc047 [file] [log] [blame]
cristy19a2b0d2012-08-21 11:46:58 +00001#!/bin/sh
2#
Cristyf6ff9ea2016-12-05 09:53:35 -05003# Copyright 1999-2017 ImageMagick Studio LLC, a non-profit organization
cristy19a2b0d2012-08-21 11:46:58 +00004# dedicated to making software imaging solutions freely available.
5#
6# You may not use this file except in compliance with the License. You may
7# obtain a copy of the License at
8#
9# http://www.imagemagick.org/script/license.php
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16#
cristy3a350cf2012-12-29 22:54:19 +000017. ./common.shi
cristy19a2b0d2012-08-21 11:46:58 +000018. ${srcdir}/tests/common.shi
cristy19a2b0d2012-08-21 11:46:58 +000019
20depth=`eval ${MAGICK} xc:none -format '%[fx:QuantumRange]' info:-`
cristya3044412013-03-02 22:02:49 +000021if [ "X$depth" = "X255" ]; then
cristy61e6e542012-08-22 17:07:58 +000022 echo "1..1"
23 echo "ok"
cristy19a2b0d2012-08-21 11:46:58 +000024 exit 0
25fi
cristy61e6e542012-08-22 17:07:58 +000026echo "1..19"
cristy19a2b0d2012-08-21 11:46:58 +000027
28# how to generate a one pixel (average rose) color and output its values
29in="rose: -scale 1x1" # a one pixel image of the average color.
30out="-format '%[fx:int(255*r+.5)],%[fx:int(255*g+.5)],%[fx:int(255*b+.5)]' info:-"
31
32# ----------------
33
34# Colors to compare results to.
35error=false
36average=`eval ${MAGICK} "$in" -noop "$out"`
37too_dark=`eval ${MAGICK} "$in" -colorspace RGB "$out"`
38too_light=`eval ${MAGICK} "$in" -set colorspace RGB -colorspace sRGB "$out"`
39format='%-30s%s\n' # results formating
40format2='%-30s%-14s%s\n'
41
42printf "$format2" "Average \"rose:\" Color" "$average" "sRGB(rose)"
43printf "$format2" "Too Dark Color" "$too_dark" "sRGB(rose)->RGB result"
44printf "$format2" "Too Light Color" "$too_light" "RGB(rose)->sRGB result"
45echo ''
46
47#
48# Sanity checks
49#
50# NOTE: as a extra validation on sanity checks below...
51# eval ${MAGICK} "$in" -gamma .454545 "$out"
52# produces a value of 74,25,20 which is close to 73,26,21 below.
53# eval ${MAGICK} "$in" -gamma 2.2 "$out"
54# produces a value of 198,158,151 whcih is close to 199,160,152 below.
55#
56# Actual values used below come from IM v6.5.4-7 colorspace conversions
57#
58error=false
59if [ "X$average" != "X146,89,80" ]; then
60 echo "Sanity Failure: Average expected to be 145,89,80 - ABORTING"
61 error=true
62fi
63if [ "X$too_dark" != "X73,26,21" ]; then
64 echo "Sanity Failure: Too Dark expected to be 73,26,21 - ABORTING"
65 error=true
66fi
67if [ "X$too_light" != "X199,160,152" ]; then
68 echo "Sanity Failure: Too Light expected to be 199,160,152 - ABORTING"
69 error=true
70fi
71$error && exit 1
72
73test_color() {
74 test="sRGB"
75 cs='';
76 for i in "$@"; do
77 test="${test}->$i" # format of the test being performed
78 cs="$cs -colorspace $i" # colorspace operations to perform test
79 done
80 color=`eval ${MAGICK} "$in" $cs "$out"`
81
82 if [ "X$color" = "X$average" ]; then
cristy8391c6a2012-08-21 15:25:07 +000083 return 0
cristy19a2b0d2012-08-21 11:46:58 +000084 fi
85 # Its failed the round-trip test, now report how it failed!
86 error=true
87 if [ "X$color" = "X$too_light" ]; then
cristy8391c6a2012-08-21 15:25:07 +000088 return 1
cristy19a2b0d2012-08-21 11:46:58 +000089 fi
90 if [ "X$color" = "X$too_dark" ]; then
cristy8391c6a2012-08-21 15:25:07 +000091 return 1
cristy19a2b0d2012-08-21 11:46:58 +000092 fi
cristy8391c6a2012-08-21 15:25:07 +000093 return 1
cristy19a2b0d2012-08-21 11:46:58 +000094}
95
96# ----------------
97
cristy8391c6a2012-08-21 15:25:07 +000098test_color RGB sRGB && echo "ok" || echo "not ok"
cristy19a2b0d2012-08-21 11:46:58 +000099
cristy8391c6a2012-08-21 15:25:07 +0000100test_color XYZ sRGB && echo "ok" || echo "not ok"
101test_color XYZ RGB sRGB && echo "ok" || echo "not ok"
102test_color RGB XYZ sRGB && echo "ok" || echo "not ok"
cristy19a2b0d2012-08-21 11:46:58 +0000103
cristy8391c6a2012-08-21 15:25:07 +0000104test_color LAB sRGB && echo "ok" || echo "not ok"
105test_color XYZ LAB sRGB && echo "ok" || echo "not ok"
106test_color LAB XYZ sRGB && echo "ok" || echo "not ok"
107test_color RGB LAB sRGB && echo "ok" || echo "not ok"
108test_color LAB RGB sRGB && echo "ok" || echo "not ok"
cristy19a2b0d2012-08-21 11:46:58 +0000109
cristy8391c6a2012-08-21 15:25:07 +0000110test_color CMY sRGB && echo "ok" || echo "not ok"
111test_color CMYK sRGB && echo "ok" || echo "not ok"
112test_color HSL sRGB && echo "ok" || echo "not ok"
113test_color HSB sRGB && echo "ok" || echo "not ok"
114test_color HWB sRGB && echo "ok" || echo "not ok"
115test_color Log sRGB && echo "ok" || echo "not ok"
116test_color YIQ sRGB && echo "ok" || echo "not ok"
117test_color YUV sRGB && echo "ok" || echo "not ok"
118test_color YCbCr sRGB && echo "ok" || echo "not ok"
119test_color OHTA sRGB && echo "ok" || echo "not ok"
cristy19a2b0d2012-08-21 11:46:58 +0000120: