summaryrefslogtreecommitdiff
path: root/misc/openlayers/tests/Layer/Text.html
diff options
context:
space:
mode:
Diffstat (limited to 'misc/openlayers/tests/Layer/Text.html')
-rw-r--r--misc/openlayers/tests/Layer/Text.html211
1 files changed, 211 insertions, 0 deletions
diff --git a/misc/openlayers/tests/Layer/Text.html b/misc/openlayers/tests/Layer/Text.html
new file mode 100644
index 0000000..3bffe4c
--- /dev/null
+++ b/misc/openlayers/tests/Layer/Text.html
@@ -0,0 +1,211 @@
+<html>
+<head>
+ <script src="../OLLoader.js"></script>
+ <script type="text/javascript">
+ var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
+ var isMSIE = (navigator.userAgent.indexOf("MSIE") > -1);
+ var layer;
+
+ var datafile = "./data_Layer_Text_textfile.txt";
+ var datafile2 = "./data_Layer_Text_textfile_2.txt";
+ var datafile_overflow = "./data_Layer_Text_textfile_overflow.txt";
+
+ // if this test is running in IE, different rules apply
+ if (isMSIE) {
+ datafile = "." + datafile;
+ datafile2 = "." + datafile2;
+ datafile_overflow = "." + datafile_overflow;
+ }
+
+ function test_Layer_Text_constructor (t) {
+ t.plan( 5 );
+
+ layer = new OpenLayers.Layer.Text('Test Layer', { location: datafile });
+ layer.loadText();
+ t.ok( layer instanceof OpenLayers.Layer.Text, "new OpenLayers.Layer.Text returns object" );
+ t.eq( layer.location, datafile, "layer.location is correct" );
+ var markers;
+ t.delay_call( 1, function() {
+ t.eq( layer.markers.length, 2, "marker length is correct" );
+ var ll = new OpenLayers.LonLat(20, 10);
+ t.ok( layer.markers[0].lonlat.equals(ll), "first marker is correct" );
+ t.eq( layer.markers[0].icon.url, 'http://boston.openguides.org/markers/ORANGE.png', "icon" );
+ } );
+ }
+ function test_Layer_Text_draw (t) {
+// t.plan(5);
+ t.plan( 2 );
+ layer = new OpenLayers.Layer.Text('Test Layer', { location: datafile });
+ t.ok( layer instanceof OpenLayers.Layer.Text, "new OpenLayers.Layer.Text returns object" );
+ var map = new OpenLayers.Map('map');
+ var baseLayer = new OpenLayers.Layer.WMS("Test Layer",
+ "http://octo.metacarta.com/cgi-bin/mapserv?",
+ {map: "/mapdata/vmap_wms.map", layers: "basic"});
+ map.addLayer(baseLayer);
+ map.addLayer(layer);
+ t.eq( map.layers[1].name, layer.name, "Layer added to map okay" );
+ t.delay_call( 1, function() {
+ map.setCenter(new OpenLayers.LonLat(0,0),0);
+
+/*
+ if (!isMozilla)
+ t.ok( true, "skipping element test outside of Mozilla");
+ else
+ t.ok( map.layers[0].div.firstChild instanceof HTMLImageElement, "Marker added to div" )
+
+ t.eq( map.layers[0].div.firstChild.style.top, "219px", "Marker top set correctly" )
+ t.eq( map.layers[0].div.firstChild.style.left, "273px", "Marker left set correctly" )
+*/
+ });;
+ }
+
+ function test_Layer_Text_moveTo(t) {
+ t.plan(16);
+
+ temp = OpenLayers.Layer.Markers.prototype.moveTo;
+
+ g_Bounds = {};
+ g_ZoomChanged = {};
+ g_Minor = {};
+ var args = [g_Bounds, g_ZoomChanged, g_Minor];
+
+ OpenLayers.Layer.Markers.prototype.moveTo =
+ function(bounds, zoomChanged, minor) {
+ t.ok(bounds == g_Bounds, "correct bounds passed to Markers superclass");
+ t.ok(zoomChanged == g_ZoomChanged, "correct zoomChanged passed to Markers superclass");
+ t.ok(minor == g_Minor, "correct minor passed to Markers superclass");
+ }
+
+ var layer = {
+ 'loadText': function() { g_TextLoaded = true; }
+ };
+
+ //visibility true, loaded true
+ layer.visibility = true;
+ layer.loaded = true;
+ g_TextLoaded = false;
+ OpenLayers.Layer.Text.prototype.moveTo.apply(layer, args);
+ t.ok(g_TextLoaded == false, "text not loaded when visibility true, loaded true");
+
+ //visibility true, loaded false
+ layer.visibility = true;
+ layer.loaded = false;
+ g_TextLoaded = false;
+ OpenLayers.Layer.Text.prototype.moveTo.apply(layer, args);
+ t.ok(g_TextLoaded == true, "text is loaded when visibility true, loaded false");
+
+ //visibility false, loaded true
+ layer.visibility = false;
+ layer.loaded = true;
+ g_TextLoaded = false;
+ OpenLayers.Layer.Text.prototype.moveTo.apply(layer, args);
+ t.ok(g_TextLoaded == false, "text not loaded when visibility false, loaded true");
+
+ //visibility false, loaded false
+ layer.visibility = false;
+ layer.loaded = false;
+ g_TextLoaded = false;
+ OpenLayers.Layer.Text.prototype.moveTo.apply(layer, args);
+ t.ok(g_TextLoaded == false, "text not loaded when visibility false, loaded false");
+
+ OpenLayers.Layer.Markers.prototype.moveTo = temp;
+ }
+
+
+
+ function test_Layer_Text_events (t) {
+ t.plan( 5 );
+ layer = new OpenLayers.Layer.Text('Test Layer', { location: datafile2 });
+ var map = new OpenLayers.Map('map');
+ var baseLayer = new OpenLayers.Layer.WMS("Test Layer",
+ "http://octo.metacarta.com/cgi-bin/mapserv?",
+ {map: "/mapdata/vmap_wms.map", layers: "basic"});
+ map.addLayer(baseLayer);
+ map.addLayer(layer);
+ map.setCenter(new OpenLayers.LonLat(0,0),0);
+ var event = {};
+ t.delay_call( 1, function() {
+ t.ok(layer.markers[0].events, "First marker has an events object");
+ t.eq(layer.markers[0].events.listeners['click'].length, 1, "Marker events has one object");
+ layer.markers[0].events.triggerEvent('click', event);
+ t.eq(map.popups.length, 1, "Popup opened correctly");
+ layer.markers[1].events.triggerEvent('click', event);
+ t.eq(map.popups.length, 1, "1st popup gone, 2nd Popup opened correctly");
+ //Safari 3 separates style overflow into overflow-x and overflow-y
+ var prop = (OpenLayers.BROWSER_NAME == 'safari') ? 'overflowX' : 'overflow';
+ t.eq(map.popups[0].contentDiv.style[prop],"auto", "default Popup overflow correct");
+ });
+ }
+ function test_Layer_Text_overflow (t) {
+ t.plan( 4 );
+ layer = new OpenLayers.Layer.Text('Test Layer', { location: datafile_overflow });
+ var map = new OpenLayers.Map('map');
+ var baseLayer = new OpenLayers.Layer.WMS("Test Layer",
+ "http://octo.metacarta.com/cgi-bin/mapserv?",
+ {map: "/mapdata/vmap_wms.map", layers: "basic"});
+ map.addLayer(baseLayer);
+ map.addLayer(layer);
+ map.setCenter(new OpenLayers.LonLat(0,0),0);
+ var event = {};
+ t.delay_call( 1, function() {
+ layer.markers[0].events.triggerEvent('click', event);
+ t.eq(map.popups.length, 1, "Popup opened correctly");
+ //Safari 3 separates style overflow into overflow-x and overflow-y
+ var prop = (OpenLayers.BROWSER_NAME == 'safari') ? 'overflowX' : 'overflow';
+ t.eq(map.popups[0].contentDiv.style[prop],"auto", "Popup overflow read from file");
+ layer.markers[1].events.triggerEvent('click', event);
+ t.eq(map.popups.length, 1, "1st popup gone, 2nd Popup opened correctly");
+ //Safari 3 separates style overflow into overflow-x and overflow-y
+ var prop = (OpenLayers.BROWSER_NAME == 'safari') ? 'overflowX' : 'overflow';
+ t.eq(map.popups[0].contentDiv.style[prop],"hidden", "Popup overflow read from file");
+ });
+ }
+ function test_Layer_Text_events_nopopups (t) {
+ t.plan( 4 );
+ layer = new OpenLayers.Layer.Text('Test Layer', { location: datafile });
+ var map = new OpenLayers.Map('map');
+ var baseLayer = new OpenLayers.Layer.WMS("Test Layer",
+ "http://octo.metacarta.com/cgi-bin/mapserv?",
+ {map: "/mapdata/vmap_wms.map", layers: "basic"});
+ map.addLayer(baseLayer);
+ map.addLayer(layer);
+ map.setCenter(new OpenLayers.LonLat(0,0),0);
+ var event = {};
+ t.delay_call( 1, function() {
+ t.ok(layer.markers[0].events, "First marker has an events object");
+ t.eq(layer.markers[0].events.listeners['click'], undefined, "Marker events has no object");
+ layer.markers[0].events.triggerEvent('click', event);
+ t.eq(map.popups.length, 0, "no popup on first marker");
+ layer.markers[1].events.triggerEvent('click', event);
+ t.eq(map.popups.length, 0, "no popup on second marker");
+ });
+ }
+ function test_Layer_Text_loadend_Event(t) {
+ t.plan(2);
+ layer = new OpenLayers.Layer.Text('Test Layer', {location:datafile});
+ t.delay_call(2, function() {
+ layer.events.register('loadend', layer, function() {
+ t.ok(true, "Loadend event fired");
+ });
+ layer.parseData({
+ 'responseText':''
+ });
+ t.ok(true, "Parsing data didn't fail");
+ });
+ }
+
+ function test_Layer_Text_destroy (t) {
+ t.plan( 1 );
+ layer = new OpenLayers.Layer.Text('Test Layer');
+ var map = new OpenLayers.Map('map');
+ map.addLayer(layer);
+ layer.destroy();
+ t.eq( layer.map, null, "layer.map is null after destroy" );
+ }
+
+ </script>
+</head>
+<body>
+ <div id="map" style="width:500px; height:500px"></div>
+</body>
+</html>