diff --git a/apps/tests/layouts/absolute-layout-tests.ts b/apps/tests/layouts/absolute-layout-tests.ts index c85b61705..1a9a44eb2 100644 --- a/apps/tests/layouts/absolute-layout-tests.ts +++ b/apps/tests/layouts/absolute-layout-tests.ts @@ -56,10 +56,10 @@ export var testAll = function () { var actualValue = viewModule.getViewById(absoluteLayout, "LT")._getCurrentLayoutBounds(); var width = actualValue.right - actualValue.left; var height = actualValue.bottom - actualValue.top; - TKUnit.assertEqual(actualValue.left, 10 * density, "ActualLeft"); - TKUnit.assertEqual(actualValue.top, 10 * density, "ActualTop"); - TKUnit.assertEqual(width, 100 * density, "ActualWidth"); - TKUnit.assertEqual(height, 100 * density, "Actualheight"); + TKUnit.assertEqual(actualValue.left, layoutHelper.dip(10), "ActualLeft"); + TKUnit.assertEqual(actualValue.top, layoutHelper.dip(10), "ActualTop"); + TKUnit.assertEqual(width, layoutHelper.dip(100), "ActualWidth"); + TKUnit.assertEqual(height, layoutHelper.dip(100), "Actualheight"); }); } diff --git a/apps/tests/layouts/grid-layout-tests.ts b/apps/tests/layouts/grid-layout-tests.ts index bbf5f5519..e536476a8 100644 --- a/apps/tests/layouts/grid-layout-tests.ts +++ b/apps/tests/layouts/grid-layout-tests.ts @@ -9,6 +9,7 @@ import utils = require("utils/utils"); import builder = require("ui/builder"); var ASYNC = 2; +var DELTA = 0.1; export class MyGridLayout extends layout.GridLayout { public measureCount: number = 0; @@ -328,7 +329,7 @@ export function test_GridLayout_desiredSize_isCorrect() { for (var c = 0; c < 4; c++) { var btn = rootLayout.getChildAt(i++); if (cols[c].isAbsolute) { - width += cols[c].actualLength * utils.layout.getDisplayDensity(); + width += helper.dip(cols[c].actualLength); } else { width += btn.getMeasuredWidth(); @@ -340,15 +341,18 @@ export function test_GridLayout_desiredSize_isCorrect() { maxWidth = Math.max(maxWidth, width); if (rows[r].isAbsolute) { - maxHeight += rows[r].actualLength * utils.layout.getDisplayDensity(); + maxHeight += helper.dip(rows[r].actualLength); } else { maxHeight += height; } } - TKUnit.assertEqual(rootLayout.getMeasuredWidth(), Math.round(maxWidth), "GridLayout incorrect measured width"); - TKUnit.assertEqual(rootLayout.getMeasuredHeight(), Math.round(maxHeight), "GridLayout incorrect measured height"); + var density = utils.layout.getDisplayDensity(); + var delta = Math.floor(density) !== density ? 1.1 : DELTA; + + TKUnit.assertAreClose(rootLayout.getMeasuredWidth(), Math.round(maxWidth), delta, "GridLayout incorrect measured width"); + TKUnit.assertAreClose(rootLayout.getMeasuredHeight(), Math.round(maxHeight), delta, "GridLayout incorrect measured height"); } export function test_GridLayout_columnsActualWidth_isCorrect() { @@ -379,6 +383,7 @@ export function test_GridLayout_Measure_and_Layout_Children_withCorrect_size() { var cols = rootLayout.getColumns(); var i = 0; var density = utils.layout.getDisplayDensity(); + var delta = Math.floor(density) !== density ? 1.1 : DELTA; for (var r = 0; r < 4; r++) { @@ -394,27 +399,27 @@ export function test_GridLayout_Measure_and_Layout_Children_withCorrect_size() { w = Math.round(w * density); if (row.isAuto) { - TKUnit.assertEqual(btn.layoutHeight, btn.getMeasuredHeight(), "Auto rows should layout with measured height"); + TKUnit.assertAreClose(btn.layoutHeight, btn.getMeasuredHeight(), delta, "Auto rows should layout with measured height"); } else if (row.isAbsolute) { - TKUnit.assertEqual(btn.measureHeight, h, "Absolute rows should measure with specific height"); - TKUnit.assertEqual(btn.layoutHeight, h, "Absolute rows should layout with specific height"); + TKUnit.assertAreClose(btn.measureHeight, h, delta, "Absolute rows should measure with specific height"); + TKUnit.assertAreClose(btn.layoutHeight, h, delta, "Absolute rows should layout with specific height"); } else { - TKUnit.assertEqual(btn.measureHeight, h, "Auto rows should measure with specific height"); - TKUnit.assertEqual(btn.layoutHeight, h, "Star rows should layout with exact length"); + TKUnit.assertAreClose(btn.measureHeight, h, delta, "Auto rows should measure with specific height"); + TKUnit.assertAreClose(btn.layoutHeight, h, delta, "Star rows should layout with exact length"); } if (col.isAuto) { - TKUnit.assertEqual(btn.layoutWidth, btn.getMeasuredWidth(), "Auto columns should layout with measured width"); + TKUnit.assertAreClose(btn.layoutWidth, btn.getMeasuredWidth(), delta, "Auto columns should layout with measured width"); } else if (col.isAbsolute) { - TKUnit.assertEqual(btn.measureWidth, w, "Absolute columns should measure with specific width"); - TKUnit.assertEqual(btn.layoutWidth, w, "Absolute columns should layout with specific width"); + TKUnit.assertAreClose(btn.measureWidth, w, delta, "Absolute columns should measure with specific width"); + TKUnit.assertAreClose(btn.layoutWidth, w, delta, "Absolute columns should layout with specific width"); } else { - TKUnit.assertEqual(btn.measureWidth, w, "Auto columns should should measure with specific width"); - TKUnit.assertEqual(btn.layoutWidth, w, "Star columns should layout with exact length"); + TKUnit.assertAreClose(btn.measureWidth, w, delta, "Auto columns should should measure with specific width"); + TKUnit.assertAreClose(btn.layoutWidth, w, delta, "Star columns should layout with exact length"); } } } @@ -434,10 +439,13 @@ export function test_GridLayout_ColumnWidth_when_4stars_and_width_110() { var cols = rootLayout.getColumns(); - TKUnit.assertEqual(cols[0].actualLength, 28, "Column actual length should be 28"); - TKUnit.assertEqual(cols[1].actualLength, 27, "Column actual length should be 27"); - TKUnit.assertEqual(cols[2].actualLength, 28, "Column actual length should be 28"); - TKUnit.assertEqual(cols[3].actualLength, 27, "Column actual length should be 27"); + var density = utils.layout.getDisplayDensity(); + var delta = Math.floor(density) !== density ? 1.1 : DELTA; + + TKUnit.assertAreClose(cols[0].actualLength, 28, delta, "Column[0] actual length should be 28"); + TKUnit.assertAreClose(cols[1].actualLength, 27, delta, "Column[1] actual length should be 27"); + TKUnit.assertAreClose(cols[2].actualLength, 28, delta, "Column[2] actual length should be 28"); + TKUnit.assertAreClose(cols[3].actualLength, 27, delta, "Column[3] actual length should be 27"); } export function test_GridLayout_set_columns_in_XML() { diff --git a/apps/tests/layouts/layout-helper.ts b/apps/tests/layouts/layout-helper.ts index 06dcac9ab..892567890 100644 --- a/apps/tests/layouts/layout-helper.ts +++ b/apps/tests/layouts/layout-helper.ts @@ -69,19 +69,26 @@ export class MyButton extends button.Button { export function assertMeasure(btn: MyButton, width: number, height: number, name?: string) { var density = utils.layout.getDisplayDensity(); + var delta = Math.floor(density) !== density ? 1.1 : DELTA; name = name ? "[" + name + "]" : ""; - TKUnit.assertAreClose(btn.measureWidth / density, width, DELTA, name + "width"); - TKUnit.assertAreClose(btn.measureHeight / density, height, DELTA, name + "height"); + TKUnit.assertAreClose(Math.round(btn.measureWidth / density), width, delta, name + "width"); + TKUnit.assertAreClose(Math.round(btn.measureHeight / density), height, delta, name + "height"); } export function assertLayout(btn: MyButton, left: number, top: number, width: number, height: number, name?: string): void { var density = utils.layout.getDisplayDensity(); + var delta = Math.floor(density) !== density ? 1.1 : DELTA; name = name ? "[" + name + "]" : ""; - TKUnit.assertAreClose(btn.layoutLeft / density, left, DELTA, name + "left"); - TKUnit.assertAreClose(btn.layoutTop / density, top, DELTA, name + "top"); - TKUnit.assertAreClose(btn.layoutWidth / density, width, DELTA, name + "width"); - TKUnit.assertAreClose(btn.layoutHeight / density, height, DELTA, name + "height"); + TKUnit.assertAreClose(Math.round(btn.layoutLeft / density), left, delta, name + "left"); + TKUnit.assertAreClose(Math.round(btn.layoutTop / density), top, delta, name + "top"); + TKUnit.assertAreClose(Math.round(btn.layoutWidth / density), width, delta, name + "width"); + TKUnit.assertAreClose(Math.round(btn.layoutHeight / density), height, delta, name + "height"); +} + +export function dip(value: number): number { + var density = utils.layout.getDisplayDensity(); + return Math.round(value * density); } \ No newline at end of file diff --git a/apps/tests/layouts/stack-layout-tests.ts b/apps/tests/layouts/stack-layout-tests.ts index 2439a58a3..4fe7bebb9 100644 --- a/apps/tests/layouts/stack-layout-tests.ts +++ b/apps/tests/layouts/stack-layout-tests.ts @@ -240,4 +240,4 @@ export function test_codesnippets() { // ``` // -}; +}; \ No newline at end of file diff --git a/apps/tests/layouts/wrap-layout-tests.ts b/apps/tests/layouts/wrap-layout-tests.ts index 8fa0077ff..16eaa98c2 100644 --- a/apps/tests/layouts/wrap-layout-tests.ts +++ b/apps/tests/layouts/wrap-layout-tests.ts @@ -62,22 +62,20 @@ export function testHorizontalOrientation() { wrapLayout.orientation = enums.Orientation.horizontal; helper.buildUIAndRunTest(wrapLayout, function (views: Array) { TKUnit.waitUntilReady(function isReady() { - return wrapLayout.isLayoutValid; + return wrapLayout.getChildAt(wrapLayout.getChildrenCount() - 1).isLayoutValid; }, 1); - var density = utils.layout.getDisplayDensity(); - var actualValue = viewModule.getViewById(wrapLayout, "0")._getCurrentLayoutBounds(); TKUnit.assertEqual(actualValue.left, 0, "ActualLeft"); TKUnit.assertEqual(actualValue.top, 0, "ActualTop"); - TKUnit.assertEqual(actualValue.right, 100 * density, "ActualRight"); - TKUnit.assertEqual(actualValue.bottom, 100 * density, "ActualBottom"); + TKUnit.assertEqual(actualValue.right, layoutHelper.dip(100), "ActualRight"); + TKUnit.assertEqual(actualValue.bottom, layoutHelper.dip(100), "ActualBottom"); actualValue = viewModule.getViewById(wrapLayout, "1")._getCurrentLayoutBounds(); - TKUnit.assertEqual(actualValue.left, 100 * density, "ActualLeft"); + TKUnit.assertEqual(actualValue.left, layoutHelper.dip(100), "ActualLeft"); TKUnit.assertEqual(actualValue.top, 0, "ActualTop"); - TKUnit.assertEqual(actualValue.right, 200 * density, "ActualRight"); - TKUnit.assertEqual(actualValue.bottom, 100 * density, "ActualBottom"); + TKUnit.assertEqual(actualValue.right, layoutHelper.dip(200), "ActualRight"); + TKUnit.assertEqual(actualValue.bottom, layoutHelper.dip(100), "ActualBottom"); }); } @@ -91,22 +89,20 @@ export function testVerticalOrientation() { // helper.buildUIAndRunTest(wrapLayout, function (views: Array) { TKUnit.waitUntilReady(function isReady() { - return wrapLayout.isLayoutValid; + return wrapLayout.getChildAt(wrapLayout.getChildrenCount() - 1).isLayoutValid; }, 1); - var density = utils.layout.getDisplayDensity(); - var actualValue = viewModule.getViewById(wrapLayout, "0")._getCurrentLayoutBounds(); TKUnit.assertEqual(actualValue.left, 0, "ActualLeft"); TKUnit.assertEqual(actualValue.top, 0, "ActualTop"); - TKUnit.assertEqual(actualValue.right, 100 * density, "ActualRight"); - TKUnit.assertEqual(actualValue.bottom, 100 * density, "ActualBottom"); + TKUnit.assertEqual(actualValue.right, layoutHelper.dip(100), "ActualRight"); + TKUnit.assertEqual(actualValue.bottom, layoutHelper.dip(100), "ActualBottom"); actualValue = viewModule.getViewById(wrapLayout, "1")._getCurrentLayoutBounds(); TKUnit.assertEqual(actualValue.left, 0, "ActualLeft"); - TKUnit.assertEqual(actualValue.top, 100 * density, "ActualTop"); - TKUnit.assertEqual(actualValue.right, 100 * density, "ActualRight"); - TKUnit.assertEqual(actualValue.bottom, 200 * density, "ActualBottom"); + TKUnit.assertEqual(actualValue.top, layoutHelper.dip(100), "ActualTop"); + TKUnit.assertEqual(actualValue.right, layoutHelper.dip(100), "ActualRight"); + TKUnit.assertEqual(actualValue.bottom, layoutHelper.dip(200), "ActualBottom"); }); } @@ -117,22 +113,20 @@ export function testChangeOrientation() { wrapLayout.orientation = enums.Orientation.vertical; TKUnit.waitUntilReady(() => { - return wrapLayout.isLayoutValid; + return wrapLayout.getChildAt(wrapLayout.getChildrenCount() - 1).isLayoutValid; }); - var density = utils.layout.getDisplayDensity(); - var actualValue = viewModule.getViewById(wrapLayout, "0")._getCurrentLayoutBounds(); TKUnit.assertEqual(actualValue.left, 0, "ActualLeft"); TKUnit.assertEqual(actualValue.top, 0, "ActualTop"); - TKUnit.assertEqual(actualValue.right, 100 * density, "ActualRight"); - TKUnit.assertEqual(actualValue.bottom, 100 * density, "ActualBottom"); + TKUnit.assertEqual(actualValue.right, layoutHelper.dip(100), "ActualRight"); + TKUnit.assertEqual(actualValue.bottom, layoutHelper.dip(100), "ActualBottom"); actualValue = viewModule.getViewById(wrapLayout, "1")._getCurrentLayoutBounds(); TKUnit.assertEqual(actualValue.left, 0, "ActualLeft"); - TKUnit.assertEqual(actualValue.top, 100 * density, "ActualTop"); - TKUnit.assertEqual(actualValue.right, 100 * density, "ActualRight"); - TKUnit.assertEqual(actualValue.bottom, 200 * density, "ActualBottom"); + TKUnit.assertEqual(actualValue.top, layoutHelper.dip(100), "ActualTop"); + TKUnit.assertEqual(actualValue.right, layoutHelper.dip(100), "ActualRight"); + TKUnit.assertEqual(actualValue.bottom, layoutHelper.dip(200), "ActualBottom"); }); } @@ -141,12 +135,11 @@ export function testItemWidth() { wrapLayout.itemWidth = 50; helper.buildUIAndRunTest(wrapLayout, function (views: Array) { TKUnit.waitUntilReady(function isReady() { - return wrapLayout.isLayoutValid; + return wrapLayout.getChildAt(wrapLayout.getChildrenCount() - 1).isLayoutValid; }, 1); - var density = utils.layout.getDisplayDensity(); var actualValue = viewModule.getViewById(wrapLayout, "1")._getCurrentLayoutBounds().left; - TKUnit.assertEqual(actualValue, 50 * density, "ActualLeft"); + TKUnit.assertEqual(actualValue, layoutHelper.dip(50), "ActualLeft"); }); } @@ -154,18 +147,17 @@ export function testChangeItemWidth() { var wrapLayout = _createWrapLayoutFunc(2); helper.buildUIAndRunTest(wrapLayout, function (views: Array) { TKUnit.waitUntilReady(() => { - return wrapLayout.isLayoutValid; + return wrapLayout.getChildAt(wrapLayout.getChildrenCount() - 1).isLayoutValid; }); wrapLayout.itemWidth = 50; TKUnit.waitUntilReady(() => { - return wrapLayout.isLayoutValid; + return wrapLayout.getChildAt(wrapLayout.getChildrenCount() - 1).isLayoutValid; }); - var density = utils.layout.getDisplayDensity(); var actualValue = viewModule.getViewById(wrapLayout, "1")._getCurrentLayoutBounds().left; - TKUnit.assertEqual(actualValue, 50 * density, "ActualLeft"); + TKUnit.assertEqual(actualValue, layoutHelper.dip(50), "ActualLeft"); }); } @@ -175,12 +167,11 @@ export function testItemHeight() { wrapLayout.orientation = enums.Orientation.vertical; helper.buildUIAndRunTest(wrapLayout, function (views: Array) { TKUnit.waitUntilReady(function isReady() { - return wrapLayout.isLayoutValid; + return wrapLayout.getChildAt(wrapLayout.getChildrenCount() - 1).isLayoutValid; }, 1); - var density = utils.layout.getDisplayDensity(); var actualValue = viewModule.getViewById(wrapLayout, "1")._getCurrentLayoutBounds().top; - TKUnit.assertEqual(actualValue, 50 * density, "ActualTop"); + TKUnit.assertEqual(actualValue, layoutHelper.dip(50), "ActualTop"); }); } @@ -189,18 +180,17 @@ export function testChangeItemHeight() { wrapLayout.orientation = enums.Orientation.vertical; helper.buildUIAndRunTest(wrapLayout, function (views: Array) { TKUnit.waitUntilReady(() => { - return wrapLayout.isLayoutValid; + return wrapLayout.getChildAt(wrapLayout.getChildrenCount() - 1).isLayoutValid; }); wrapLayout.itemHeight = 50; TKUnit.waitUntilReady(() => { - return wrapLayout.isLayoutValid; + return wrapLayout.getChildAt(wrapLayout.getChildrenCount() - 1).isLayoutValid; }); - var density = utils.layout.getDisplayDensity(); var actualValue = viewModule.getViewById(wrapLayout, "1")._getCurrentLayoutBounds().top; - TKUnit.assertEqual(actualValue, 50 * density, "ActualTop"); + TKUnit.assertEqual(actualValue, layoutHelper.dip(50), "ActualTop"); }); } @@ -216,7 +206,7 @@ export function testPaddingLeftAndTop() { helper.buildUIAndRunTest(wrapLayout, function (views: Array) { TKUnit.waitUntilReady(() => { - return wrapLayout.isLayoutValid; + return wrapLayout.getChildAt(wrapLayout.getChildrenCount() - 1).isLayoutValid; }); layoutHelper.assertLayout(btn, 20, 30, 50, 50); @@ -240,7 +230,7 @@ export function testPaddingRight() { helper.buildUIAndRunTest(wrapLayout, function (views: Array) { TKUnit.waitUntilReady(() => { - return wrapLayout.isLayoutValid; + return wrapLayout.getChildAt(wrapLayout.getChildrenCount() - 1).isLayoutValid; }); layoutHelper.assertMeasure(btn1, 100, 50); @@ -271,14 +261,14 @@ export function testPaddingBottom() { helper.buildUIAndRunTest(wrapLayout, function (views: Array) { TKUnit.waitUntilReady(() => { - return wrapLayout.isLayoutValid; + return wrapLayout.getChildAt(wrapLayout.getChildrenCount() - 1).isLayoutValid; }); layoutHelper.assertMeasure(btn1, 50, 100); layoutHelper.assertMeasure(btn2, 50, 80); // There should be no space left for the button on the first row, - // because fo the padding (200 - 100 - 30) = 70 button wants 80 + // because of the padding (200 - 100 - 30) = 70 button wants 80 layoutHelper.assertLayout(btn1, 0, 0, 50, 100, "button1"); layoutHelper.assertLayout(btn2, 50, 0, 50, 80, "button2"); }); diff --git a/apps/tests/testRunner.ts b/apps/tests/testRunner.ts index 3224a0a07..97b4bffce 100644 --- a/apps/tests/testRunner.ts +++ b/apps/tests/testRunner.ts @@ -71,6 +71,12 @@ if (!isRunningOnEmulator()) { allTests["LOCATION"] = require("./location-tests"); } +import utils = require("utils/utils"); +var density = utils.layout.getDisplayDensity(); +utils.layout.getDisplayDensity = function () { + return Math.round(density * 100) / 100; +} + var testsWithLongDelay = { testLocation: 10000, testLocationOnce: 10000, diff --git a/apps/tests/ui/button/button-tests.ts b/apps/tests/ui/button/button-tests.ts index b3ce9ab10..f5ff60a1a 100644 --- a/apps/tests/ui/button/button-tests.ts +++ b/apps/tests/ui/button/button-tests.ts @@ -194,7 +194,7 @@ var _testNativeFontSizeFromCss = function (views: Array) { page.css = "button { font-size: " + expectedFontSize + "; }"; var actualResult = buttonTestsNative.getNativeFontSize(button); - TKUnit.assert(actualResult === expectedFontSize, "Actual: " + actualResult + "; Expected: " + expectedFontSize); + helper.assertAreClose(actualResult, expectedFontSize, "FontSizeFromCss"); } var _testNativeFontSizeFromLocal = function (views: Array) { @@ -202,7 +202,7 @@ var _testNativeFontSizeFromLocal = function (views: Array) { button.style.fontSize = expectedFontSize; var actualResult = buttonTestsNative.getNativeFontSize(button); - TKUnit.assert(actualResult === expectedFontSize, "Actual: " + actualResult + "; Expected: " + expectedFontSize); + helper.assertAreClose(actualResult, expectedFontSize, "FontSizeFromLocal"); } var expectedColorHex = "#ffff0000"; diff --git a/apps/tests/ui/helper.ts b/apps/tests/ui/helper.ts index a75ec1003..78b932ccd 100644 --- a/apps/tests/ui/helper.ts +++ b/apps/tests/ui/helper.ts @@ -8,6 +8,8 @@ import utils = require("utils/utils"); import types = require("utils/types"); import styling = require("ui/styling"); +var DELTA = 0.1; + export var ASYNC = 0.2; export function do_PageTest(test: (views: Array) => void, content: view.View, secondView: view.View, thirdView: view.View) { @@ -203,3 +205,10 @@ export function goBack(): void { TKUnit.assert(frame.topmost().currentPage.isLoaded, "Current page should be loaded!"); TKUnit.assert(!currentPage.isLoaded, "Previous page should be unloaded!"); } + +export function assertAreClose(actual: number, expected: number, message: string): void { + var density = utils.layout.getDisplayDensity(); + var delta = Math.floor(density) !== density ? 1.1 : DELTA; + + TKUnit.assertAreClose(actual, expected, delta, message); +} \ No newline at end of file diff --git a/apps/tests/ui/label/label-tests.ts b/apps/tests/ui/label/label-tests.ts index e03051e93..563ef4081 100644 --- a/apps/tests/ui/label/label-tests.ts +++ b/apps/tests/ui/label/label-tests.ts @@ -234,10 +234,8 @@ export var test_SetStyleProperties_via_css_class_Native = function () { if (testLabel.android) { actualTextSize = testLabel.android.getTextSize(); - //expSize = helper.convertSizeToDeviceIndependentPixels(testLabel.android.getContext(), fontSize); - var density = utils.layout.getDisplayDensity(); - expSize = fontSize * density; - TKUnit.assert(actualTextSize === expSize, "Expected: " + expSize + ", Actual: " + actualTextSize); + expSize = android.util.TypedValue.applyDimension(android.util.TypedValue.COMPLEX_UNIT_DIP, fontSize, testLabel.android.getContext().getResources().getDisplayMetrics()); + TKUnit.assertEqual(actualTextSize, expSize, "Wrong native FontSize"); actualColors = testLabel.android.getTextColors(); expColor = android.graphics.Color.parseColor(color); @@ -251,7 +249,7 @@ export var test_SetStyleProperties_via_css_class_Native = function () { else { // iOS actualTextSize = testLabel.ios.font.pointSize; - TKUnit.assert(actualTextSize === fontSize, "Expected: " + fontSize + ", Actual: " + actualTextSize); + TKUnit.assertEqual(actualTextSize, fontSize, "Wrong native FontSize"); normalColor = utils.ios.getColor(testLabel.ios.textColor); expColor = new colorModule.Color(color); diff --git a/apps/tests/ui/text-field/text-field-tests.ts b/apps/tests/ui/text-field/text-field-tests.ts index e740219a1..20825b368 100644 --- a/apps/tests/ui/text-field/text-field-tests.ts +++ b/apps/tests/ui/text-field/text-field-tests.ts @@ -296,7 +296,7 @@ export var testNativeFontSizeFromCss = function () { page.css = "textfield { font-size: " + expectedFontSize + "; }"; var actualResult = textFieldTestsNative.getNativeFontSize(textField); - TKUnit.assert(actualResult === expectedFontSize, "Actual: " + actualResult + "; Expected: " + expectedFontSize); + helper.assertAreClose(actualResult, expectedFontSize, "FontSizeFromCss"); }); } @@ -306,7 +306,7 @@ export var testNativeFontSizeFromLocal = function () { textField.style.fontSize = expectedFontSize; var actualResult = textFieldTestsNative.getNativeFontSize(textField); - TKUnit.assert(actualResult === expectedFontSize, "Actual: " + actualResult + "; Expected: " + expectedFontSize); + helper.assertAreClose(actualResult, expectedFontSize, "FontSizeFromLocal"); }); } diff --git a/apps/tests/ui/text-view/text-view-tests.ts b/apps/tests/ui/text-view/text-view-tests.ts index 6b2418081..417d60c3a 100644 --- a/apps/tests/ui/text-view/text-view-tests.ts +++ b/apps/tests/ui/text-view/text-view-tests.ts @@ -65,7 +65,7 @@ export var testSetText = function () { var expectedValue = "Hello, world!"; var actualValue = textViewTestsNative.getNativeText(textView); TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue); - }); + }); } export var testBindTextDirectlyToModel = function () { @@ -225,7 +225,7 @@ export var testNativeFontSizeFromCss = function () { page.css = "textview { font-size: " + expectedFontSize + "; }"; var actualResult = textViewTestsNative.getNativeFontSize(textView); - TKUnit.assert(actualResult === expectedFontSize, "Actual: " + actualResult + "; Expected: " + expectedFontSize); + helper.assertAreClose(actualResult, expectedFontSize, "FontSizeFromCss"); }); } @@ -235,7 +235,7 @@ export var testNativeFontSizeFromLocal = function () { textView.style.fontSize = expectedFontSize; var actualResult = textViewTestsNative.getNativeFontSize(textView); - TKUnit.assert(actualResult === expectedFontSize, "Actual: " + actualResult + "; Expected: " + expectedFontSize); + helper.assertAreClose(actualResult, expectedFontSize, "FontSizeFromLocal"); }); } diff --git a/ui/core/view-common.ts b/ui/core/view-common.ts index 4d0d03acd..eb8daf405 100644 --- a/ui/core/view-common.ts +++ b/ui/core/view-common.ts @@ -600,7 +600,7 @@ export class View extends proxy.ProxyObject implements definition.View { var density = utils.layout.getDisplayDensity(); var margins = horizontal ? view.marginLeft + view.marginRight : view.marginTop + view.marginBottom; - margins = Math.round(margins * density); + margins = Math.floor(margins * density); var resultSize = 0; var resultMode = 0; @@ -608,7 +608,7 @@ export class View extends proxy.ProxyObject implements definition.View { var measureLength = Math.max(0, parentLength - margins); // Convert to pixels. - var childLength = Math.round((horizontal ? view.width : view.height) * density); + var childLength = Math.floor((horizontal ? view.width : view.height) * density); // We want a specific size... let be it. if (!isNaN(childLength)) { diff --git a/ui/core/view.android.ts b/ui/core/view.android.ts index fc44726d5..ca8eab479 100644 --- a/ui/core/view.android.ts +++ b/ui/core/view.android.ts @@ -236,6 +236,27 @@ export class View extends viewCommon.View { return false; } + + public static resolveSizeAndState(size: number, specSize: number, specMode: number, childMeasuredState: number): number { + var result = size; + switch (specMode) { + case utils.layout.UNSPECIFIED: + result = size; + break; + + case utils.layout.AT_MOST: + if (specSize < size) { + result = specSize | utils.layout.MEASURED_STATE_TOO_SMALL; + } + break; + + case utils.layout.EXACTLY: + result = specSize; + break; + } + + return result | (childMeasuredState & utils.layout.MEASURED_STATE_MASK); + } } export class CustomLayoutView extends View implements viewDefinition.CustomLayoutView {