Files
NativeScript/tests/app/ui/image-cache/image-cache-tests.ts

75 lines
2.4 KiB
TypeScript

import * as imageCacheModule from "@nativescript/core/ui/image-cache";
import { ImageSource } from "@nativescript/core/image-source";
import { isAndroid, device } from "@nativescript/core/platform";
import lazy from "@nativescript/core/utils/lazy";
const sdkVersion = lazy(() => parseInt(device.sdkVersion));
export const test_ImageCache_ValidUrl = function (done: (err: Error, res?: string) => void) {
// see https://github.com/NativeScript/NativeScript/issues/6643
if (isAndroid && sdkVersion() < 20) {
done(null);
return;
}
const cache = new imageCacheModule.Cache();
cache.maxRequests = 5;
let imgSource: ImageSource;
const url = "https://github.com/NativeScript.png";
// Try to read the image from the cache
const image = cache.get(url);
if (image) {
// If present -- use it.
imgSource = new ImageSource(image);
done(new Error("The image was found in the cache"));
}
else {
// If not present -- request its download.
cache.push({
key: url,
url: url,
completed: (image: any, key: string) => {
if (url === key) {
imgSource = new ImageSource(image);
console.log("Valid url: ", key);
done(null);
}
}
});
}
};
export const test_ImageCache_NothingAtProvidedUrl = function (done: (err: Error, res?: string) => void) {
const cache = new imageCacheModule.Cache();
cache.maxRequests = 5;
let imgSource: ImageSource;
const url = "https://github.com/NativeScript-NoImage.png";
// Try to read the image from the cache
const image = cache.get(url);
if (image) {
// If present -- use it.
imgSource = new ImageSource(image);
done(new Error("The image was found in the cache"));
}
else {
// If not present -- request its download.
cache.push({
key: url,
url: url,
completed: (image: any, key: string) => {
if (url === key) {
imgSource = new ImageSource(image);
}
done(new Error("The completed callback was not expected to be called"));
},
error: (key: string) => {
console.log("No image for key: ", key);
done(null);
}
});
}
};