From 96c638e1cc3b9f1389bcddf8f2782e2e8a5abaf5 Mon Sep 17 00:00:00 2001 From: vakrilov Date: Thu, 21 Jan 2016 15:54:10 +0200 Subject: [PATCH] Tests added --- CrossPlatformModules.csproj | 11 +- apps/tests/testRunner.ts | 1 + .../proxy-view-container-tests.ts | 160 ++++++++++++++++++ tsconfig.json | 5 +- .../package.json | 0 .../proxy-view-container.d.ts | 0 .../proxy-view-container.ts | 0 7 files changed, 169 insertions(+), 8 deletions(-) create mode 100644 apps/tests/ui/proxy-view-container/proxy-view-container-tests.ts rename ui/{view-container => proxy-view-container}/package.json (100%) rename ui/{view-container => proxy-view-container}/proxy-view-container.d.ts (100%) rename ui/{view-container => proxy-view-container}/proxy-view-container.ts (100%) diff --git a/CrossPlatformModules.csproj b/CrossPlatformModules.csproj index a4157466d..7568e227f 100644 --- a/CrossPlatformModules.csproj +++ b/CrossPlatformModules.csproj @@ -89,6 +89,7 @@ modal-page.xml + @@ -726,8 +727,8 @@ - - + + @@ -2089,9 +2090,7 @@ - - PreserveNewest - + @@ -2154,7 +2153,7 @@ False - + \ No newline at end of file diff --git a/apps/tests/testRunner.ts b/apps/tests/testRunner.ts index c5f896464..4d9da1006 100644 --- a/apps/tests/testRunner.ts +++ b/apps/tests/testRunner.ts @@ -25,6 +25,7 @@ export function isRunningOnEmulator(): boolean { } export var allTests = {}; +allTests["PROXY-VIEW-CONTAINER"] = require("./ui/proxy-view-container/proxy-view-container-tests") allTests["SCROLL-VIEW"] = require("./ui/scroll-view/scroll-view-tests"); allTests["ACTION-BAR"] = require("./ui/action-bar/action-bar-tests"); allTests["XML-DECLARATION"] = require("./xml-declaration/xml-declaration-tests"); diff --git a/apps/tests/ui/proxy-view-container/proxy-view-container-tests.ts b/apps/tests/ui/proxy-view-container/proxy-view-container-tests.ts new file mode 100644 index 000000000..1d2601331 --- /dev/null +++ b/apps/tests/ui/proxy-view-container/proxy-view-container-tests.ts @@ -0,0 +1,160 @@ +import TKUnit = require("../../TKUnit"); +import helper = require("../helper"); +import viewModule = require("ui/core/view"); +import observable = require("data/observable"); +import color = require("color"); +import platform = require("platform"); + +import {ProxyViewContainer} from "ui/proxy-view-container"; +import {View, Button, StackLayout} from "ui"; + +export function test_add_children_to_attached_proxy() { + var outer = new StackLayout(); + var proxy = new ProxyViewContainer(); + + function testAction(views: Array) { + outer.addChild(createBtn("1")); + outer.addChild(proxy); + proxy.addChild(createBtn("2")); + proxy.addChild(createBtn("3")); + proxy.addChild(createBtn("4")); + + outer.addChild(createBtn("5")); + + assertNativeChildren(outer, ["1", "2", "3", "4", "5"]); + }; + + helper.buildUIAndRunTest(outer, testAction); +} + +export function test_add_children_to_detached_proxy() { + var outer = new StackLayout(); + var proxy = new ProxyViewContainer(); + + function testAction(views: Array) { + outer.addChild(createBtn("1")); + + proxy.addChild(createBtn("2")); + proxy.addChild(createBtn("3")); + proxy.addChild(createBtn("4")); + outer.addChild(proxy); + + outer.addChild(createBtn("5")); + + assertNativeChildren(outer, ["1", "2", "3", "4", "5"]); + }; + + helper.buildUIAndRunTest(outer, testAction); +} + +export function test_remove_proxy() { + var outer = new StackLayout(); + var proxy = new ProxyViewContainer(); + + outer.addChild(createBtn("1")); + + outer.addChild(proxy); + proxy.addChild(createBtn("2")); + proxy.addChild(createBtn("3")); + proxy.addChild(createBtn("4")); + + outer.addChild(createBtn("5")); + + function testAction(views: Array) { + assertNativeChildren(outer, ["1", "2", "3", "4", "5"]); + outer.removeChild(proxy); + assertNativeChildren(outer, ["1", "5"]); + }; + + helper.buildUIAndRunTest(outer, testAction); +} + +export function test_remove_child_of_attached_proxy() { + var outer = new StackLayout(); + var proxy = new ProxyViewContainer(); + + outer.addChild(createBtn("1")); + + outer.addChild(proxy); + proxy.addChild(createBtn("2")); + var testBtn = createBtn("3") + proxy.addChild(testBtn); + proxy.addChild(createBtn("4")); + + outer.addChild(createBtn("5")); + + function testAction(views: Array) { + assertNativeChildren(outer, ["1", "2", "3", "4", "5"]); + proxy.removeChild(testBtn); + assertNativeChildren(outer, ["1", "2", "4", "5"]); + }; + + helper.buildUIAndRunTest(outer, testAction); +} + +export function test_insert_inside_porxy() { + var outer = new StackLayout(); + var proxy = new ProxyViewContainer(); + + outer.addChild(createBtn("1")); + + outer.addChild(proxy); + proxy.addChild(createBtn("2")); + proxy.addChild(createBtn("4")); + + outer.addChild(createBtn("5")); + + function testAction(views: Array) { + assertNativeChildren(outer, ["1", "2", "4", "5"]); + proxy.insertChild(createBtn("3"), 1); + assertNativeChildren(outer, ["1", "2", "3", "4", "5"]); + }; + + helper.buildUIAndRunTest(outer, testAction); +} + +export function test_insert_after_porxy() { + var outer = new StackLayout(); + var proxy = new ProxyViewContainer(); + + outer.addChild(createBtn("1")); + + outer.addChild(proxy); + proxy.addChild(createBtn("2")); + proxy.addChild(createBtn("3")); + proxy.addChild(createBtn("4")); + + function testAction(views: Array) { + assertNativeChildren(outer, ["1", "2", "3", "4"]); + outer.insertChild(createBtn("5"), 2); + assertNativeChildren(outer, ["1", "2", "3", "4", "5"]); + }; + + helper.buildUIAndRunTest(outer, testAction); +} + +function createBtn(text: string): Button { + var b = new Button(); + b.text = text; + return b; +} + +function assertNativeChildren(stack: StackLayout, arr: Array) { + if (stack.android) { + let android: org.nativescript.widgets.StackLayout = stack.android; + TKUnit.assertEqual(android.getChildCount(), arr.length, "Native children"); + for (let i = 0; i < arr.length; i++) { + let nativeBtn = android.getChildAt(i); + TKUnit.assertEqual(nativeBtn.getText(), arr[i]); + } + } else if (stack.ios) { + let ios: UIView = stack.ios; + TKUnit.assertEqual(ios.subviews.count, arr.length, "Native children"); + for (let i = 0; i < arr.length; i++) { + let nativeBtn = ios.subviews[i]; + TKUnit.assertEqual(nativeBtn.titleLabel.text, arr[i]); + } + } else { + TKUnit.assert(false, "No native view to assert"); + } +} diff --git a/tsconfig.json b/tsconfig.json index e4cc8567a..db6ff7be7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -265,6 +265,7 @@ "apps/tests/ui/page/test-page-module.ts", "apps/tests/ui/placeholder/placeholder-tests.ts", "apps/tests/ui/progress/progress-tests.ts", + "apps/tests/ui/proxy-view-container/proxy-view-container-tests.ts", "apps/tests/ui/repeater/repeater-tests.ts", "apps/tests/ui/repeater/repeaterItems-bindingToGestures.ts", "apps/tests/ui/scroll-view/scroll-view-tests.ts", @@ -594,6 +595,8 @@ "ui/progress/progress.android.ts", "ui/progress/progress.d.ts", "ui/progress/progress.ios.ts", + "ui/proxy-view-container/proxy-view-container.d.ts", + "ui/proxy-view-container/proxy-view-container.ts", "ui/repeater/repeater.d.ts", "ui/repeater/repeater.ts", "ui/scroll-view/scroll-view-common.ts", @@ -664,8 +667,6 @@ "ui/ui.ts", "ui/utils.d.ts", "ui/utils.ios.ts", - "ui/view-container/proxy-view-container.d.ts", - "ui/view-container/proxy-view-container.ts", "ui/web-view/web-view-common.ts", "ui/web-view/web-view.android.ts", "ui/web-view/web-view.d.ts", diff --git a/ui/view-container/package.json b/ui/proxy-view-container/package.json similarity index 100% rename from ui/view-container/package.json rename to ui/proxy-view-container/package.json diff --git a/ui/view-container/proxy-view-container.d.ts b/ui/proxy-view-container/proxy-view-container.d.ts similarity index 100% rename from ui/view-container/proxy-view-container.d.ts rename to ui/proxy-view-container/proxy-view-container.d.ts diff --git a/ui/view-container/proxy-view-container.ts b/ui/proxy-view-container/proxy-view-container.ts similarity index 100% rename from ui/view-container/proxy-view-container.ts rename to ui/proxy-view-container/proxy-view-container.ts