diff --git a/colorm_test.go b/colorm_test.go index 0470f5736..ac1612271 100644 --- a/colorm_test.go +++ b/colorm_test.go @@ -60,3 +60,83 @@ func TestColorAssign(t *testing.T) { t.Errorf("m2.Element(%d, %d) = %f, want %f", 0, 0, got, want) } } + +func TestColorTranslate(t *testing.T) { + expected := [4][5]float64{ + {1, 0, 0, 0, 0.5}, + {0, 1, 0, 0, 1.5}, + {0, 0, 1, 0, 2.5}, + {0, 0, 0, 1, 3.5}, + } + m := ColorM{} + m.Translate(0.5, 1.5, 2.5, 3.5) + for i := 0; i < 4; i++ { + for j := 0; j < 5; j++ { + got := m.Element(i, j) + want := expected[i][j] + if want != got { + t.Errorf("m.Element(%d, %d) = %f, want %f", i, j, got, want) + } + } + } +} + +func TestColorScale(t *testing.T) { + expected := [4][5]float64{ + {0.5, 0, 0, 0, 0}, + {0, 1.5, 0, 0, 0}, + {0, 0, 2.5, 0, 0}, + {0, 0, 0, 3.5, 0}, + } + m := ColorM{} + m.Scale(0.5, 1.5, 2.5, 3.5) + for i := 0; i < 4; i++ { + for j := 0; j < 5; j++ { + got := m.Element(i, j) + want := expected[i][j] + if want != got { + t.Errorf("m.Element(%d, %d) = %f, want %f", i, j, got, want) + } + } + } +} + +func TestColorTranslateAndScale(t *testing.T) { + expected := [4][5]float64{ + {1, 0, 0, 0, 0}, + {0, 1, 0, 0, 0}, + {0, 0, 1, 0, 0}, + {0, 0, 0, 0.5, 0.5}, + } + m := ColorM{} + m.Translate(0, 0, 0, 1) + m.Scale(1, 1, 1, 0.5) + for i := 0; i < 4; i++ { + for j := 0; j < 5; j++ { + got := m.Element(i, j) + want := expected[i][j] + if want != got { + t.Errorf("m.Element(%d, %d) = %f, want %f", i, j, got, want) + } + } + } +} + +func TestColorMonochrome(t *testing.T) { + expected := [4][5]float64{ + {0.2990, 0.5870, 0.1140, 0, 0}, + {0.2990, 0.5870, 0.1140, 0, 0}, + {0.2990, 0.5870, 0.1140, 0, 0}, + {0, 0, 0, 1, 0}, + } + m := Monochrome() + for i := 0; i < 4; i++ { + for j := 0; j < 5; j++ { + got := m.Element(i, j) + want := expected[i][j] + if want != got { + t.Errorf("m.Element(%d, %d) = %f, want %f", i, j, got, want) + } + } + } +}