test_Layer_EventPane.html 4.09 KB
<html>
<head>
  <script src="../lib/OpenLayers.js"></script>
  <script type="text/javascript"><!--
    var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
    var isOpera = (navigator.userAgent.indexOf("Opera") != -1);
    var layer; 

    function test_01_Layer_EventPane_constructor (t) {
        t.plan( 5 );
        
        var layer = new OpenLayers.Layer.EventPane('Test Layer');
        
        t.ok( layer instanceof OpenLayers.Layer.EventPane, "new OpenLayers.Layer.EventPane returns object" );
        t.eq( layer.CLASS_NAME, "OpenLayers.Layer.EventPane", "CLASS_NAME variable set correctly");
        t.eq( layer.name, "Test Layer", "layer.name is correct" );
        t.eq( layer.isBaseLayer, true, "EventPane layer is always base layer" );
        if (!isMozilla) {
            t.ok( true, "skipping element test outside of Mozilla");
        } else {
            t.ok( layer.pane instanceof HTMLDivElement, "layer.pane is an HTMLDivElement" );
        }
    }

    function test_02_Layer_EventPane_clone (t) {
        t.plan( 1 );
        t.ok( true, "need to actually write some tests here" );
        return;
        
        /// FIX ME FIX ME: fix this later

        var map = new OpenLayers.Map('map'); 
        var options = { chicken: 151, foo: "bar" };
        var layer = new OpenLayers.Layer('Test Layer', options);
        map.addLayer(layer);

        // randomly assigned property
        layer.chocolate = 5;

        var clone = layer.clone();

        t.ok( clone instanceof OpenLayers.Layer, "new OpenLayers.Layer returns object" );
        t.eq( clone.name, "Test Layer", "default clone.name is correct" );
        t.ok( ((clone.options["chicken"] == 151) && (clone.options["foo"] == "bar")), "clone.options correctly set" );
        t.eq(clone.chocolate, 5, "correctly copied randomly assigned property");

        layer.addOptions({chicken:152});
        t.eq(clone.options["chicken"], 151, "made a clean copy of options");        

        
        t.ok( clone.map == null, "cloned layer has map property set to null")
        
    }

    function test_10_Layer_EventPane_setMap (t) {

// MOUSEMOVE test does not seem to work... 
//         t.plan( 2 );    

        if (!isMozilla || isOpera) {
          t.plan(4);
        } else {
          t.plan(3);
        }
        var map = new OpenLayers.Map('map');
        
        layer = new OpenLayers.Layer.EventPane('Test Layer');

        //give dummy function so test wont bomb on layer.setMap()
        layer.loadMapObject = function() { };
        layer.getWarningHTML = function() { this.warning = true; return ""; };
        map.addLayer(layer);
        t.eq( parseInt(layer.pane.style.zIndex) - parseInt(layer.div.style.zIndex),
            1, "layer pane is 1 z-level above its div" );

        t.ok( layer.warning, "warning correctly registered on no mapObject load" );

        layer2 = new OpenLayers.Layer.EventPane('Test Layer');

        //give dummy function so test wont bomb on layer.setMap()
        layer2.loadMapObject = function() { this.mapObject = new Object(); };
        layer2.getWarningHTML = function() { this.warning = true; return ""; }

        map.addLayer(layer2);
        t.ok( !layer2.warning, "warning not registered on mapObject load" );

        map.events.register("mousemove", map, function () {
            t.ok(true, "got mouse move");
        });
        
        if( document.createEvent ) { // Mozilla
          var evObj = document.createEvent('MouseEvents');
          evObj.initEvent( 'mousemove', true, false );
          layer.pane.dispatchEvent(evObj);
        } else if( document.createEventObject ) { // IE
          layer.pane.fireEvent('onmousemove');
        }
    }

    function test_20_Layer_EventPane_setVisibility (t) {
        t.plan( 2 );    
        layer = new OpenLayers.Layer.EventPane('Test Layer');
        layer.setVisibility(false);
        t.eq(layer.visibility, false, "layer pane is now invisible");
        layer.setVisibility(true);
        t.eq(layer.visibility, true, "layer pane is now visible");
    }
  // -->
  </script>
</head>
<body>
  <div id="map" style="height:500px;width:500px"></div>
</body>
</html>