From 20b65a6d0c8b3f647697882904323a259c677749 Mon Sep 17 00:00:00 2001 From: hshristov Date: Tue, 21 Apr 2015 17:19:02 +0300 Subject: [PATCH] Add base ui-test class Update label-test to use the new ui-test class --- CrossPlatformModules.csproj | 3 +- apps/tests/TKUnit.ts | 47 ++- apps/tests/app/mainPage.ts | 2 +- apps/tests/app/testRunnerPage.ts | 2 +- apps/tests/layouts/dock-layout-tests.ts | 4 +- apps/tests/testRunner.ts | 85 ++--- apps/tests/ui/label/label-tests.ts | 422 +++++++++++------------- trace/trace.d.ts | 6 + trace/trace.ts | 5 + ui/page/page-common.ts | 20 +- 10 files changed, 293 insertions(+), 303 deletions(-) diff --git a/CrossPlatformModules.csproj b/CrossPlatformModules.csproj index ad7e5626a..f68a991c1 100644 --- a/CrossPlatformModules.csproj +++ b/CrossPlatformModules.csproj @@ -135,6 +135,7 @@ + time-picker-tests-native.d.ts @@ -1561,7 +1562,7 @@ False - + \ No newline at end of file diff --git a/apps/tests/TKUnit.ts b/apps/tests/TKUnit.ts index 7d86208a1..ef4e4eee2 100644 --- a/apps/tests/TKUnit.ts +++ b/apps/tests/TKUnit.ts @@ -19,14 +19,30 @@ var sdkVersion = parseInt(platform.device.sdkVersion); trace.enable(); +export interface TestInfoEntry { + testFunc: () => void; + instance: Object; + isTest: boolean; + testName: string; + isPassed: boolean; + errorMessage: string; + testTimeout: number; +} + export var write = function write(message: string, type?: number) { //console.log(message); trace.write(message, trace.categories.Test, type); } -var runTest = function (testInfo) { +var runTest = function (testInfo: TestInfoEntry) { try { - testInfo.testFunc(); + if (testInfo.instance) { + testInfo.testFunc.apply(testInfo.instance); + } + else { + testInfo.testFunc(); + } + if (testInfo.isTest) { write("--- [" + testInfo.testName + "] OK", trace.messageType.info); testInfo.isPassed = true; @@ -54,11 +70,11 @@ export interface TestModuleRunResult { failed: Array; } -var testsQueue; +var testsQueue: Array; var defaultTimeout = 5000; // testInfo : {testFunc: func, testName: string, isTest: boolean, isPassed: boolean, errorMessage: string} -function runAsync(testInfo, recursiveIndex, testTimeout?) { +function runAsync(testInfo: TestInfoEntry, recursiveIndex: number, testTimeout?: number) { var error; var isDone = false; var handle; @@ -104,22 +120,29 @@ function runAsync(testInfo, recursiveIndex, testTimeout?) { } } - testInfo.testFunc(doneCallback); + if (testInfo.instance) { + testInfo.testFunc.apply(testInfo.instance, [doneCallback]); + } + else { + var func: any = testInfo.testFunc; + func(doneCallback); + } setTimeout(checkFinished, 0); } // tests : Array<{testFunc: func, testName: string, isTest: boolean, isPassed: boolean, errorMessage: string}> -export var runTests = function (tests, recursiveIndex) { +export var runTests = function (tests: Array, recursiveIndex) { testsQueue = tests; var i; for (i = recursiveIndex; i < testsQueue.length; i++) { - if (testsQueue[i].testFunc.length > 0) { - return runAsync(testsQueue[i], i); + var testEntry = testsQueue[i]; + if (testEntry.testFunc.length > 0) { + return runAsync(testEntry, i); } else { - runTest(testsQueue[i]); + runTest(testEntry); } } } @@ -170,6 +193,12 @@ export function assertEqual(actual: any, expected: any, message?: string) { } }; +export function assertNull(actual: any, message?: string) { + if (actual !== null && actual !== undefined) { + throw new Error(message + " Actual: " + actual + " is not null/undefined"); + } +}; + export function assertAreClose(actual: number, expected: number, delta: number, message?: string) { if (isNaN(actual) || Math.abs(actual - expected) > delta) { throw new Error(message + " Numbers are not close enough. Actual: " + actual + " Expected: " + expected + " Delta: " + delta); diff --git a/apps/tests/app/mainPage.ts b/apps/tests/app/mainPage.ts index be7855725..f9d8b418c 100644 --- a/apps/tests/app/mainPage.ts +++ b/apps/tests/app/mainPage.ts @@ -20,7 +20,7 @@ class MyTraceWriter implements trace.TraceWriter { trace.addWriter(new MyTraceWriter()); trace.enable(); -trace.setCategories(trace.categories.Test + "," + trace.categories.Error); +trace.addCategories(trace.categories.Test + "," + trace.categories.Error); var textView = new textViewModule.TextView(); textView.editable = false; diff --git a/apps/tests/app/testRunnerPage.ts b/apps/tests/app/testRunnerPage.ts index 9e571f4eb..5e9986261 100644 --- a/apps/tests/app/testRunnerPage.ts +++ b/apps/tests/app/testRunnerPage.ts @@ -4,7 +4,7 @@ import bm = require("ui/button"); import listViewDef = require("ui/list-view"); import trace = require("trace"); trace.enable(); -trace.setCategories(trace.categories.Test + "," + trace.categories.Error); +trace.addCategories(trace.categories.Test + "," + trace.categories.Error); export function createPage() { var data: string[] = [""]; diff --git a/apps/tests/layouts/dock-layout-tests.ts b/apps/tests/layouts/dock-layout-tests.ts index a352e7161..727e9ab49 100644 --- a/apps/tests/layouts/dock-layout-tests.ts +++ b/apps/tests/layouts/dock-layout-tests.ts @@ -20,8 +20,8 @@ import dockModule = require("ui/layouts/dock-layout"); //