// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License.txt in the project root for license information.
//
//
///
///
//
module WinJSTests {
'use strict';
var tooltipUtils = TooltipUtils;
export class TooltipBasicTests {
setUp() {
tooltipUtils.setUp();
}
tearDown() {
tooltipUtils.cleanUp();
}
//-----------------------------------------------------------------------------------
// Verify the default properties for a tooltip
testTooltip_Instantiation() {
var tooltip = tooltipUtils.instantiate(tooltipUtils.defaultElementID);
LiveUnit.Assert.areEqual(tooltip.placement, tooltipUtils.DEFAULT_PLACEMENT);
LiveUnit.Assert.areEqual(tooltip.infotip, tooltipUtils.DEFAULT_INFOTIP);
LiveUnit.Assert.areEqual(tooltip.innerHTML, null);
LiveUnit.Assert.areEqual(tooltip.contentElement, null);
}
// Verify the properties can be set during initialization. This is just a basic check
// and these options are tested in other functions
testTooltip_Instantiation_options() {
var divElement = document.createElement("div");
var tooltip = tooltipUtils.instantiate(tooltipUtils.defaultElementID,
{
placement: "bottom", infotip: (!tooltipUtils.DEFAULT_INFOTIP),
innerHTML: "innerHTML", contentElement: divElement,
extraClass: "dummyClass"
});
LiveUnit.Assert.areEqual(tooltip.placement, "bottom");
LiveUnit.Assert.areEqual(tooltip.infotip, !tooltipUtils.DEFAULT_INFOTIP);
LiveUnit.Assert.areEqual(tooltip.innerHTML, "innerHTML");
LiveUnit.Assert.areEqual(tooltip.contentElement, divElement);
LiveUnit.Assert.areEqual(tooltip.extraClass, "dummyClass");
}
// Verify tooltip either converts properties or throws an exception.
// The only truly valid parameter to elementContent is an HTML element, but we don't throw any errors
// during instantiation.
testTooltip_Instantiation_elementContent() {
var tooltip = tooltipUtils.instantiate(tooltipUtils.defaultElementID);
tooltip.elementContent = false;
LiveUnit.Assert.areEqual(tooltip.elementContent, false, "false");
tooltip.elementContent = 0;
LiveUnit.Assert.areEqual(tooltip.elementContent, 0, "0");
tooltip.elementContent = 1;
LiveUnit.Assert.areEqual(tooltip.elementContent, 1, "1");
tooltip.elementContent = "string";
LiveUnit.Assert.areEqual(tooltip.elementContent, "string", "string");
tooltip.elementContent = "";
LiveUnit.Assert.areEqual(tooltip.elementContent, "", "empty string");
tooltip.elementContent = null;
LiveUnit.Assert.areEqual(tooltip.elementContent, null, "null");
tooltip.elementContent = undefined;
LiveUnit.Assert.isTrue((typeof (tooltip.elementContent) == "undefined"), "undefined");
tooltip.elementContent = NaN;
LiveUnit.Assert.isTrue(isNaN(tooltip.elementContent), "NaN");
tooltip.elementContent = "
string
";
LiveUnit.Assert.areEqual(tooltip.elementContent, "string
");
}
// Verify tooltip either converts properties or throws an exception.
testTooltip_Instantiation_infotip() {
var tooltip = tooltipUtils.instantiate(tooltipUtils.defaultElementID);
// See Win8 bug 258757 Tooltip converts non-boolean parameters to boolean whereas Rating control doesn't
tooltip.infotip = false;
LiveUnit.Assert.areEqual(tooltip.infotip, false, "false");
tooltip.infotip = true;
LiveUnit.Assert.areEqual(tooltip.infotip, true, "true");
tooltip.infotip = 0;
LiveUnit.Assert.areEqual(tooltip.infotip, false, "0");
tooltip.infotip = 1;
LiveUnit.Assert.areEqual(tooltip.infotip, true, "1");
tooltip.infotip = "string";
LiveUnit.Assert.areEqual(tooltip.infotip, true, "string");
tooltip.infotip = "";
LiveUnit.Assert.areEqual(tooltip.infotip, false, "empty string");
tooltip.infotip = null;
LiveUnit.Assert.areEqual(tooltip.infotip, false, "null");
tooltip.infotip = undefined;
LiveUnit.Assert.areEqual(tooltip.infotip, false, "undefined");
tooltip.infotip = NaN;
LiveUnit.Assert.areEqual(tooltip.infotip, false, "NaN");
}
// Verify tooltip either converts properties or throws an exception.
testTooltip_Instantiation_inner() {
var tooltip = tooltipUtils.instantiate(tooltipUtils.defaultElementID);
// Win8 bug 258770: Tooltip innerHTML properties can be set to non-string values and don't throw exceptions
tooltip.innerHTML = false;
LiveUnit.Assert.areEqual(tooltip.innerHTML, false, "false");
tooltip.innerHTML = 0;
LiveUnit.Assert.areEqual(tooltip.innerHTML, 0, "0");
tooltip.innerHTML = 1;
LiveUnit.Assert.areEqual(tooltip.innerHTML, 1, "1");
tooltip.innerHTML = "string";
LiveUnit.Assert.areEqual(tooltip.innerHTML, "string", "string");
tooltip.innerHTML = "";
LiveUnit.Assert.areEqual(tooltip.innerHTML, "", "empty string");
tooltip.innerHTML = null;
LiveUnit.Assert.areEqual(tooltip.innerHTML, null, "null");
tooltip.innerHTML = undefined;
LiveUnit.Assert.isTrue((typeof (tooltip.innerHTML) == "undefined"), "undefined");
tooltip.innerHTML = NaN;
LiveUnit.Assert.isTrue(isNaN(tooltip.innerHTML), "NaN");
tooltip.innerHTML = "string
";
LiveUnit.Assert.areEqual(tooltip.innerHTML, "string
");
// Win8 Bug 269253: We're removing the textContent property, so it shouldn't be affected by innerHTML and should
// just return undefined
LiveUnit.Assert.isTrue((typeof (tooltip.textContent) == "undefined"), "undefined");
// Win8 Bug 342701: We're removing the delay property, so it should just return undefined
LiveUnit.Assert.isTrue((typeof (tooltip.delay) == "undefined"), "undefined");
}
// Verify tooltip either converts properties or throws an exception.
testTooltip_Instantiation_placement() {
var tooltip = tooltipUtils.instantiate(tooltipUtils.defaultElementID);
function testBadPlacement(tooltip, placementText) {
LiveUnit.LoggingCore.logComment("Testing placement: " + placementText);
var exception = null;
try {
tooltip.placement = placementText;
} catch (e) {
exception = e;
}
LiveUnit.Assert.isNull(exception);
LiveUnit.Assert.areEqual(tooltip.placement, tooltipUtils.DEFAULT_PLACEMENT);
}
testBadPlacement(tooltip, "Top");
testBadPlacement(tooltip, null);
testBadPlacement(tooltip, undefined);
testBadPlacement(tooltip, false);
testBadPlacement(tooltip, "0");
testBadPlacement(tooltip, "1");
testBadPlacement(tooltip, "");
testBadPlacement(tooltip, NaN);
}
// Verify tooltip either converts properties or throws an exception.
// The only truly valid parameter to extraClass is a string, but we don't throw any errors
// during instantiation.
testTooltip_Instantiation_extraClass() {
var tooltip = tooltipUtils.instantiate(tooltipUtils.defaultElementID);
tooltip.extraClass = false;
LiveUnit.Assert.areEqual(tooltip.extraClass, false, "false");
tooltip.extraClass = 0;
LiveUnit.Assert.areEqual(tooltip.extraClass, 0, "0");
tooltip.extraClass = 1;
LiveUnit.Assert.areEqual(tooltip.extraClass, 1, "1");
tooltip.extraClass = "string";
LiveUnit.Assert.areEqual(tooltip.extraClass, "string", "string");
tooltip.extraClass = "";
LiveUnit.Assert.areEqual(tooltip.extraClass, "", "empty string");
tooltip.extraClass = null;
LiveUnit.Assert.areEqual(tooltip.extraClass, null, "null");
tooltip.extraClass = undefined;
LiveUnit.Assert.isTrue((typeof (tooltip.extraClass) == "undefined"), "undefined");
tooltip.extraClass = NaN;
LiveUnit.Assert.isTrue(isNaN(tooltip.extraClass), "NaN");
tooltip.extraClass = "string
";
LiveUnit.Assert.areEqual(tooltip.extraClass, "string
");
}
}
}
// Register the object as a test class by passing in the name
LiveUnit.registerTestClass("WinJSTests.TooltipBasicTests");