Merge pull request #1348 from NativeScript/hhristov/percent-layouts-fix

Hhristov/percent layouts fix
This commit is contained in:
Hristo Hristov
2016-01-11 13:48:20 +02:00
11 changed files with 161 additions and 79 deletions

View File

@@ -29,11 +29,11 @@ export var test_getString = function (done: (err: Error, res?: string) => void)
done(null);
// </hide>
}, function (e) {
//// Argument (e) is Error!
// <hide>
done(e);
// </hide>
});
//// Argument (e) is Error!
// <hide>
done(e);
// </hide>
});
// ```
// </snippet>
};
@@ -90,12 +90,12 @@ export var test_getJSON = function (done) {
done(null);
// </hide>
}, function (e) {
//// Argument (e) is Error!
//console.log(e);
// <hide>
done(e);
// </hide>
});
//// Argument (e) is Error!
//console.log(e);
// <hide>
done(e);
// </hide>
});
// ```
// </snippet>
};
@@ -144,8 +144,8 @@ export var test_getJSONP = function (done) {
}
done(null);
}, function (e) {
done(e);
});
done(e);
});
};
export var test_getJSON_fail_when_result_is_not_JSONP = function (done) {
@@ -186,11 +186,11 @@ export var test_getImage = function (done) {
}
// </hide>
}, function (e) {
//// Argument (e) is Error!
// <hide>
done(e);
// </hide>
});
//// Argument (e) is Error!
// <hide>
done(e);
// </hide>
});
// ```
// </snippet>
};
@@ -278,11 +278,11 @@ export var test_request_responseStatusCodeShouldBeDefined = function (done) {
}
// </hide>
}, function (e) {
//// Argument (e) is Error!
// <hide>
done(e);
// </hide>
});
//// Argument (e) is Error!
// <hide>
done(e);
// </hide>
});
// ```
// </snippet>
};
@@ -309,11 +309,11 @@ export var test_request_responseHeadersShouldBeDefined = function (done) {
}
// </hide>
}, function (e) {
//// Argument (e) is Error!
// <hide>
done(e);
// </hide>
});
//// Argument (e) is Error!
// <hide>
done(e);
// </hide>
});
// ```
// </snippet>
};
@@ -341,11 +341,11 @@ export var test_request_responseContentShouldBeDefined = function (done) {
}
// </hide>
}, function (e) {
//// Argument (e) is Error!
// <hide>
done(e);
// </hide>
});
//// Argument (e) is Error!
// <hide>
done(e);
// </hide>
});
// ```
// </snippet>
};
@@ -363,8 +363,8 @@ export var test_request_responseContentToStringShouldReturnString = function (do
done(err);
}
}, function (e) {
done(e);
});
done(e);
});
};
export var test_request_responseContentToJSONShouldReturnJSON = function (done) {
@@ -380,8 +380,8 @@ export var test_request_responseContentToJSONShouldReturnJSON = function (done)
done(err);
}
}, function (e) {
done(e);
});
done(e);
});
};
export var test_request_responseContentToImageShouldReturnCorrectImage = function (done) {
@@ -399,8 +399,8 @@ export var test_request_responseContentToImageShouldReturnCorrectImage = functio
}
});
}, function (e) {
done(e);
});
done(e);
});
};
export var test_request_headersSentAndReceivedProperly = function (done) {
@@ -420,8 +420,8 @@ export var test_request_headersSentAndReceivedProperly = function (done) {
done(err);
}
}, function (e) {
done(e);
});
done(e);
});
};
export var test_request_contentSentAndReceivedProperly = function (done) {
@@ -442,8 +442,8 @@ export var test_request_contentSentAndReceivedProperly = function (done) {
done(err);
}
}, function (e) {
done(e);
});
done(e);
});
};
export var test_request_FormDataContentSentAndReceivedProperly = function (done) {
@@ -468,8 +468,8 @@ export var test_request_FormDataContentSentAndReceivedProperly = function (done)
done(err);
}
}, function (e) {
done(e);
});
done(e);
});
};
export var test_request_NonStringHeadersSentAndReceivedProperly = function (done) {
@@ -492,8 +492,8 @@ export var test_request_NonStringHeadersSentAndReceivedProperly = function (done
done(err);
}
}, function (e) {
done(e);
});
done(e);
});
};
export var test_request_jsonAsContentSentAndReceivedProperly = function (done) {
@@ -521,27 +521,29 @@ export var test_request_jsonAsContentSentAndReceivedProperly = function (done) {
// </hide>
// console.log(result);
}, function (e) {
// <hide>
done(e);
// </hide>
// console.log("Error occurred " + e);
});
// <hide>
done(e);
// </hide>
// console.log("Error occurred " + e);
});
// ```
// </snippet>
};
export var test_getString_FromVariousUrls_ShouldWorkProperly = function (done) {
var urls = [
"https://it-ebooks-api.info/v1/book/1615005640",
"https://www.telerik.com",
"https://spreadsheets.google.com/tq?key=1tJ64Y8hje0ui4ap9U33h3KWwpxT_-JuVMSZzxD2Er8k",
"https://chase.arborgoldcloud.net/mobilehandler/mobiledatahandler.ashx?ProcedureName=MEstimGetJobListSpeed&@prmSalesRep=%&@prmStartDate=11/1/2015&@prmEndDate=12/8/2015&@prmStatusFilter=2"
];
export var test_getString_1 = function (done) {
doRequest("https://it-ebooks-api.info/v1/book/1615005640", done);
};
var i: number;
for (i = 0; i < urls.length; i++) {
doRequest(urls[i], done);
}
export var test_getString_2 = function (done) {
doRequest("https://www.telerik.com", done);
};
export var test_getString_3 = function (done) {
doRequest("https://spreadsheets.google.com/tq?key=1tJ64Y8hje0ui4ap9U33h3KWwpxT_-JuVMSZzxD2Er8k", done);
};
export var test_getString_4 = function (done) {
doRequest("https://chase.arborgoldcloud.net/mobilehandler/mobiledatahandler.ashx?ProcedureName=MEstimGetJobListSpeed&@prmSalesRep=%&@prmStartDate=11/1/2015&@prmEndDate=12/8/2015&@prmStatusFilter=2", done);
};
function doRequest(url: string, done: Function) {
@@ -554,6 +556,6 @@ function doRequest(url: string, done: Function) {
done(err);
}
}, function (e) {
done(e);
});
done(e);
});
};

View File

@@ -5,6 +5,7 @@ import labelModule = require("ui/label");
import helper = require("../ui/helper");
import colorModule = require("color");
import layoutHelper = require("./layout-helper");
import commonTests = require("./common-layout-tests");
// <snippet module="ui/layouts/absolute-layout" title="absolute-layout">
// # AbsoluteLayout
@@ -120,6 +121,10 @@ export class AbsoluteLayoutTest extends testModule.UITest<absoluteLayoutModule.A
TKUnit.assertEqual(btn.getMeasuredWidth(), 100, "Button MeasuredWidth incorrect");
TKUnit.assertEqual(btn.getMeasuredHeight(), 100, "Button MeasuredHeight incorrect");
}
public test_percent_support_nativeLayoutParams_are_correct() {
commonTests.percent_support_nativeLayoutParams_are_correct(this);
}
}
export function createTestCase(): AbsoluteLayoutTest {

View File

@@ -4,6 +4,75 @@ import enums = require("ui/enums");
import testModule = require("../ui-test");
import {LayoutBase} from "ui/layouts/layout-base";
import {widthProperty} from "ui/styling/style"
import platform = require("platform");
function getNativeLayoutParams(nativeView: android.view.View): org.nativescript.widgets.CommonLayoutParams {
var lp = <org.nativescript.widgets.CommonLayoutParams>nativeView.getLayoutParams();
if (!(lp instanceof org.nativescript.widgets.CommonLayoutParams)) {
lp = new org.nativescript.widgets.CommonLayoutParams();
}
return lp;
}
export function percent_support_nativeLayoutParams_are_correct(test: testModule.UITest<LayoutBase>) {
if (platform.device.os !== platform.platformNames.android) {
return;
}
let layout = test.testView;
layout.width = layoutHelper.dp(200);
layout.height = layoutHelper.dp(200);
let btn = new layoutHelper.MyButton();
btn.width = layoutHelper.dp(100);
btn.height = layoutHelper.dp(100);
btn.margin = "10%";
layout.addChild(btn);
test.waitUntilTestElementLayoutIsValid();
let lp = getNativeLayoutParams(btn._nativeView);
TKUnit.assertEqual(lp.width, 100, "width");
TKUnit.assertEqual(lp.widthPercent, -1, "widthPercent");
TKUnit.assertEqual(lp.height, 100, "height");
TKUnit.assertEqual(lp.heightPercent, -1, "heightPercent");
TKUnit.assertEqual(lp.topMargin, 0, "topMargin");
TKUnit.assertTrue(lp.topMarginPercent > 0, "topMarginPercent");
TKUnit.assertEqual(lp.leftMargin, 0, "leftMargin");
TKUnit.assertTrue(lp.leftMarginPercent > 0, "leftMarginPercent");
TKUnit.assertEqual(lp.rightMargin, 0, "rightMargin");
TKUnit.assertTrue(lp.rightMarginPercent > 0, "rightMarginPercent");
TKUnit.assertEqual(lp.bottomMargin, 0, "bottomMargin");
TKUnit.assertTrue(lp.bottomMarginPercent > 0, "bottomMarginPercent");
(<any>btn).width = "50%";
(<any>btn).height = "50%";
test.waitUntilTestElementLayoutIsValid();
TKUnit.assertEqual(lp.width, -1, "width");
TKUnit.assertEqual(lp.widthPercent, 0.5, "widthPercent");
TKUnit.assertEqual(lp.height, -1, "height");
TKUnit.assertEqual(lp.heightPercent, 0.5, "heightPercent");
btn.margin = "0";
btn.height = Number.NaN;
(<any>btn.style)._resetValue(widthProperty);
test.waitUntilTestElementLayoutIsValid();
TKUnit.assertEqual(lp.width, -1, "width");
TKUnit.assertEqual(lp.widthPercent, -1, "widthPercent");
TKUnit.assertEqual(lp.height, -1, "height");
TKUnit.assertEqual(lp.heightPercent, -1, "heightPercent");
TKUnit.assertEqual(lp.topMargin, 0, "topMargin");
TKUnit.assertEqual(lp.topMarginPercent, -1, "topMarginPercent");
TKUnit.assertEqual(lp.leftMargin, 0, "leftMargin");
TKUnit.assertEqual(lp.leftMarginPercent, -1, "leftMarginPercent");
TKUnit.assertEqual(lp.rightMargin, 0, "rightMargin");
TKUnit.assertEqual(lp.rightMarginPercent, -1, "rightMarginPercent");
TKUnit.assertEqual(lp.bottomMargin, 0, "bottomMargin");
TKUnit.assertEqual(lp.bottomMarginPercent, -1, "bottomMarginPercent");
}
export function percent_support_test(test: testModule.UITest<LayoutBase>) {
let layout: LayoutBase = test.testView;

View File

@@ -195,6 +195,10 @@ export class DockLayoutTest extends testModule.UITest<DockLayout> {
public test_percent_support() {
commonTests.percent_support_test(this);
}
public test_percent_support_nativeLayoutParams_are_correct() {
commonTests.percent_support_nativeLayoutParams_are_correct(this);
}
}
export function createTestCase(): DockLayoutTest {

View File

@@ -646,6 +646,10 @@ export class GridLayoutTest extends testModule.UITest<layout.GridLayout> {
public test_percent_support() {
commonTests.percent_support_test(this);
}
public test_percent_support_nativeLayoutParams_are_correct() {
commonTests.percent_support_nativeLayoutParams_are_correct(this);
}
}
export function createTestCase(): GridLayoutTest {

View File

@@ -312,6 +312,10 @@ export class StackLayoutTest extends testModule.UITest<StackLayout> {
TKUnit.assertEqual(bounds.right, 120, "BottomRight layout RIGHT incorrect");
TKUnit.assertEqual(bounds.bottom, 180, "BottomRight layout BOTTOM incorrect");
}
public test_percent_support_nativeLayoutParams_are_correct() {
commonTests.percent_support_nativeLayoutParams_are_correct(this);
}
}
export function createTestCase(): StackLayoutTest {

View File

@@ -279,6 +279,10 @@ export class WrapLayoutTest extends testModule.UITest<wrapLayoutModule.WrapLayou
TKUnit.assertEqual(bounds.right, 120, "BottomRight layout RIGHT incorrect");
TKUnit.assertEqual(bounds.bottom, 120, "BottomRight layout BOTTOM incorrect");
}
public test_percent_support_nativeLayoutParams_are_correct() {
commonTests.percent_support_nativeLayoutParams_are_correct(this);
}
}
export function createTestCase(): WrapLayoutTest {

View File

@@ -62,7 +62,7 @@
}
export enum Orientation {
horzontal,
horizontal,
vertical
}

View File

@@ -570,17 +570,7 @@ export class ViewStyler implements style.Styler {
}
private static resetNativeLayoutParamsProperty(view: View, nativeValue: any): void {
var nativeView: android.view.View = view._nativeView;
var lp = ViewStyler.getNativeLayoutParams(nativeView);
lp.width = -1;
lp.height = -1;
lp.leftMargin = 0;
lp.topMargin = 0;
lp.rightMargin = 0;
lp.bottomMargin = 0;
lp.gravity = android.view.Gravity.FILL_HORIZONTAL | android.view.Gravity.FILL_VERTICAL;
nativeView.setLayoutParams(lp);
ViewStyler.setNativeLayoutParamsProperty(view, style.nativeLayoutParamsProperty.metadata.defaultValue)
}
private static setPaddingProperty(view: View, newValue: Thickness) {

View File

@@ -10,7 +10,7 @@ export class StackLayout extends common.StackLayout {
static setNativeOrientationProperty(data: dependencyObservable.PropertyChangeData): void {
var stackLayout = <StackLayout>data.object;
var nativeView = stackLayout._nativeView;
nativeView.setOrientation(data.newValue === enums.Orientation.vertical ? org.nativescript.widgets.Orientation.vertical : org.nativescript.widgets.Orientation.horzontal);
nativeView.setOrientation(data.newValue === enums.Orientation.vertical ? org.nativescript.widgets.Orientation.vertical : org.nativescript.widgets.Orientation.horizontal);
}
private _layout: org.nativescript.widgets.StackLayout;

View File

@@ -11,7 +11,7 @@ export class WrapLayout extends common.WrapLayout {
static setNativeOrientationProperty(data: dependencyObservable.PropertyChangeData): void {
var wrapLayout = <WrapLayout>data.object;
var nativeView = wrapLayout._nativeView;
nativeView.setOrientation(data.newValue === enums.Orientation.vertical ? org.nativescript.widgets.Orientation.vertical : org.nativescript.widgets.Orientation.horzontal);
nativeView.setOrientation(data.newValue === enums.Orientation.vertical ? org.nativescript.widgets.Orientation.vertical : org.nativescript.widgets.Orientation.horizontal);
}
static setNativeItemWidthProperty(data: dependencyObservable.PropertyChangeData): void {