diff --git a/apps/tests/layouts/absolute-layout-tests.ts b/apps/tests/layouts/absolute-layout-tests.ts
index c85b61705..700664ee3 100644
--- a/apps/tests/layouts/absolute-layout-tests.ts
+++ b/apps/tests/layouts/absolute-layout-tests.ts
@@ -3,7 +3,6 @@ import viewModule = require("ui/core/view");
import labelModule = require("ui/label");
import helper = require("../ui/helper");
import colorModule = require("color");
-import utils = require("utils/utils");
import layoutHelper = require("./layout-helper");
//
@@ -51,15 +50,13 @@ export var testAll = function () {
return absoluteLayout.isLayoutValid;
}, 1);
- var density = utils.layout.getDisplayDensity();
-
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..2cc02862c 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.floor(btn.measureWidth / density), width, delta, name + "width");
+ TKUnit.assertAreClose(Math.floor(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.floor(btn.layoutLeft / density), left, delta, name + "left");
+ TKUnit.assertAreClose(Math.floor(btn.layoutTop / density), top, delta, name + "top");
+ TKUnit.assertAreClose(Math.floor(btn.layoutWidth / density), width, delta, name + "width");
+ TKUnit.assertAreClose(Math.floor(btn.layoutHeight / density), height, delta, name + "height");
+}
+
+export function dip(value: number): number {
+ var density = utils.layout.getDisplayDensity();
+ return Math.floor(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..9e252ab0a 100644
--- a/apps/tests/layouts/wrap-layout-tests.ts
+++ b/apps/tests/layouts/wrap-layout-tests.ts
@@ -2,7 +2,6 @@
import viewModule = require("ui/core/view");
import labelModule = require("ui/label");
import helper = require("../ui/helper");
-import utils = require("utils/utils");
import layoutHelper = require("./layout-helper");
//
@@ -62,22 +61,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 +88,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 +112,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 +134,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 +146,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 +166,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 +179,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 +205,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 +229,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 +260,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 {