import * as TKUnit from "../TKUnit"; import * as helper from "../ui/helper"; import * as platform from "tns-core-modules/platform"; import * as trace from "tns-core-modules/trace"; import { Color } from "tns-core-modules/color"; import { NavigationEntry, NavigationTransition, topmost as topmostFrame } from "tns-core-modules/ui/frame"; import { Page } from "tns-core-modules/ui/page"; import { AnimationCurve } from "tns-core-modules/ui/enums" function _testTransition(navigationTransition: NavigationTransition) { var testId = `Transition[${JSON.stringify(navigationTransition)}]`; if (trace.isEnabled()) { trace.write(`Testing ${testId}`, trace.categories.Test); } var navigationEntry: NavigationEntry = { create: function (): Page { let page = new Page(); page.id = testId; page.style.backgroundColor = new Color(255, Math.round(Math.random() * 255), Math.round(Math.random() * 255), Math.round(Math.random() * 255)); return page; }, animated: true, transition: navigationTransition } helper.navigateWithEntry(navigationEntry); TKUnit.wait(0.100); } // Extremely slow. Run only if needed. export var test_Transitions = function () { let topmost = topmostFrame(); let mainTestPage = topmost.currentPage; let mainPageFactory = function (): Page { return mainTestPage; }; helper.navigate(() => { var page = new Page(); page.id = "TransitionsTestPage_MAIN" page.style.backgroundColor = new Color(255, Math.round(Math.random() * 255), Math.round(Math.random() * 255), Math.round(Math.random() * 255)); return page; }); var transitions; var testCustomTransition = true; if (platform.device.os === platform.platformNames.ios) { transitions = ["curl"]; } else { var _sdkVersion = parseInt(platform.device.sdkVersion); transitions = _sdkVersion >= 21 ? ["explode"] : []; if (_sdkVersion === 23) { // Apparently, there is some kind of Android 6.0 (API 23) bug when using ObjectAnimators // http://stackoverflow.com/questions/33188485/resultindex-is-1-the-polygon-must-be-invalid-adter-addview testCustomTransition = false; } } transitions = transitions.concat(["fade", "flip", "slide"]); var durations = [undefined, 10]; var curves = [undefined, AnimationCurve.easeIn]; // Built-in transitions transitions.forEach(name => { durations.forEach(duration => { curves.forEach(curve => { _testTransition({ name, duration, curve }); }); }); }); // Custom transition if (testCustomTransition) { var customTransitionModule = require("./custom-transition"); var customTransition = new customTransitionModule.CustomTransition(); _testTransition({ instance: customTransition }); } helper.navigateWithEntry({ create: mainPageFactory, clearHistory: true, animated: false }); }