| // Copyright 2017 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package color |
| |
| import ( |
| "testing" |
| "testing/quick" |
| ) |
| |
| func TestSqDiff(t *testing.T) { |
| // canonical sqDiff implementation |
| orig := func(x, y uint32) uint32 { |
| var d uint32 |
| if x > y { |
| d = uint32(x - y) |
| } else { |
| d = uint32(y - x) |
| } |
| return (d * d) >> 2 |
| } |
| testCases := []uint32{ |
| 0, |
| 1, |
| 2, |
| 0x0fffd, |
| 0x0fffe, |
| 0x0ffff, |
| 0x10000, |
| 0x10001, |
| 0x10002, |
| 0xfffffffd, |
| 0xfffffffe, |
| 0xffffffff, |
| } |
| for _, x := range testCases { |
| for _, y := range testCases { |
| if got, want := sqDiff(x, y), orig(x, y); got != want { |
| t.Fatalf("sqDiff(%#x, %#x): got %d, want %d", x, y, got, want) |
| } |
| } |
| } |
| if err := quick.CheckEqual(orig, sqDiff, &quick.Config{MaxCountScale: 10}); err != nil { |
| t.Fatal(err) |
| } |
| } |