From 9f7ce6fc6022db29f0d148f52256d8cb517237e3 Mon Sep 17 00:00:00 2001 From: zh-m Date: Tue, 10 Jan 2017 18:05:52 +0200 Subject: [PATCH] Fix order property is not respected if set more than once --- tests/app/ui/layouts/flexbox-layout-tests.ts | 68 ++++++++- .../flexbox-layout/flexbox-layout-common.ts | 2 + .../flexbox-layout/flexbox-layout.android.ts | 7 + .../flexbox-layout/flexbox-layout.ios.ts | 135 ++++++++++-------- .../android/org.nativescript.widgets.d.ts | 2 + 5 files changed, 155 insertions(+), 59 deletions(-) diff --git a/tests/app/ui/layouts/flexbox-layout-tests.ts b/tests/app/ui/layouts/flexbox-layout-tests.ts index fd8dff6b2..be193efa2 100644 --- a/tests/app/ui/layouts/flexbox-layout-tests.ts +++ b/tests/app/ui/layouts/flexbox-layout-tests.ts @@ -184,8 +184,6 @@ const noop = () => { // no operation }; -// TODO: Order tests! - function test(ui: () => U, setup: (ui: U) => void, test: (ui: U) => void): () => void { return () => { let i = ui(); @@ -1607,6 +1605,72 @@ export const testFlexBasisPercent_nowrap_flexDirection_column = test( } ); +let activity_order_test= () => getViews( + ` + ` +); + +export const testOrder = test( + activity_order_test, + noop, + ({root, flexbox, text1, text2, text3}) => { + equal(FlexboxLayout.getOrder(text1), 2); + equal(FlexboxLayout.getOrder(text2), 3); + equal(FlexboxLayout.getOrder(text3), 1); + } +); + +let activity_order_set_runtime_test= () => getViews( + ` + ` +); + +export const testOrder_set_runtime = test( + activity_order_set_runtime_test, + ({flexbox, text1, text2, text3}) => { + FlexboxLayout.setOrder(text1, 3); + FlexboxLayout.setOrder(text2, 1); + FlexboxLayout.setOrder(text3, 2); + }, + ({root, flexbox, text1, text2, text3}) => { + equal(FlexboxLayout.getOrder(text1), 3); + equal(FlexboxLayout.getOrder(text2), 1); + equal(FlexboxLayout.getOrder(text3), 2); + } +); + +export const testOrder_changed_runtime = test( + activity_order_set_runtime_test, + ({flexbox, text1, text2, text3}) => { + FlexboxLayout.setOrder(text1, 3); + FlexboxLayout.setOrder(text2, 1); + FlexboxLayout.setOrder(text3, 2); + + helper.buildUIAndRunTest(flexbox, () => { + waitUntilTestElementLayoutIsValid(flexbox); + FlexboxLayout.setOrder(text1, 1); + FlexboxLayout.setOrder(text2, 2); + FlexboxLayout.setOrder(text3, 3); + }); + }, + ({root, flexbox, text1, text2, text3}) => { + equal(FlexboxLayout.getOrder(text1), 1); + equal(FlexboxLayout.getOrder(text2), 2); + equal(FlexboxLayout.getOrder(text3), 3); + + // verify views are visually displayed at the right position, not only that their order property is correct. + equal(text1, flexbox.getChildAt(0)); + equal(text2, flexbox.getChildAt(1)); + equal(text3, flexbox.getChildAt(2)); + } +); + let activity_minwidth_test = () => getViews( `