OpenLayers OpenLayers

Changeset 5854

Show
Ignore:
Timestamp:
01/23/08 15:29:46 (10 months ago)
Author:
pagameba
Message:

Add clone methods to Tile and Tile.Image, and add associated tests. r=crschmidt (closes #1296)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/openlayers/lib/OpenLayers/Tile.js

    r5614 r5854  
    119119        this.events.destroy(); 
    120120        this.events = null; 
     121    }, 
     122     
     123    /** 
     124     * Method: clone 
     125     * 
     126     * Parameters: 
     127     * obj - {<OpenLayers.Tile>} The tile to be cloned 
     128     * 
     129     * Returns: 
     130     * {<OpenLayers.Tile>} An exact clone of this <OpenLayers.Tile> 
     131     */ 
     132    clone: function (obj) { 
     133        if (obj == null) { 
     134            obj = new OpenLayers.Tile(this.layer,  
     135                                      this.position,  
     136                                      this.bounds,  
     137                                      this.url,  
     138                                      this.size); 
     139        }  
     140         
     141        // catch any randomly tagged-on properties 
     142        OpenLayers.Util.applyDefaults(obj, this); 
     143         
     144        return obj; 
    121145    }, 
    122146 
  • trunk/openlayers/lib/OpenLayers/Tile/Image.js

    r5696 r5854  
    9292    }, 
    9393 
     94    /** 
     95     * Method: clone 
     96     * 
     97     * Parameters: 
     98     * obj - {<OpenLayers.Tile.Image>} The tile to be cloned 
     99     * 
     100     * Returns: 
     101     * {<OpenLayers.Tile.Image>} An exact clone of this <OpenLayers.Tile.Image> 
     102     */ 
     103    clone: function (obj) { 
     104        if (obj == null) { 
     105            obj = new OpenLayers.Tile.Image(this.layer,  
     106                                            this.position,  
     107                                            this.bounds,  
     108                                            this.url,  
     109                                            this.size);         
     110        }  
     111         
     112        //pick up properties from superclass 
     113        obj = OpenLayers.Tile.prototype.clone.apply(this, [obj]); 
     114         
     115        //dont want to directly copy the image div 
     116        obj.imgDiv = null; 
     117             
     118         
     119        return obj; 
     120    }, 
     121     
    94122    /** 
    95123     * Method: draw 
  • trunk/openlayers/tests/Tile/test_Image.html

    r4181 r5854  
    2525        t.ok( tile.size.equals(size), "tile.size is set correctly"); 
    2626    } 
    27     function test_02_Tile_Image_draw (t) { 
     27     
     28    function test_02_Tile_Image_clone (t) { 
     29        t.plan( 9 ); 
     30         
     31        var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",  
     32            "http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'});  
     33 
     34        var position = new OpenLayers.Pixel(20,30); 
     35        var bounds = new OpenLayers.Bounds(1,2,3,4); 
     36        var url = "http://www.openlayers.org/dev/tests/tileimage"; 
     37        var size = new OpenLayers.Size(5,6); 
     38        tile = new OpenLayers.Tile.Image(layer, position, bounds, url, size); 
     39        tile.imgDiv = {}; 
     40        var clone = tile.clone(); 
     41         
     42        t.ok( clone instanceof OpenLayers.Tile.Image, "OpenLayers.Tile.clone returns Tile.Image object" ); 
     43        t.ok( clone.layer == layer, "clone.layer is set correctly"); 
     44        t.ok( clone.position.equals(position), "clone.position is set correctly"); 
     45        t.ok( clone.bounds.equals(bounds), "clone.bounds is set correctly"); 
     46        t.eq( clone.url, url, "clone.url is set correctly"); 
     47        t.ok( clone.size.equals(size), "clone.size is set correctly"); 
     48        t.ok( clone.frame, "clone has a frame"); 
     49        t.ok( clone.frame != tile.frame, "clone's frame is a new one"); 
     50        t.ok( clone.imgDiv == null, "clone's imgDiv was not copied"); 
     51    } 
     52     
     53    function test_03_Tile_Image_draw (t) { 
    2854        t.plan( 7 ); 
    2955 
     
    79105         
    80106    } 
    81     function test_03_Tile_Image_OutsideMaxExtent(t) { 
     107    function test_04_Tile_Image_OutsideMaxExtent(t) { 
    82108        t.plan( 11 ); 
    83109        var position = new OpenLayers.Pixel(20,30); 
     
    161187             "Image covering more than all of extent loads"); 
    162188    }  
    163     function test_04_Tile_Image_Display_After_Move(t) { 
     189    function test_05_Tile_Image_Display_After_Move(t) { 
    164190        t.plan(2); 
    165191        var position = new OpenLayers.Pixel(20,30); 
     
    186212    } 
    187213 
    188     function test_05_Tile_Image_gutters(t) { 
     214    function test_06_Tile_Image_gutters(t) { 
    189215        t.plan(5); 
    190216         
  • trunk/openlayers/tests/test_Tile.html

    r4579 r5854  
    3232    } 
    3333 
     34    function test_02_Tile_clone (t) { 
     35        t.plan( 10 ); 
     36      
     37        var layer = {}; // bogus layer 
     38        var position = new OpenLayers.Pixel(10,20); 
     39        var bounds = new OpenLayers.Bounds(1,2,3,4); 
     40        var url = "bobob"; 
     41        var size = new OpenLayers.Size(5,6); 
     42         
     43        tile = new OpenLayers.Tile(layer, position, bounds, url, size); 
     44        var clone = tile.clone(); 
     45         
     46        t.ok( clone instanceof OpenLayers.Tile, "OpenLayers.Tile.clone returns Tile object" ); 
     47        t.eq( clone.layer, layer, "clone.layer set correctly"); 
     48        t.ok( clone.position.equals(position), "clone.position set correctly"); 
     49        t.ok( clone.bounds.equals(bounds), "clone.bounds set correctly"); 
     50        t.eq( clone.url, url, "clone.url set correctly");         
     51        t.ok( clone.size.equals(size), "clone.size is set correctly" ); 
     52 
     53        t.ok( clone.id != null, "clone is given an id"); 
     54        t.ok( clone.id != tile.id, "clone is given a new id"); 
     55        t.ok(OpenLayers.String.startsWith(clone.id, "Tile_"), 
     56             "clone's id starts correctly"); 
     57        t.ok( clone.events != null, "clone's events intitialized"); 
     58    } 
     59 
    3460    function test_99_Tile_destroy(t) { 
    3561        t.plan( 6 );