@@ -4,6 +4,7 @@ import helper = require("../helper");
44import labelModule = require( "ui/label" ) ;
55import stackLayoutModule = require( "ui/layouts/stack-layout" ) ;
66import tabViewTestsNative = require( "./tab-view-tests-native" ) ;
7+ import style = require( "ui/styling/style" ) ;
78
89// Using a TabView requires the "ui/tab-view" module.
910// >> article-require-tabview-module
@@ -276,102 +277,58 @@ export class TabViewTest extends testModule.UITest<tabViewModule.TabView> {
276277 TKUnit . assertEqual ( actualNewIndex , expectedNewIndex , "expectedNewIndex" ) ;
277278 }
278279
279- // public testAndroidOffscreenTabLimit_Default = function () {
280- // let tabView = this.testView;
281- // if (!tabView.android){
282- // return;
283- // }
280+ public test_FontIsReappliedWhenTabItemsChange = function ( ) {
281+ // let fontToString = (font: any): string => {
282+ // if (this.testView.ios){
283+ // return font.toString();
284+ // }
285+ // else {
286+ // return `${font.typeface} ${font.size}`;
287+ // }
288+ // }
284289
285- // tabView.androidOffscreenTabLimit = 1;
286- // tabView.items = this._createItems(20);
287- // this.waitUntilTestElementIsLoaded();
288- // for (let index = 0, length = tabView.items.length; index < length; index++){
289- // tabViewTestsNative.selectNativeTab(tabView, index);
290- // TKUnit.waitUntilReady(function () {
291- // return tabView.selectedIndex === index;
292- // }, helper.ASYNC);
293- // }
294-
295- // let viewsWithParent = 0;
296- // let viewsWithoutParent = 0;
297- // for (let i = 0, length = tabView.items.length; i < length; i++){
298- // if (tabView.items[i].view.parent) {
299- // viewsWithParent++;
300- // }
301- // else {
302- // viewsWithoutParent++;
303- // }
304- // }
305-
306- // TKUnit.assertTrue(viewsWithoutParent > viewsWithParent, `Most of the views should be recycled: viewsWithoutParent = ${viewsWithoutParent}; viewsWithParent = ${viewsWithParent};`);
307- // }
308-
309- // public testAndroidOffscreenTabLimit_KeepAllAlive = function () {
310- // let tabView = this.testView;
311- // if (!tabView.android){
312- // return;
313- // }
290+ let assertFontsAreEqual = ( actual : any , expected : any , message ?: string ) => {
291+ if ( this . testView . ios ) {
292+ TKUnit . assertEqual ( actual , expected , message ) ;
293+ }
294+ else {
295+ TKUnit . assertEqual ( actual . typeface , expected . typeface , `${ message } [typeface]` ) ;
296+ TKUnit . assertEqual ( actual . size , expected . size , `${ message } [size]` ) ;
297+ }
298+ }
299+
300+ //console.log(`>>>>>>>>>>>>> CREATE 3 ITEMS`);
301+ this . testView . items = this . _createItems ( 1 ) ;
302+ this . waitUntilTestElementIsLoaded ( ) ;
314303
315- // tabView.androidOffscreenTabLimit = 20;
304+ let originalFont = tabViewTestsNative . getNativeFont ( this . testView ) ;
305+ //console.log(`>>>>>>>>>>>>> originalFont: ${fontToString(originalFont)}`);
306+ let nativeFont : any ;
307+
308+ //console.log(`>>>>>>>>>>>>> PACIFICO`);
309+ this . testView . style . font = "20 Pacifico" ;
310+ nativeFont = tabViewTestsNative . getNativeFont ( this . testView ) ;
311+ //console.log(`>>>>>>>>>>>>> nativeFont: ${fontToString(nativeFont)}`);
316312
317- // tabView.items = this._createItems(20);
318- // this.waitUntilTestElementIsLoaded();
319- // for (let index = 0, length = tabView.items.length; index < length; index++){
320- // tabViewTestsNative.selectNativeTab(tabView, index);
321- // TKUnit.waitUntilReady(function () {
322- // return tabView.selectedIndex === index;
323- // }, helper.ASYNC);
324- // }
325-
326- // for (let i = 0, length = tabView.items.length; i < length; i++){
327- // TKUnit.assertNotNull(tabView.items[i].view.parent, `tabView.items[${i}].view should have a parent!`);
328- // }
329- // }
330-
331- /*
332- public testBindingIsRefreshedWhenTabViewItemIsUnselectedAndThenSelectedAgain() {
333-
334- var viewModel = new observable.Observable();
335- viewModel.set("counter", 0);
336- this.testPage.bindingContext = viewModel;
337-
338- var tabView = this.testView;
339- var items = this._createItems(10);
340-
341- var StackLayout0 = new stackLayoutModule.StackLayout();
342- var label0 = new labelModule.Label();
343- label0.text = "Tab 0";
344- label0.id = "testLabel";
345- label0.bind({ sourceProperty: "counter", targetProperty: "text", twoWay: true });
346- StackLayout0.addChild(label0);
347- var tabEntry0 = new tabViewModule.TabViewItem({
348- title: "Tab 0",
349- view: StackLayout0
350- });
351- items.push(tabEntry0);
352-
353- tabView.items = items;
354- tabView.selectedIndex = 10;
355- TKUnit.waitUntilReady(function () {
356- return tabViewTestsNative.getNativeSelectedIndex(tabView) === tabView.selectedIndex;
357- }, helper.ASYNC);
358-
359- TKUnit.assertEqual(label0.text, 0, "binding is not working!");
360-
361- tabView.selectedIndex = 0;
362- TKUnit.waitUntilReady(function () {
363- return tabViewTestsNative.getNativeSelectedIndex(tabView) === tabView.selectedIndex;
364- }, helper.ASYNC);
365-
366- tabView.selectedIndex = 10;
367- TKUnit.waitUntilReady(function () {
368- return tabViewTestsNative.getNativeSelectedIndex(tabView) === tabView.selectedIndex;
369- }, helper.ASYNC);
370-
371- var expectedValue = 5;
372- viewModel.set("counter", expectedValue);
373- TKUnit.assertEqual(label0.text, expectedValue, "binding is not working!");
374- }*/
313+ //console.log(`>>>>>>>>>>>>> CREATE 3 ITEMS`);
314+ this . testView . items = this . _createItems ( 2 ) ;
315+ assertFontsAreEqual ( tabViewTestsNative . getNativeFont ( this . testView ) , nativeFont , "Font must be 20 Pacifico after rebinding items." ) ;
316+ //console.log(`>>>>>>>>>>>>> nativeFont: ${fontToString(nativeFont)}`);
317+
318+ //console.log(`>>>>>>>>>>>>> MONOSPACE;`);
319+ this . testView . style . font = "bold 12 monospace" ;
320+ nativeFont = tabViewTestsNative . getNativeFont ( this . testView ) ;
321+ //console.log(`>>>>>>>>>>>>> nativeFont: ${fontToString(nativeFont)}`);
322+
323+ //console.log(`>>>>>>>>>>>>> CREATE 3 ITEMS`);
324+ this . testView . items = this . _createItems ( 3 ) ;
325+ assertFontsAreEqual ( tabViewTestsNative . getNativeFont ( this . testView ) , nativeFont , "Font must be bold 12 monospace after rebinding items." ) ;
326+ //console.log(`>>>>>>>>>>>>> nativeFont: ${fontToString(nativeFont)}`);
327+
328+ //console.log(`>>>>>>>>>>>>> RESET`);
329+ this . testView . style . _resetValue ( style . fontInternalProperty ) ;
330+ assertFontsAreEqual ( tabViewTestsNative . getNativeFont ( this . testView ) , originalFont , "Font must be the original one after resetting the style." ) ;
331+ }
375332}
376333
377334export function createTestCase ( ) : TabViewTest {
0 commit comments