dojo.provide("tests.webmap.widget.MapActionRendererControl");

dojo.require("doh.runner");
dojo.require("webmap.widget.MapActionRendererControl");
dojo.require("tests.Util");
dojo.require("webmap.MapManager");

var div;
function doMapActionRendererControlSetup(){
	tests.Util.resetDom();
	div = document.createElement("div");
	document.body.appendChild(div);
}

doh.register("tests.webmap.widget.MapActionRendererControl", 
	[	
		{
			name: "postCreate",
			setUp: function(){
				doMapActionRendererControlSetup();
			},
			runTest: function(){
				var c = new webmap.widget.MapActionRendererControl({}, div);
				tests.assertEqual(3, c._subscriptions.length);
				c.destroy();
			}
		},
		{
			name: "testSubscriptions",
			setUp: function(){
				doMapActionRendererControlSetup();
			},
			runTest: function(){
				var c = new webmap.widget.MapActionRendererControl({}, div);
				window.undockedWin = "not null";
				var mouseDowns = 0;
				c._doMouseDown = function(){mouseDowns++;};
				var drags = 0;
				c._doDrag = function(){drags++;};
				var resets = 0;
				c._reset = function(){resets++;};
				webmap.publish("webmap.widget.MapEventControl.mouseDown", []);
				webmap.publish("webmap.widget.MapEventControl.dragging", []);
				webmap.publish("webmap.MapManager.mapDataChanged", []);
				tests.assertEqual(1, mouseDowns);
				tests.assertEqual(1, drags);
				tests.assertEqual(1, resets);
				window.undockedWin = null;
				c.destroy();
			}
		},
		{
			name: "_doMouseDown",
			setUp: function(){
				doMapActionRendererControlSetup();
			},
			runTest: function(){
				var c = new webmap.widget.MapActionRendererControl({}, div);
				window.undockedWin = "not null";
				dojo.style(c.domNode, "display", "none");
				dojo.style(c.domNode, "visibility", "hidden");
				dojo.style(c.domNode, "width", "200px");
				dojo.style(c.domNode, "height", "100px");
				dojo.style(c.domNode, "left","0px");
				dojo.style(c.domNode, "top", "0px");
				c._doMouseDown();
				tests.assertEqual("none", dojo.style(c.domNode, "display"));
				tests.assertEqual(200, dojo.style(c.domNode, "width"));
				tests.assertEqual(100, dojo.style(c.domNode, "height"));
				tests.assertEqual(0, dojo.style(c.domNode, "left"));
				tests.assertEqual(0, dojo.style(c.domNode, "top"));
				tests.assertEqual("hidden", dojo.style(c.domNode, "visibility"));
				window.undockedWin = null;
				c._doMouseDown({tool:"zoomIn", l:100, t:50});
				tests.assertEqual("block", dojo.style(c.domNode, "display"));
				tests.assertEqual(0, dojo.style(c.domNode, "width"));
				tests.assertEqual(0, dojo.style(c.domNode, "height"));
				tests.assertEqual(100, dojo.style(c.domNode, "left"));
				tests.assertEqual(50, dojo.style(c.domNode, "top"));
				tests.assertEqual("visible", dojo.style(c.domNode, "visibility"));
				c.destroy();
			}
		},
		{
			name: "_doMouseDown_pan",
			setUp: function(){
				doMapActionRendererControlSetup();
			},
			runTest: function(){
				var c = new webmap.widget.MapActionRendererControl({}, div);
				c._doMouseDown({tool:"pan", l:100, t:50});
				tests.assertEqual(0, dojo.style(c.domNode, "width"));
				tests.assertEqual(0, dojo.style(c.domNode, "height"));
				tests.assertEqual(100, dojo.style(c.domNode, "left"));
				tests.assertEqual(50, dojo.style(c.domNode, "top"));
				tests.assertEqual("hidden", dojo.style(c.domNode, "visibility"));
				c.destroy();
			}
		},
		{
			name: "_doDrag",
			setUp: function(){
				doMapActionRendererControlSetup();
			},
			runTest: function(){
				var c = new webmap.widget.MapActionRendererControl({}, div);
				window.undockedWin = "not null";
				dojo.style(c.domNode, "display", "block");
				dojo.style(c.domNode, "width", "200px");
				dojo.style(c.domNode, "height", "100px");
				dojo.style(c.domNode, "left","0px");
				dojo.style(c.domNode, "top", "0px");
				c._doDrag();
				tests.assertEqual(200, dojo.style(c.domNode, "width"));
				tests.assertEqual(100, dojo.style(c.domNode, "height"));
				tests.assertEqual(0, dojo.style(c.domNode, "left"));
				tests.assertEqual(0, dojo.style(c.domNode, "top"));
				window.undockedWin = null;
				c._doDrag({l:100, t:50, w:400, h:200});
				tests.assertEqual(400, dojo.style(c.domNode, "width"));
				tests.assertEqual(200, dojo.style(c.domNode, "height"));
				tests.assertEqual(100, dojo.style(c.domNode, "left"));
				tests.assertEqual(50, dojo.style(c.domNode, "top"));
				c.destroy();
			}
		},
		{
			name: "_reset",
			setUp: function(){
				doMapActionRendererControlSetup();
			},
			runTest: function(){
				var c = new webmap.widget.MapActionRendererControl({}, div);
				window.undockedWin = "not null";
				dojo.style(c.domNode, "display", "block");
				c._reset();
				tests.assertEqual("block", dojo.style(c.domNode, "display"));
				window.undockedWin = null;
				c._reset();
				tests.assertEqual("none", dojo.style(c.domNode, "display"));
				c.destroy();
			}
		}
	]
);