diff --git a/maxint.go b/maxint.go new file mode 100644 index 0000000..c9fddbd --- /dev/null +++ b/maxint.go @@ -0,0 +1,3 @@ +package imgrow + +const intMax = int(^uint(0) >> 1) diff --git a/minint.go b/minint.go new file mode 100644 index 0000000..eac762a --- /dev/null +++ b/minint.go @@ -0,0 +1,3 @@ +package imgrow + +const intMin = -intMax - 1 diff --git a/scalexy.go b/scalexy.go new file mode 100644 index 0000000..b048cec --- /dev/null +++ b/scalexy.go @@ -0,0 +1,8 @@ +package imgrow + +func scaleXY(scalar int, x int, y int) (int, int) { + x2 := x * scalar + y2 := y * scalar + + return x2, y2 +} diff --git a/scalexy_test.go b/scalexy_test.go new file mode 100644 index 0000000..e413f68 --- /dev/null +++ b/scalexy_test.go @@ -0,0 +1,86 @@ +package imgrow + +import ( + "testing" +) + +func TestScaleXY(t *testing.T) { + + tests := []struct{ + Scalar int + X int + Y int + ExpectedX int + ExpectedY int + }{ + { + Scalar: -2, + X: 5, + Y: 7, + ExpectedX: -10, + ExpectedY: -14, + }, + { + Scalar: -1, + X: 5, + Y: 7, + ExpectedX: -5, + ExpectedY: -7, + }, + { + Scalar: 0, + X: 5, + Y: 7, + ExpectedX: 0, + ExpectedY: 0, + }, + { + Scalar: 1, + X: 5, + Y: 7, + ExpectedX: 5, + ExpectedY: 7, + }, + { + Scalar: 2, + X: 5, + Y: 7, + ExpectedX: 10, + ExpectedY: 14, + }, + { + Scalar: 3, + X: 5, + Y: 7, + ExpectedX: 15, + ExpectedY: 21, + }, + + + + + { + Scalar: 100, + X: -11, + Y: 13, + ExpectedX: -1100, + ExpectedY: 1300, + }, + } + + for testNumber, test := range tests { + + actualX, actualY := scaleXY(test.Scalar, test.X, test.Y) + expectedX, expectedY := test.ExpectedX, test.ExpectedY + + if expectedX != actualX || expectedY != actualY { + t.Errorf("For test #%d, the actual value is not what was expected.", testNumber) + t.Logf("EXPECTED (X,Y) = (%d, %d)", expectedX, expectedY) + t.Logf("ACTUAL (X,Y) = (%d, %d)", actualX, actualY) + t.Logf("SCALAR = %d", test.Scalar) + t.Logf("(X,Y) = (%d, %d)", test.X, test.Y) + continue + } + + } +}