OSDN Git Service

PR c++/51714
[pf3gnuchains/gcc-fork.git] / libgo / go / image / color / ycbcr_test.go
1 // Copyright 2011 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 package color
6
7 import (
8         "testing"
9 )
10
11 func delta(x, y uint8) uint8 {
12         if x >= y {
13                 return x - y
14         }
15         return y - x
16 }
17
18 // Test that a subset of RGB space can be converted to YCbCr and back to within
19 // 1/256 tolerance.
20 func TestRoundtrip(t *testing.T) {
21         for r := 0; r < 255; r += 7 {
22                 for g := 0; g < 255; g += 5 {
23                         for b := 0; b < 255; b += 3 {
24                                 r0, g0, b0 := uint8(r), uint8(g), uint8(b)
25                                 y, cb, cr := RGBToYCbCr(r0, g0, b0)
26                                 r1, g1, b1 := YCbCrToRGB(y, cb, cr)
27                                 if delta(r0, r1) > 1 || delta(g0, g1) > 1 || delta(b0, b1) > 1 {
28                                         t.Fatalf("r0, g0, b0 = %d, %d, %d   r1, g1, b1 = %d, %d, %d", r0, g0, b0, r1, g1, b1)
29                                 }
30                         }
31                 }
32         }
33 }