dojo.provide("tests.webmap.widget.MapControl");

dojo.require("doh.runner");
dojo.require("webmap.widget.MapControl");
dojo.require("tests.Util");
dojo.require("webmap.MapManager");

var div;
function doMapControlSetup(){
	tests.Util.resetDom();
	div = document.createElement("div");
	document.body.appendChild(div);
}

doh.register("tests.webmap.widget.MapControl", 
	[
		{
			name: "resize",
			widget: null,
			subscription: null,
			setUp: function(){
				doMapControlSetup();
				dojo.style(div, "left", "100px");
				dojo.style(div, "top", "50px");
				dojo.style(div, "width", "800px");
				dojo.style(div, "height", "600px");
				this.widget = new webmap.widget.MapControl({}, div);
			},
			runTest: function(){
				this.subscription = dojo.subscribe("webmap.widget.MapControl.resized", function(r){tests.assertEqual({l:100, t:50, w:800, h:600}, r);});
				this.widget.resize();
				tests.assertEqual(100, dojo.style(this.widget.domNode, "left"));
				tests.assertEqual(50, dojo.style(this.widget.domNode, "top"));
				tests.assertEqual(800, dojo.style(this.widget.domNode, "width"));
				tests.assertEqual(600, dojo.style(this.widget.domNode, "height"));
			},
			tearDown: function(){
				this.widget.destroy();
				dojo.unsubscribe(this.subscription);
			}
		},
		{
			name: "resize_fullsize",
			getViewport: dijit.getViewport,
			widget: null,
			subscription: null,
			setUp: function(){
				doMapControlSetup();
				this.widget = new webmap.widget.MapControl({fullsize:true}, div);
				dijit.getViewport = function(){return {w:800,h:600}};
			},
			runTest: function(){
				this.subscription = dojo.subscribe("webmap.widget.MapControl.resized", function(r){tests.assertEqual(dijit.getViewport(), r);});
				this.widget.resize();
				tests.assertEqual(0, dojo.style(this.widget.domNode, "left"));
				tests.assertEqual(0, dojo.style(this.widget.domNode, "top"));
				tests.assertEqual(dijit.getViewport().w, dojo.style(this.widget.domNode, "width"));
				tests.assertEqual(dijit.getViewport().h, dojo.style(this.widget.domNode, "height"));
			},
			tearDown: function(){
				this.widget.destroy();
				dojo.unsubscribe(this.subscription);
				dijit.getViewport = this.getViewport;
			}
		}
	]
);