mirror of
https://github.com/mapillary/mapillary-js.git
synced 2026-01-18 13:56:53 +00:00
223 lines
6.1 KiB
TypeScript
223 lines
6.1 KiB
TypeScript
import { ImageHelper } from "../helper/ImageHelper";
|
|
import { Image as MImage } from "../../src/graph/Image";
|
|
import { CoreImageEnt } from "../../src/api/ents/CoreImageEnt";
|
|
import { SpatialImageEnt } from "../../src/api/ents/SpatialImageEnt";
|
|
import { MeshContract } from "../../src/api/contracts/MeshContract";
|
|
import { ImageCache } from "../../src/graph/ImageCache";
|
|
|
|
describe("Image", () => {
|
|
let helper: ImageHelper;
|
|
|
|
beforeEach(() => {
|
|
helper = new ImageHelper();
|
|
});
|
|
|
|
it("should create a image", () => {
|
|
let coreImage: CoreImageEnt = helper.createCoreImageEnt();
|
|
let image = new MImage(coreImage);
|
|
|
|
expect(image).toBeDefined();
|
|
});
|
|
});
|
|
|
|
describe("Image.complete", () => {
|
|
let helper: ImageHelper;
|
|
|
|
beforeEach(() => {
|
|
helper = new ImageHelper();
|
|
});
|
|
|
|
it("should make image complete", () => {
|
|
let coreImage: CoreImageEnt = helper.createCoreImageEnt();
|
|
let image = new MImage(coreImage);
|
|
|
|
expect(image.complete).toBe(false);
|
|
|
|
let fillImage: SpatialImageEnt = helper.createSpatialImageEnt();
|
|
|
|
image.makeComplete(fillImage);
|
|
|
|
expect(image.complete).toBe(true);
|
|
});
|
|
|
|
it("should throw when fill is null", () => {
|
|
let coreImage: CoreImageEnt = helper.createCoreImageEnt();
|
|
let image = new MImage(coreImage);
|
|
|
|
expect(() => { image.makeComplete(null); }).toThrowError(Error);
|
|
});
|
|
});
|
|
|
|
describe("Image.dispose", () => {
|
|
let helper: ImageHelper;
|
|
|
|
beforeEach(() => {
|
|
helper = new ImageHelper();
|
|
});
|
|
|
|
it("should clear core and fill properties", () => {
|
|
let coreImage: CoreImageEnt = helper.createCoreImageEnt();
|
|
let image = new MImage(coreImage);
|
|
let fillImage: SpatialImageEnt = helper.createSpatialImageEnt();
|
|
image.makeComplete(fillImage);
|
|
|
|
image.dispose();
|
|
|
|
expect(image.complete).toBe(false);
|
|
|
|
expect(() => { return image.id; }).toThrowError(Error);
|
|
});
|
|
|
|
it("should dipose cache", () => {
|
|
let coreImage: CoreImageEnt = helper.createCoreImageEnt();
|
|
let image = new MImage(coreImage);
|
|
let imageCache: ImageCache = new ImageCache(undefined);
|
|
|
|
let disposeSpy: jasmine.Spy = spyOn(imageCache, "dispose");
|
|
disposeSpy.and.stub();
|
|
|
|
image.initializeCache(imageCache);
|
|
|
|
image.dispose();
|
|
|
|
expect(disposeSpy.calls.count()).toBe(1);
|
|
});
|
|
});
|
|
|
|
describe("Image.uncache", () => {
|
|
let helper: ImageHelper;
|
|
|
|
beforeEach(() => {
|
|
helper = new ImageHelper();
|
|
});
|
|
|
|
it("should handle when cache is not initilized", () => {
|
|
let coreImage: CoreImageEnt = helper.createCoreImageEnt();
|
|
let image = new MImage(coreImage);
|
|
|
|
image.uncache();
|
|
});
|
|
|
|
it("should dispose image cache", () => {
|
|
let coreImage: CoreImageEnt = helper.createCoreImageEnt();
|
|
let image = new MImage(coreImage);
|
|
let imageCache: ImageCache = new ImageCache(undefined);
|
|
|
|
let disposeSpy: jasmine.Spy = spyOn(imageCache, "dispose");
|
|
disposeSpy.and.stub();
|
|
|
|
image.initializeCache(imageCache);
|
|
|
|
image.uncache();
|
|
|
|
expect(disposeSpy.calls.count()).toBe(1);
|
|
});
|
|
|
|
it("should be able to initialize cache again after uncache", () => {
|
|
let coreImage: CoreImageEnt = helper.createCoreImageEnt();
|
|
let image = new MImage(coreImage);
|
|
let imageCache: ImageCache = new ImageCache(undefined);
|
|
|
|
let disposeSpy: jasmine.Spy = spyOn(imageCache, "dispose");
|
|
disposeSpy.and.stub();
|
|
|
|
image.initializeCache(imageCache);
|
|
|
|
image.uncache();
|
|
|
|
image.initializeCache(imageCache);
|
|
});
|
|
});
|
|
|
|
describe("Image.merged", () => {
|
|
let helper: ImageHelper;
|
|
|
|
beforeEach(() => {
|
|
helper = new ImageHelper();
|
|
});
|
|
|
|
it("should not be merged when not complete", () => {
|
|
let coreImage: CoreImageEnt = helper.createCoreImageEnt();
|
|
let image = new MImage(coreImage);
|
|
|
|
expect(image.merged).toBe(false);
|
|
});
|
|
|
|
it("should not be merged because merge cc is null", () => {
|
|
let coreImage: CoreImageEnt = helper.createCoreImageEnt();
|
|
let image = new MImage(coreImage);
|
|
let fillImage: SpatialImageEnt = helper.createSpatialImageEnt();
|
|
|
|
fillImage.merge_cc = null;
|
|
|
|
image.makeComplete(fillImage);
|
|
|
|
expect(image.merged).toBe(false);
|
|
});
|
|
|
|
it("should be merged because merge cc present", () => {
|
|
let coreImage: CoreImageEnt = helper.createCoreImageEnt();
|
|
let image = new MImage(coreImage);
|
|
let fillImage: SpatialImageEnt = helper.createSpatialImageEnt();
|
|
|
|
fillImage.merge_cc = 7;
|
|
|
|
image.makeComplete(fillImage);
|
|
|
|
expect(image.merged).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe("Image.assetsCached", () => {
|
|
let helper: ImageHelper;
|
|
|
|
beforeEach(() => {
|
|
helper = new ImageHelper();
|
|
});
|
|
|
|
it("should not be cached when core", () => {
|
|
let coreImage: CoreImageEnt = helper.createCoreImageEnt();
|
|
let image = new MImage(coreImage);
|
|
|
|
expect(image.assetsCached).toBe(false);
|
|
});
|
|
|
|
class ImageCacheMock extends ImageCache {
|
|
protected _overridingImage: HTMLImageElement;
|
|
protected _overridingMesh: MeshContract;
|
|
|
|
constructor() { super(undefined); }
|
|
|
|
public get image(): HTMLImageElement {
|
|
return this._overridingImage;
|
|
}
|
|
|
|
public set image(value: HTMLImageElement) {
|
|
this._overridingImage = value;
|
|
}
|
|
|
|
public get mesh(): MeshContract {
|
|
return this._overridingMesh;
|
|
}
|
|
|
|
public set mesh(value: MeshContract) {
|
|
this._overridingMesh = value;
|
|
}
|
|
}
|
|
|
|
it("should be cached when assets set", () => {
|
|
let coreImage: CoreImageEnt = helper.createCoreImageEnt();
|
|
let image = new MImage(coreImage);
|
|
let fillImage: SpatialImageEnt = helper.createSpatialImageEnt();
|
|
image.makeComplete(fillImage);
|
|
|
|
let imageCache: ImageCacheMock = new ImageCacheMock();
|
|
imageCache.image = new Image();
|
|
imageCache.mesh = { faces: [], vertices: [] };
|
|
|
|
image.initializeCache(imageCache);
|
|
|
|
expect(image.assetsCached).toBe(true);
|
|
});
|
|
});
|