utils_test.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package imaging
  2. import (
  3. "image"
  4. "runtime"
  5. "testing"
  6. )
  7. var (
  8. testdataBranchesJPG = mustOpen("testdata/branches.jpg")
  9. testdataBranchesPNG = mustOpen("testdata/branches.png")
  10. testdataFlowersPNG = mustOpen("testdata/flowers.png")
  11. testdataFlowersSmallPNG = mustOpen("testdata/flowers_small.png")
  12. )
  13. func mustOpen(filename string) image.Image {
  14. img, err := Open(filename)
  15. if err != nil {
  16. panic(err)
  17. }
  18. return img
  19. }
  20. func testParallelN(n, procs int) bool {
  21. data := make([]bool, n)
  22. before := runtime.GOMAXPROCS(0)
  23. runtime.GOMAXPROCS(procs)
  24. parallel(n, func(start, end int) {
  25. for i := start; i < end; i++ {
  26. data[i] = true
  27. }
  28. })
  29. runtime.GOMAXPROCS(before)
  30. for i := 0; i < n; i++ {
  31. if !data[i] {
  32. return false
  33. }
  34. }
  35. return true
  36. }
  37. func TestParallel(t *testing.T) {
  38. for _, n := range []int{0, 1, 10, 100, 1000} {
  39. for _, p := range []int{1, 2, 4, 8, 16, 100} {
  40. if !testParallelN(n, p) {
  41. t.Errorf("test [parallel %d %d] failed", n, p)
  42. }
  43. }
  44. }
  45. }
  46. func TestClamp(t *testing.T) {
  47. td := []struct {
  48. f float64
  49. u uint8
  50. }{
  51. {0, 0},
  52. {255, 255},
  53. {128, 128},
  54. {0.49, 0},
  55. {0.50, 1},
  56. {254.9, 255},
  57. {254.0, 254},
  58. {256, 255},
  59. {2500, 255},
  60. {-10, 0},
  61. {127.6, 128},
  62. }
  63. for _, d := range td {
  64. if clamp(d.f) != d.u {
  65. t.Errorf("test [clamp %v %v] failed: %v", d.f, d.u, clamp(d.f))
  66. }
  67. }
  68. }