﻿
// ####################################### TESTS ####################################### 
function test1()
{
    var zoom = 2;
    var t1 = new Tile ('qq', zoom);
    alert ('test1: qq + (1,1) = ' + t1.GetRelativeQuadkey (1,1));
}

function test2()
{
    var zoom = 1;
    var t2 = new Tile ('q',1);
    alert ('test2: q + (0,0) = ' + t2.GetRelativeQuadkey (0,0));
}

function test3()
{
    var zoom = 1;
    var t3 = new Tile ('q',1);
    alert ('test3: q + (1,0) = ' + t3.GetRelativeQuadkey (1,0));
}

function test4()
{
    var zoom = 3;
    var t4 = new Tile ('sss',3);
    alert ('test4: sss + (-1,-1) = ' + t4.GetRelativeQuadkey (-1,-1));
    alert ('test4: sss + (1,1) = ' + t4.GetRelativeQuadkey (1,1)); // wrap around
}

function test5()
{
    var tempZoom = zoom;zoom = 3;
    var t5 = new Tile ('rts',3);
    alert ('test5: rts + (0,0) = ' + t5.GetRelativeQuadkey (0,0) + ' expect: rts');
    alert ('test5: rts + (0,1) = ' + t5.GetRelativeQuadkey (0,1) + ' expect: sqr');
    alert ('test5: rts + (1,0) = ' + t5.GetRelativeQuadkey (1,0) + ' expect: rst');
    alert ('test5: rts + (1,1) = ' + t5.GetRelativeQuadkey (1,1) + ' expect: srq');
    alert ('test5: rts + (0,-1) = ' + t5.GetRelativeQuadkey (0,-1) + ' expect: rtr');
    alert ('test5: rts + (-1,0) = ' + t5.GetRelativeQuadkey (-1,0) + ' expect: rtt');
    zoom = tempZoom;
}

function test6()
{
    var tempZoom = zoom;zoom = 2;
    var t5 = new Tile ('qq',2);
    alert ('test6: qq + (50,50) = '   + t5.GetRelativeQuadkeyFromPixels (50,50)   + ' expect: qq');
    alert ('test6: qq + (50,150) = '  + t5.GetRelativeQuadkeyFromPixels (50,150)  + ' expect: qt');
    alert ('test6: qq + (150,50) = '  + t5.GetRelativeQuadkeyFromPixels (150,50)  + ' expect: qr');
    alert ('test6: qq + (270,270) = ' + t5.GetRelativeQuadkeyFromPixels (270,270) + ' expect: sq');
    alert ('test6: qq + (270,50) = '  + t5.GetRelativeQuadkeyFromPixels (270,50)  + ' expect: rq');
    alert ('test6: qq + (50,270) = '  + t5.GetRelativeQuadkeyFromPixels (50,270)  + ' expect: tq');
    alert ('test6: qq + (150,270) = ' + t5.GetRelativeQuadkeyFromPixels (150,270) + ' expect: tr');
    alert ('test6: qq + (270,150) = ' + t5.GetRelativeQuadkeyFromPixels (270,150) + ' expect: rt');
    
    zoom = tempZoom;
}

function test7()
{
    var p0 = new Point ('01','01');        alert ('new Point(x,y)\r\ntest7: 01,01, = ' + p0.X + ',' + p0.Y + ' (binary ' + p0.ToBase2() + ')');
    var p1 = new PointFromBinary('0011');  alert ('new PointFromBinary(b)\r\ntest7: 0011 = ' + p1.X + ',' + p1.Y);
    var p2 = new PointFromBinary('01');    alert ('test7: 01 = ' + p2.X + ',' + p2.Y);
    var p3 = new PointFromBinary('110011');alert ('test7: 110011 = ' + p3.X + ',' + p3.Y);
    var p4 = new PointFromBinary('000111');alert ('test7: 000111 = ' + p4.X + ',' + p4.Y);
}

function test8()
{
    var t1 = new TileFromRowColumn(0, 0, 1);   alert ('new TileFromRowColumn(x,y,z)\r\ntest8: 0,0,1 = ' + t1.Quadkey + ' expect: q');
    t1 = new TileFromRowColumn(1, 0, 1);       alert ('test8: 1,0,1 = ' + t1.Quadkey + ' expect: r');
    t1 = new TileFromRowColumn(0, 1, 1);       alert ('test8: 0,1,1 = ' + t1.Quadkey + ' expect: t');
    var t2 = new TileFromRowColumn(0, 0, 3);   alert ('test8: 0,0,3 = ' + t2.Quadkey + ' expect: qqq');
    var t3 = new TileFromRowColumn(0, 0, 6);   alert ('test8: 0,0,6 = ' + t3.Quadkey + ' expect: qqqqqq');
    var t4 = new TileFromRowColumn(1, 1, 1);   alert ('test8: 1,1,1 = ' + t4.Quadkey + ' expect: s');
    var t5 = new TileFromRowColumn(7, 7, 3);   alert ('test8: 7,7,3 = ' + t5.Quadkey + ' expect: sss');
    var t6 = new TileFromRowColumn(15,15,4);   alert ('test8: 15,15,4 = ' + t6.Quadkey + ' expect: ssss');
    
}

function test9()
{
    alert('get_Point(151.22, -33.86): ' + WORLD.get_Point(151.22, -33.86).toString() + '  expect around 470, 312');
    
    //alert('get_Point(): ' + WORLD.get_Point(
}

function test10()
{
    var dec =10.46;
    alert(dec.toDegreeMinuteSecond());
    
    alert(151.21555.toDegreeMinuteSecond('EW'));
    alert(-33.855555.toDegreeMinuteSecond('NS'));
    
    
    
}
// ###################################### END ## TESTS ######################################

