diff --git a/CrossPlatformModules.csproj b/CrossPlatformModules.csproj index 59019d963..0da87ed5b 100644 --- a/CrossPlatformModules.csproj +++ b/CrossPlatformModules.csproj @@ -193,6 +193,7 @@ + @@ -1585,7 +1586,7 @@ False - + \ No newline at end of file diff --git a/apps/tests/ui/view/view-tests-common.ts b/apps/tests/ui/view/view-tests-common.ts index bed9c0501..14bc3eaff 100644 --- a/apps/tests/ui/view/view-tests-common.ts +++ b/apps/tests/ui/view/view-tests-common.ts @@ -3,6 +3,7 @@ import viewModule = require("ui/core/view"); import frame = require("ui/frame"); import page = require("ui/page"); import button = require("ui/button"); +import label = require("ui/label"); import types = require("utils/types"); import helper = require("../../ui/helper"); import color = require("color"); @@ -11,6 +12,7 @@ import proxy = require("ui/core/proxy"); import layoutModule = require("ui/layouts/layout"); import observable = require("data/observable"); import bindable = require("ui/core/bindable"); +import definition = require("./view-tests"); export var test_eachDescendant = function () { var test = function (views: Array) { @@ -581,3 +583,56 @@ export var test_binding_style_visibility = function () { export var test_binding_style_opacity = function () { property_binding_style_test("opacity", 0.5, 0.6); } + +function _createLabelWithBorder(): viewModule.View { + var lbl = new label.Label(); + lbl.borderRadius = 10; + lbl.borderWidth = 2; + lbl.borderColor = new color.Color("#FF0000"); + lbl.backgroundColor = new color.Color("#FFFF00"); + + return lbl; +} + +export var testBorderWidth = function () { + helper.buildUIAndRunTest(_createLabelWithBorder(), function (views: Array) { + var lbl = views[0]; + var expectedValue = lbl.borderWidth; + var actualValue = definition.getNativeBorderWidth(lbl); + TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue); + }); +} + +export var testCornerRadius = function () { + helper.buildUIAndRunTest(_createLabelWithBorder(), function (views: Array) { + var lbl = views[0]; + var expectedValue = lbl.borderRadius; + var actualValue = definition.getNativeCornerRadius(lbl); + TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue); + }); +} + +export var testBorderColor = function () { + helper.buildUIAndRunTest(_createLabelWithBorder(), function (views: Array) { + var lbl = views[0]; + TKUnit.assert(definition.checkNativeBorderColor(lbl), "BorderColor not applied correctly!"); + }); +} + +export var testBackgroundColor = function () { + helper.buildUIAndRunTest(_createLabelWithBorder(), function (views: Array) { + var lbl = views[0]; + TKUnit.assert(definition.checkNativeBackgroundColor(lbl), "BackgroundColor not applied correctly!"); + }); +} + +export var testBackgroundImage = function () { + var lbl = _createLabelWithBorder(); + + helper.buildUIAndRunTest(lbl, function (views: Array) { + var page = views[1]; + page.css = "View { background-image: url('~/logo.png') }"; + + TKUnit.assert(definition.checkNativeBackgroundImage(lbl), "Style background-image not loaded correctly."); + }); +} \ No newline at end of file diff --git a/apps/tests/ui/view/view-tests.android.ts b/apps/tests/ui/view/view-tests.android.ts index 1e8e8abab..c4bdbe121 100644 --- a/apps/tests/ui/view/view-tests.android.ts +++ b/apps/tests/ui/view/view-tests.android.ts @@ -253,4 +253,34 @@ export var test_StylePropertiesDefaultValuesCache = function () { }; helper.do_PageTest_WithStackLayout_AndButton(test); +} + +export function getNativeBorderWidth(v: view.View): number { + var bkg = (v.android).getBackground(); + + return bkg ? bkg.borderWidth : -1; +} + +export function getNativeCornerRadius(v: view.View): number { + var bkg = (v.android).getBackground(); + + return bkg ? bkg.cornerRadius : -1; +} + +export function checkNativeBorderColor(v: view.View): boolean { + var bkg = (v.android).getBackground(); + + return v.borderColor && bkg && bkg.borderColor === v.borderColor.android; +} + +export function checkNativeBackgroundColor(v: view.View): boolean { + var bkg = (v.android).getBackground(); + + return v.backgroundColor && bkg && bkg.backgroundColor === v.backgroundColor.android; +} + +export function checkNativeBackgroundImage(v: view.View): boolean { + var bkg = (v.android).getBackground(); + + return bkg && bkg.bitmap !== undefined; } \ No newline at end of file diff --git a/apps/tests/ui/view/view-tests.d.ts b/apps/tests/ui/view/view-tests.d.ts new file mode 100644 index 000000000..90108ddd8 --- /dev/null +++ b/apps/tests/ui/view/view-tests.d.ts @@ -0,0 +1,12 @@ +//@private +import view = require("ui/core/view"); + +export declare function getNativeBorderWidth(v: view.View): number; + +export declare function getNativeCornerRadius(v: view.View): number; + +export declare function checkNativeBorderColor(v: view.View): boolean + +export declare function checkNativeBackgroundColor(v: view.View): boolean; + +export declare function checkNativeBackgroundImage(v: view.View): boolean \ No newline at end of file diff --git a/apps/tests/ui/view/view-tests.ios.ts b/apps/tests/ui/view/view-tests.ios.ts index 00a42dcfc..9ccff422d 100644 --- a/apps/tests/ui/view/view-tests.ios.ts +++ b/apps/tests/ui/view/view-tests.ios.ts @@ -1,5 +1,26 @@ import commonTests = require("./view-tests-common"); +import view = require("ui/core/view"); // merge the exports of the application_common file with the exports of this file declare var exports; require("utils/module-merge").merge(commonTests, exports); + +export function getNativeBorderWidth(v: view.View): number { + return (v.ios).layer.borderWidth; +} + +export function getNativeCornerRadius(v: view.View): number { + return (v.ios).layer.cornerRadius; +} + +export function checkNativeBorderColor(v: view.View): boolean { + return v.borderColor && (v.ios).layer.borderColor === v.borderColor.ios.CGColor; +} + +export function checkNativeBackgroundColor(v: view.View): boolean { + return v.backgroundColor && (v.ios).backgroundColor.isEqual(v.backgroundColor.ios); +} + +export function checkNativeBackgroundImage(v: view.View): boolean { + return (v.ios).backgroundColor !== undefined; +} \ No newline at end of file