From 2d70ee32fc9bad8295f7a1fff368121fc0464410 Mon Sep 17 00:00:00 2001
From: nein09 <nein09@nein09.com>
Date: Mon, 27 Oct 2014 17:58:59 -0700
Subject: [PATCH] Remove randomness from test cases.

---
 test/viewport.js | 188 ++++++++++++++++++++++++++++-------------------
 1 file changed, 112 insertions(+), 76 deletions(-)

diff --git a/test/viewport.js b/test/viewport.js
index c017f4d3..e7cadd33 100644
--- a/test/viewport.js
+++ b/test/viewport.js
@@ -23,15 +23,43 @@
             viewer = null;
         }
     });
-    // helper
-    var getRandom = function(min, max){
-        return min + Math.floor(Math.random() * (max - min + 1));
-    };
+
+    // helpers and constants
 
     var ZOOM_FACTOR = 2; // the image will be twice as large as the viewer.
     var VIEWER_SIZE = 500; // We set up the viewer to be 500 px x 500 px.
     var VIEWER_PADDING = new OpenSeadragon.Point(20, 20);
 
+    var testZoomLevels = [-1, 0, 0.1, 0.5, 4, 10];
+
+    var testPoints = [
+        new OpenSeadragon.Point(0, 0),
+        new OpenSeadragon.Point(0.001, 0.001),
+        new OpenSeadragon.Point(0.25, 0.5),
+        new OpenSeadragon.Point(0.999, 0.999),
+        new OpenSeadragon.Point(1, 1)
+    ];
+
+    var testRects = [
+        new OpenSeadragon.Rect(0, 0, 0, 0),
+        new OpenSeadragon.Rect(0.001, 0.005, 0.001, 0.003),
+        new OpenSeadragon.Rect(0.25, 0.25, 0.25, 0.25),
+        new OpenSeadragon.Rect(0.999, 0.999, 0.999, 0.999),
+        new OpenSeadragon.Rect(1, 1, 1, 1)
+    ];
+
+    // If this is something we might want to add to the Rect class, I can do that.
+    // But I assumed that since it isn't there already, that's not functionality
+    // that we want to make broadly available.
+    OpenSeadragon.Rect.prototype.times = function( factor ) {
+        return new OpenSeadragon.Rect(
+            this.x * factor,
+            this.y * factor,
+            this.width * factor,
+            this.height * factor
+        );
+    }
+
     // ----------
 /*
     asyncTest('template', function() {
@@ -58,20 +86,18 @@
             var viewport = viewer.viewport;
             viewport.zoomTo(ZOOM_FACTOR, null, true);
 
-            var orig = new OpenSeadragon.Rect(
-                getRandom(0, 1000),
-                getRandom(0, 1000),
-                getRandom(0, 1000),
-                getRandom(0, 1000)
-            );
-            var expected = new OpenSeadragon.Rect(
+            var orig, expected, actual;
+            for (var i = 0; i < testRects.length; i++){
+                orig = testRects[i].times(1000);
+                expected = new OpenSeadragon.Rect(
                 orig.x / 1000,
                 orig.y / 1000,
                 orig.width / 1000,
                 orig.height / 1000
-            );
-            var actual = viewport.imageToViewportRectangle(orig);
-            propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+                );
+                actual = viewport.imageToViewportRectangle(orig);
+                propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+            }
 
             start();
         };
@@ -85,20 +111,18 @@
             var viewport = viewer.viewport;
             viewport.zoomTo(ZOOM_FACTOR, null, true);
 
-            var orig = new OpenSeadragon.Rect(
-                getRandom(0, 500),
-                getRandom(0, 500),
-                getRandom(0, 500),
-                getRandom(0, 500)
-            );
-            var expected = new OpenSeadragon.Rect(
-                orig.x * 1000,
-                orig.y * 1000,
-                orig.width * 1000,
-                orig.height * 1000
-            );
-            var actual = viewport.viewportToImageRectangle(orig);
-            propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+            var orig, expected, actual;
+            for (var i = 0; i < testRects.length; i++){
+                orig = testRects[i].times(500);
+                expected = new OpenSeadragon.Rect(
+                    orig.x * 1000,
+                    orig.y * 1000,
+                    orig.width * 1000,
+                    orig.height * 1000
+                );
+                actual = viewport.viewportToImageRectangle(orig);
+                propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+            }
 
             start();
         };
@@ -112,12 +136,13 @@
             var viewport = viewer.viewport;
             viewport.zoomTo(ZOOM_FACTOR, null, true);
 
-            var orig = new OpenSeadragon.Point(
-                    getRandom(0, 500), getRandom(0, 500)
-                );
-            var expected = orig.times(ZOOM_FACTOR);
-            var actual = viewport.viewerElementToImageCoordinates(orig);
-            propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+            var orig, expected, actual;
+            for (var i = 0; i < testPoints.length; i++){
+                orig = testPoints[i].times(500);
+                expected = orig.times(ZOOM_FACTOR);
+                actual = viewport.viewerElementToImageCoordinates(orig);
+                propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+            }
 
             start();
         };
@@ -131,12 +156,13 @@
             var viewport = viewer.viewport;
             viewport.zoomTo(ZOOM_FACTOR, null, true);
 
-            var orig = new OpenSeadragon.Point(
-                    getRandom(0, 1000), getRandom(0, 1000)
-                );
-            var expected = orig.divide(ZOOM_FACTOR);
-            var actual = viewport.imageToViewerElementCoordinates(orig);
-            propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+            var orig, expected, actual;
+            for (var i = 0; i < testPoints.length; i++){
+                orig = testPoints[i].times(1000);
+                expected = orig.divide(ZOOM_FACTOR);
+                actual = viewport.imageToViewerElementCoordinates(orig);
+                propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+            }
 
             start();
         };
@@ -150,12 +176,13 @@
             var viewport = viewer.viewport;
             viewport.zoomTo(ZOOM_FACTOR, null, true);
 
-            var orig = new OpenSeadragon.Point(
-                    getRandom(100, 3000), getRandom(100, 3000)
-                );
-            var expected = orig.divide(VIEWER_SIZE).plus(VIEWER_PADDING);
-            var actual = viewport.windowToViewportCoordinates(orig);
-            propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+            var orig, expected, actual;
+            for (var i = 0; i < testPoints.length; i++){
+                orig = testPoints[i].times(3000);
+                expected = orig.divide(VIEWER_SIZE).plus(VIEWER_PADDING);
+                actual = viewport.windowToViewportCoordinates(orig);
+                propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+            }
 
             start();
         };
@@ -169,14 +196,15 @@
             var viewport = viewer.viewport;
             viewport.zoomTo(ZOOM_FACTOR, null, true);
 
-            // test image is 1000 x 1000
-            var orig = new OpenSeadragon.Point(
-                    getRandom(0, 1000), getRandom(0, 1000)
-                );
-            var position = viewer.element.getBoundingClientRect();
-            var expected = orig.divide(ZOOM_FACTOR).plus( new OpenSeadragon.Point(position.top, position.left) );
-            var actual = viewport.imageToWindowCoordinates(orig);
-            propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+            var orig, expected, actual;
+            for (var i = 0; i < testPoints.length; i++){
+                // Test image is 1000 x 1000
+                orig = testPoints[i].times(1000);
+                position = viewer.element.getBoundingClientRect();
+                expected = orig.divide(ZOOM_FACTOR).plus( new OpenSeadragon.Point(position.top, position.left) );
+                actual = viewport.imageToWindowCoordinates(orig);
+                propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+            }
 
             start();
         };
@@ -190,13 +218,13 @@
             var viewport = viewer.viewport;
             viewport.zoomTo(ZOOM_FACTOR, null, true);
 
-            var orig = new OpenSeadragon.Point(
-                    getRandom(100, 3000), getRandom(100, 3000)
-                );
-
-            var expected = orig.divide(VIEWER_SIZE).plus(VIEWER_PADDING);
-            var actual = viewport.windowToViewportCoordinates(orig);
-            propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+            var orig, expected, actual;
+            for (var i = 0; i < testPoints.length; i++){
+                orig = testPoints[i].times(3000);
+                expected = orig.divide(VIEWER_SIZE).plus(VIEWER_PADDING);
+                actual = viewport.windowToViewportCoordinates(orig);
+                propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+            }
 
             start();
         };
@@ -210,13 +238,14 @@
             var viewport = viewer.viewport;
             viewport.zoomTo(ZOOM_FACTOR, null, true);
 
-            var orig = new OpenSeadragon.Point(
-                    getRandom(0, 1000), getRandom(0, 1000)
-                );
-
-            var expected = orig.minus(VIEWER_PADDING).times(VIEWER_SIZE);
-            var actual = viewport.viewportToWindowCoordinates(orig);
-            propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+            var orig, expected, actual;
+            for (var i = 0; i < testPoints.length; i++){
+                // Test image is 1000 x 1000
+                orig = testPoints[i].times(1000);
+                expected = orig.minus(VIEWER_PADDING).times(VIEWER_SIZE);
+                actual = viewport.viewportToWindowCoordinates(orig);
+                propEqual(actual, expected, "Coordinates converted correctly for " + orig);
+            }
 
             start();
         };
@@ -230,10 +259,13 @@
             var viewport = viewer.viewport;
             viewport.zoomTo(ZOOM_FACTOR, null, true);
 
-            var orig = getRandom(0, 4);
-            var expected = orig / ZOOM_FACTOR;
-            var actual = viewport.viewportToImageZoom(orig);
-            equal(expected, actual, "Coordinates converted correctly for " + orig);
+            var orig, expected, actual;
+            for (var i = 0; i < testPoints.length; i++){
+                orig = testZoomLevels[i];
+                expected = orig / ZOOM_FACTOR;
+                actual = viewport.viewportToImageZoom(orig);
+                equal(expected, actual, "Coordinates converted correctly for " + orig);
+            }
             start();
         };
 
@@ -247,10 +279,14 @@
             var viewport = viewer.viewport;
             viewport.zoomTo(ZOOM_FACTOR, null, true);
 
-            var orig = getRandom(0, 4);
-            var expected = orig * ZOOM_FACTOR;
-            var actual = viewport.imageToViewportZoom(orig);
-            equal(expected, actual, "Coordinates converted correctly for " + orig);
+
+            var orig, expected, actual;
+            for (var i = 0; i < testPoints.length; i++){
+                orig = testZoomLevels[i];
+                expected = orig * ZOOM_FACTOR;
+                actual = viewport.imageToViewportZoom(orig);
+                equal(expected, actual, "Coordinates converted correctly for " + orig);
+            }
             start();
         };