mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
Change image.android to use the new image.Cache class from widgets. (#2832)
* Change image.android to use the new image.Cahce class from widgets. * fix npm scripts * npm tsc will compile all so no need for npm run dev-tsc-tests * fix tslint error * image-tests use memory only cache. * fix exception in image.android * Change image-tests so that Image won't be GC immediately. * Change cacheMode to enum
This commit is contained in:
@@ -214,7 +214,7 @@ export function assertNotEqual(actual: any, expected: any, message?: string) {
|
||||
}
|
||||
}
|
||||
|
||||
export function assertEqual(actual: any, expected: any, message?: string) {
|
||||
export function assertEqual<T extends { equals?(arg: T): boolean }>(actual: T, expected: T, message?: string) {
|
||||
if (!types.isNullOrUndefined(actual)
|
||||
&& !types.isNullOrUndefined(expected)
|
||||
&& types.getClass(actual) === types.getClass(expected)
|
||||
@@ -222,11 +222,11 @@ export function assertEqual(actual: any, expected: any, message?: string) {
|
||||
|
||||
// Use the equals method
|
||||
if (!actual.equals(expected)) {
|
||||
throw new Error(`${message} Actual: <${actual}>(${typeof(actual)}). Expected: <${expected}>(${typeof(expected)})`);
|
||||
throw new Error(`${message} Actual: <${actual}>(${typeof (actual)}). Expected: <${expected}>(${typeof (expected)})`);
|
||||
}
|
||||
}
|
||||
else if (actual !== expected) {
|
||||
throw new Error(`${message} Actual: <${actual}>(${typeof(actual)}). Expected: <${expected}>(${typeof(expected)})`);
|
||||
throw new Error(`${message} Actual: <${actual}>(${typeof (actual)}). Expected: <${expected}>(${typeof (expected)})`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -459,7 +459,7 @@ var doModalAndroid = function (quitLoop: () => boolean, timeoutSec: number) {
|
||||
} else {
|
||||
target.dispatchMessage(msg);
|
||||
}
|
||||
|
||||
|
||||
if (sdkVersion < 21) {//https://code.google.com/p/android-test-kit/issues/detail?id=84
|
||||
msg.recycle();
|
||||
}
|
||||
|
||||
@@ -501,11 +501,11 @@ export function test_ObservableShouldEmitPropertyChangeWithSameObjectUsingWrappe
|
||||
export function test_CorrectEventArgsWhenWrappedValueIsUsed() {
|
||||
let testArray = [1];
|
||||
let testObservable = new observable.Observable({ "property1": testArray});
|
||||
let actualArgsValue = 0;
|
||||
let actualArgsValue;
|
||||
let propertyChangeHandler = function (args) {
|
||||
actualArgsValue = args.value;
|
||||
|
||||
}
|
||||
|
||||
testObservable.on(observable.Observable.propertyChangeEvent, propertyChangeHandler);
|
||||
testArray.push(2);
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import {Image} from "ui/image";
|
||||
import {StackLayout} from "ui/layouts/stack-layout";
|
||||
import {GridLayout} from "ui/layouts/grid-layout";
|
||||
import {isIOS} from "platform";
|
||||
import {PropertyChangeData} from "data/observable";
|
||||
import { Image } from "ui/image";
|
||||
import { StackLayout } from "ui/layouts/stack-layout";
|
||||
import { GridLayout } from "ui/layouts/grid-layout";
|
||||
import { isIOS, isAndroid } from "platform";
|
||||
import { PropertyChangeData } from "data/observable";
|
||||
import utils = require("utils/utils");
|
||||
|
||||
// import {target} from "../../TKUnit";
|
||||
@@ -24,6 +24,11 @@ import color = require("color");
|
||||
|
||||
var imagePath = fs.path.join(__dirname, "../../logo.png");
|
||||
|
||||
if (isAndroid) {
|
||||
var imageModule = require("ui/image");
|
||||
imageModule.currentMode = imageModule.CacheMode.memory; // use memory cache only.
|
||||
}
|
||||
|
||||
export var test_Image_Members = function () {
|
||||
var image = new ImageModule.Image();
|
||||
TKUnit.assert(types.isUndefined(image.src), "Image.src is defined");
|
||||
@@ -63,10 +68,10 @@ function runImageTest(done, image: ImageModule.Image, src: string) {
|
||||
testModel.off(ObservableModule.Observable.propertyChangeEvent, handler);
|
||||
|
||||
try {
|
||||
let imageIsLoaded = !!image.imageSource;
|
||||
let imageIsLoaded = isIOS ? !!image.imageSource : true;
|
||||
TKUnit.assertTrue(!image.isLoading, "Image.isLoading should be false.");
|
||||
TKUnit.assertTrue(!testModel.get("imageIsLoading"), "imageIsLoading on viewModel should be false.");
|
||||
TKUnit.assertTrue(imageIsLoaded, "imageIsLoading should be true.");
|
||||
TKUnit.assertTrue(imageIsLoaded, "imageSource should be set.");
|
||||
if (done) {
|
||||
done(null);
|
||||
}
|
||||
@@ -86,6 +91,8 @@ function runImageTest(done, image: ImageModule.Image, src: string) {
|
||||
twoWay: true
|
||||
}, testModel);
|
||||
|
||||
let page = helper.getCurrentPage();
|
||||
page.content = image;
|
||||
image.src = src;
|
||||
testModel.on(ObservableModule.Observable.propertyChangeEvent, handler);
|
||||
if (done) {
|
||||
@@ -102,6 +109,7 @@ export var test_SettingImageSrc = function (done) {
|
||||
var image = new ImageModule.Image();
|
||||
image.src = "https://www.google.com/images/errors/logo_sm_2.png";
|
||||
// << img-create-src
|
||||
(<any>image).useCache = false;
|
||||
runImageTest(done, image, image.src)
|
||||
}
|
||||
|
||||
@@ -125,6 +133,7 @@ export var test_SettingImageSrcToDataURI = function () {
|
||||
|
||||
export var test_SettingImageSrcToFileWithinAppAsync = function (done) {
|
||||
var image = new ImageModule.Image();
|
||||
(<any>image).useCache = false;
|
||||
image.loadMode = "async";
|
||||
image.src = "~/logo.png";
|
||||
runImageTest(done, image, image.src)
|
||||
@@ -140,7 +149,7 @@ export var test_SettingImageSrcToDataURIAsync = function (done) {
|
||||
// NOTE: This tests that setting multiple times src will not show the imageSource of a previous src value.
|
||||
// It however will never be reliable as to properly detect failure we need to use somewhat large timeout
|
||||
// waiting for imageSource to be set to the wrong value.
|
||||
export var __test_SettingImageSrcTwiceMustNotMismatch = function(done) {
|
||||
export var __test_SettingImageSrcTwiceMustNotMismatch = function (done) {
|
||||
var image = new Image();
|
||||
image.on("propertyChange", (args: PropertyChangeData) => {
|
||||
if (args.propertyName === "isLoading" && args.value === false) {
|
||||
@@ -170,7 +179,7 @@ export var test_SettingStretch_AspectFit = function () {
|
||||
// << img-set-stretch
|
||||
|
||||
var testFunc = function (views: Array<ViewModule.View>) {
|
||||
var testImage = <ImageModule.Image> views[0];
|
||||
var testImage = <ImageModule.Image>views[0];
|
||||
|
||||
if (image.android) {
|
||||
var actualScaleType = testImage.android.getScaleType();
|
||||
@@ -192,7 +201,7 @@ export var test_SettingStretch_Default = function () {
|
||||
image.imageSource = ImageSourceModule.fromFile(imagePath);
|
||||
|
||||
var testFunc = function (views: Array<ViewModule.View>) {
|
||||
var testImage = <ImageModule.Image> views[0];
|
||||
var testImage = <ImageModule.Image>views[0];
|
||||
|
||||
if (image.android) {
|
||||
var actualScaleType = testImage.android.getScaleType();
|
||||
@@ -215,7 +224,7 @@ export var test_SettingStretch_AspectFill = function () {
|
||||
image.stretch = enumsModule.Stretch.aspectFill;
|
||||
|
||||
var testFunc = function (views: Array<ViewModule.View>) {
|
||||
var testImage = <ImageModule.Image> views[0];
|
||||
var testImage = <ImageModule.Image>views[0];
|
||||
|
||||
if (image.android) {
|
||||
var actualScaleType = testImage.android.getScaleType();
|
||||
@@ -238,7 +247,7 @@ export var test_SettingStretch_Fill = function () {
|
||||
image.stretch = enumsModule.Stretch.fill;
|
||||
|
||||
var testFunc = function (views: Array<ViewModule.View>) {
|
||||
var testImage = <ImageModule.Image> views[0];
|
||||
var testImage = <ImageModule.Image>views[0];
|
||||
|
||||
if (image.android) {
|
||||
var actualScaleType = testImage.android.getScaleType();
|
||||
@@ -261,7 +270,7 @@ export var test_SettingStretch_none = function () {
|
||||
image.stretch = enumsModule.Stretch.none;
|
||||
|
||||
var testFunc = function (views: Array<ViewModule.View>) {
|
||||
var testImage = <ImageModule.Image> views[0];
|
||||
var testImage = <ImageModule.Image>views[0];
|
||||
|
||||
if (image.android) {
|
||||
var actualScaleType = testImage.android.getScaleType();
|
||||
@@ -284,21 +293,21 @@ function ios<T>(func: T): T {
|
||||
|
||||
export var test_SettingImageSourceWhenSizedToParentDoesNotRequestLayout = ios(() => {
|
||||
let host = new GridLayout();
|
||||
|
||||
|
||||
let image = new Image();
|
||||
|
||||
host.width = 300;
|
||||
host.height = 300;
|
||||
host.addChild(image);
|
||||
|
||||
|
||||
let mainPage = helper.getCurrentPage();
|
||||
mainPage.content = host;
|
||||
TKUnit.waitUntilReady(() => host.isLoaded);
|
||||
|
||||
|
||||
let called = false;
|
||||
image.requestLayout = () => called = true;
|
||||
image.src = "~/logo.png";
|
||||
|
||||
|
||||
TKUnit.assertFalse(called, "image.requestLayout should not be called.");
|
||||
});
|
||||
|
||||
@@ -308,15 +317,15 @@ export var test_SettingImageSourceWhenFixedWidthAndHeightDoesNotRequestLayout =
|
||||
image.width = 100;
|
||||
image.height = 100;
|
||||
host.addChild(image);
|
||||
|
||||
|
||||
let mainPage = helper.getCurrentPage();
|
||||
mainPage.content = host;
|
||||
TKUnit.waitUntilReady(() => host.isLoaded);
|
||||
|
||||
|
||||
let called = false;
|
||||
image.requestLayout = () => called = true;
|
||||
image.src = "~/logo.png";
|
||||
|
||||
|
||||
TKUnit.assertFalse(called, "image.requestLayout should not be called.");
|
||||
});
|
||||
|
||||
@@ -324,21 +333,22 @@ export var test_SettingImageSourceWhenSizedToContentShouldInvalidate = ios(() =>
|
||||
let host = new StackLayout();
|
||||
let image = new Image();
|
||||
host.addChild(image);
|
||||
|
||||
|
||||
let mainPage = helper.getCurrentPage();
|
||||
mainPage.content = host;
|
||||
TKUnit.waitUntilReady(() => host.isLoaded);
|
||||
|
||||
|
||||
let called = false;
|
||||
image.requestLayout = () => called = true;
|
||||
image.src = "~/logo.png";
|
||||
|
||||
|
||||
TKUnit.assertTrue(called, "image.requestLayout should be called.");
|
||||
});
|
||||
|
||||
export var test_DimensionsAreRoundedAfterScale = function() {
|
||||
export var test_DimensionsAreRoundedAfterScale = function () {
|
||||
let host = new StackLayout();
|
||||
let image = new Image();
|
||||
(<any>image).useCache = false;
|
||||
image.src = "~/ui/image/700x50.png";
|
||||
let imageWidth = 700;
|
||||
let imageHeight = 50;
|
||||
@@ -347,12 +357,11 @@ export var test_DimensionsAreRoundedAfterScale = function() {
|
||||
let hostWidth = 320;
|
||||
host.width = hostWidth / density;
|
||||
host.height = hostWidth / density;
|
||||
host.addChild(image);
|
||||
host.addChild(image);
|
||||
let mainPage = helper.getCurrentPage();
|
||||
mainPage.content = host;
|
||||
TKUnit.waitUntilReady(() => host.isLoaded);
|
||||
TKUnit.waitUntilReady(() => image.isLayoutValid);
|
||||
|
||||
TKUnit.waitUntilReady(() => host.isLayoutValid);
|
||||
|
||||
let scale = hostWidth / imageWidth;
|
||||
let expectedHeight = Math.round(imageHeight * scale);
|
||||
TKUnit.assertEqual(image.getMeasuredWidth(), hostWidth, "Actual width is different from expected width.");
|
||||
@@ -365,7 +374,7 @@ export var test_tintColor = function () {
|
||||
image.imageSource = ImageSourceModule.fromFile(imagePath);
|
||||
|
||||
var testFunc = function (views: Array<ViewModule.View>) {
|
||||
var testImage = <ImageModule.Image> views[0];
|
||||
var testImage = <ImageModule.Image>views[0];
|
||||
|
||||
if (image.android) {
|
||||
var tintColor = testImage.android.getColorFilter();
|
||||
|
||||
@@ -756,7 +756,7 @@ export function test_border_color() {
|
||||
let blue = new color.Color("blue");
|
||||
let hex = blue.hex;
|
||||
testView.style.borderColor = hex;
|
||||
TKUnit.assertEqual(testView.style.borderColor, blue, "all");
|
||||
TKUnit.assertEqual((<any>testView.style.borderColor), blue, "all");
|
||||
TKUnit.assertEqual(testView.style.borderTopColor, blue, "top");
|
||||
TKUnit.assertEqual(testView.style.borderRightColor, blue, "right");
|
||||
TKUnit.assertEqual(testView.style.borderBottomColor, blue, "bottom");
|
||||
@@ -774,7 +774,7 @@ export function test_border_width() {
|
||||
TKUnit.assertEqual(testView.style.borderLeftWidth, 10, "left");
|
||||
|
||||
testView.style.borderWidth = "20";
|
||||
TKUnit.assertEqual(testView.style.borderWidth, 20, "all");
|
||||
TKUnit.assertEqual((<any>testView.style.borderWidth), 20, "all");
|
||||
TKUnit.assertEqual(testView.style.borderTopWidth, 20, "top");
|
||||
TKUnit.assertEqual(testView.style.borderRightWidth, 20, "right");
|
||||
TKUnit.assertEqual(testView.style.borderBottomWidth, 20, "bottom");
|
||||
@@ -792,7 +792,7 @@ export function test_border_radius() {
|
||||
TKUnit.assertEqual(testView.style.borderBottomLeftRadius, 10, "left");
|
||||
|
||||
testView.style.borderRadius = "20";
|
||||
TKUnit.assertEqual(testView.style.borderRadius, 20, "all");
|
||||
TKUnit.assertEqual((<any>testView.style.borderRadius), 20, "all");
|
||||
TKUnit.assertEqual(testView.style.borderTopLeftRadius, 20, "top");
|
||||
TKUnit.assertEqual(testView.style.borderTopRightRadius, 20, "right");
|
||||
TKUnit.assertEqual(testView.style.borderBottomRightRadius, 20, "bottom");
|
||||
|
||||
Reference in New Issue
Block a user