import TKUnit = require("../TKUnit"); import view = require("ui/core/view"); import builder = require("ui/builder"); import page = require("ui/page"); import buttonModule = require("ui/button"); import switchModule = require("ui/switch"); import textFieldModule = require("ui/text-field"); import gridLayoutModule = require("ui/layouts/grid-layout"); import absoluteLayoutModule = require("ui/layouts/absolute-layout"); import types = require("utils/types"); import fs = require("file-system"); import fileSystemAccess = require("file-system/file-system-access"); import observable = require("data/observable"); import stackLayoutModule = require("ui/layouts/stack-layout"); import labelModule = require("ui/label"); import myCustomControlWithoutXml = require("./mymodule/MyControl"); import listViewModule = require("ui/list-view"); import helper = require("../ui/helper"); import viewModule = require("ui/core/view"); import platform = require("platform"); import gesturesModule = require("ui/gestures"); export function test_load_IsDefined() { TKUnit.assert(types.isFunction(builder.load), "ui/builder should have load method!"); }; export function test_parse_IsDefined() { TKUnit.assert(types.isFunction(builder.parse), "ui/builder should have parse method!"); }; export function test_load_ShouldNotCrashWithInvalidFileName() { var v = builder.load(fs.path.join(__dirname, "mainPage1.xml")); TKUnit.assert(types.isUndefined(v), "Expected result: undefined; Actual result: " + v + ";"); }; export function test_load_ShouldNotCrashWithoutExports() { var v = builder.load(fs.path.join(__dirname, "mainPage.xml")); TKUnit.assert(v instanceof view.View, "Expected result: View; Actual result: " + v + ";"); }; export function test_parse_ShouldNotCrashWithoutExports() { var fileAccess = new fileSystemAccess.FileSystemAccess(); var v: view.View; fileAccess.readText(fs.path.join(__dirname, "mainPage.xml"), r => { v = builder.parse(r); }); TKUnit.assert(v instanceof view.View, "Expected result: View; Actual result: " + v + ";"); }; export function test_parse_ShouldNotCrashWithInvalidXml() { var fileAccess = new fileSystemAccess.FileSystemAccess(); var v: view.View; fileAccess.readText(" { v = builder.parse(r); }); TKUnit.assert(types.isUndefined(v), "Expected result: undefined; Actual result: " + v + ";"); }; export function test_parse_ShouldFindEventHandlersInExports() { var loaded; var page = builder.parse("", { myLoaded: args => { loaded = true; } }); page._emit("loaded"); TKUnit.assert(loaded, "Parse should find event handlers in exports."); }; export function test_parse_ShouldSetGridAttachedProperties() { var p = builder.parse(""); var grid = p.content; var child = grid.getChildAt(0); var col = gridLayoutModule.GridLayout.getColumn(child); TKUnit.assert(col === 2, "Expected result for grid column: 2; Actual result: " + col + ";"); var row = gridLayoutModule.GridLayout.getRow(child); TKUnit.assert(row === 1, "Expected result for grid row: 1; Actual result: " + row + ";"); var colSpan = gridLayoutModule.GridLayout.getColumnSpan(child); TKUnit.assert(colSpan === 4, "Expected result for grid column span: 4; Actual result: " + colSpan + ";"); var rowSpan = gridLayoutModule.GridLayout.getRowSpan(child); TKUnit.assert(rowSpan === 3, "Expected result for grid row span: 3; Actual result: " + rowSpan + ";"); }; export function test_parse_ShouldSetCanvasAttachedProperties() { var p = builder.parse(""); var grid = p.content; var child = grid.getChildAt(0); var left = absoluteLayoutModule.AbsoluteLayout.getLeft(child); TKUnit.assert(left === 1, "Expected result for canvas left: 1; Actual result: " + left + ";"); var top = absoluteLayoutModule.AbsoluteLayout.getTop(child); TKUnit.assert(top === 2, "Expected result for canvas top: 2; Actual result: " + top + ";"); }; export function test_parse_ShouldParseNumberProperties() { var p = builder.parse(""); TKUnit.assert(p.width === 100, "Expected result: 100; Actual result: " + p.width + "; type: " + typeof (p.width)); }; export function test_parse_ShouldParseBooleanProperties() { var p = builder.parse(""); var sw = p.content; TKUnit.assert(sw.checked === true, "Expected result: true; Actual result: " + sw.checked + "; type: " + typeof (sw.checked)); }; export function test_parse_ShouldParseBooleanPropertiesIgnoreCase() { var p = builder.parse(""); var sw = p.content; TKUnit.assert(sw.checked === false, "Expected result: false; Actual result: " + sw.checked + "; type: " + typeof (sw.checked)); }; export function test_parse_ShouldParseBooleanPropertiesIgnoreCaseInverted() { var p = builder.parse(""); var tf = p.content; TKUnit.assert(tf.editable === false, "Expected result: false; Actual result: " + tf.editable + "; type: " + typeof (tf.editable)); }; export function test_parse_ShouldParsePlatformSpecificProperties() { var p = builder.parse(""); var tf = p.content; if (platform.device.os === platform.platformNames.ios) { TKUnit.assert(tf.editable === false, "Expected result: false; Actual result: " + tf.editable + "; type: " + typeof (tf.editable)); } else { TKUnit.assert(tf.editable === true, "Expected result: true; Actual result: " + tf.editable + "; type: " + typeof (tf.editable)); } }; export function test_parse_ShouldParseBindings() { var p = builder.parse(""); p.bindingContext = { myProp: true }; var sw = p.content; TKUnit.assert(sw.checked === true, "Expected result: true; Actual result: " + sw.checked + "; type: " + typeof (sw.checked)); }; export function test_parse_ShouldParseBindingsWithObservable() { var p = builder.parse(""); var obj = new observable.Observable(); obj.set("myProp", true); p.bindingContext = obj; var sw = p.content; TKUnit.assert(sw.checked === true, "Expected result: true; Actual result: " + sw.checked + "; type: " + typeof (sw.checked)); obj.set("myProp", false); TKUnit.assert(sw.checked === false, "Expected result: false; Actual result: " + sw.checked + "; type: " + typeof (sw.checked)); }; export function test_parse_ShouldParseBindingsToEvents() { var p = builder.parse("