mirror of
https://github.com/mapillary/mapillary-js.git
synced 2026-01-18 13:56:53 +00:00
106 lines
4.3 KiB
TypeScript
106 lines
4.3 KiB
TypeScript
import { EdgeCalculator } from "../../../src/graph/edge/EdgeCalculator";
|
|
import { EdgeCalculatorDirections } from "../../../src/graph/edge/EdgeCalculatorDirections";
|
|
import { EdgeCalculatorSettings } from "../../../src/graph/edge/EdgeCalculatorSettings";
|
|
import { NavigationDirection } from "../../../src/graph/edge/NavigationDirection";
|
|
import { NavigationEdge } from "../../../src/graph/edge/interfaces/NavigationEdge";
|
|
import { Image } from "../../../src/graph/Image";
|
|
import { Sequence } from "../../../src/graph/Sequence";
|
|
import { EdgeCalculatorHelper } from "../../helper/EdgeCalculatorHelper";
|
|
|
|
describe("EdgeCalculator.computeSequenceEdges", () => {
|
|
let edgeCalculator: EdgeCalculator;
|
|
let settings: EdgeCalculatorSettings;
|
|
let directions: EdgeCalculatorDirections;
|
|
|
|
let helper: EdgeCalculatorHelper;
|
|
|
|
beforeEach(() => {
|
|
settings = new EdgeCalculatorSettings();
|
|
directions = new EdgeCalculatorDirections();
|
|
|
|
edgeCalculator = new EdgeCalculator(settings, directions);
|
|
|
|
helper = new EdgeCalculatorHelper();
|
|
});
|
|
|
|
it("should throw when image is not full", () => {
|
|
let key: string = "key";
|
|
let sequenceKey: string = "skey";
|
|
|
|
let image: Image = helper.createCoreImage(key, { alt: 0, lat: 0, lng: 0 }, sequenceKey);
|
|
let sequence: Sequence = new Sequence({ id: sequenceKey, image_ids: [key] });
|
|
|
|
expect(() => { edgeCalculator.computeSequenceEdges(image, sequence); }).toThrowError(Error);
|
|
});
|
|
|
|
it("should throw when image sequence key differ from key of sequence", () => {
|
|
let key: string = "key";
|
|
let sequenceKey1: string = "skey1";
|
|
let sequenceKey2: string = "skey2";
|
|
|
|
let image: Image = helper.createCoreImage(key, { alt: 0, lat: 0, lng: 0 }, sequenceKey1);
|
|
let sequence: Sequence = new Sequence({ id: sequenceKey2, image_ids: [key] });
|
|
|
|
expect(() => { edgeCalculator.computeSequenceEdges(image, sequence); }).toThrowError(Error);
|
|
});
|
|
|
|
it("should return a next edge", () => {
|
|
let key: string = "key";
|
|
let nextKey: string = "nextKey";
|
|
let sequenceKey: string = "skey";
|
|
|
|
let image: Image = helper.createCompleteImage(key, { alt: 0, lat: 0, lng: 0 }, sequenceKey, [0, 0, 0]);
|
|
let sequence: Sequence = new Sequence({ id: sequenceKey, image_ids: [key, nextKey] });
|
|
|
|
let sequenceEdges: NavigationEdge[] = edgeCalculator.computeSequenceEdges(image, sequence);
|
|
|
|
expect(sequenceEdges.length).toBe(1);
|
|
|
|
let sequenceEdge: NavigationEdge = sequenceEdges[0];
|
|
|
|
expect(sequenceEdge.target).toBe(nextKey);
|
|
expect(sequenceEdge.data.direction).toBe(NavigationDirection.Next);
|
|
});
|
|
|
|
it("should return a prev edge", () => {
|
|
let key: string = "key";
|
|
let prevKey: string = "prevKey";
|
|
let sequenceKey: string = "skey";
|
|
|
|
let image: Image = helper.createCompleteImage(key, { alt: 0, lat: 0, lng: 0 }, sequenceKey, [0, 0, 0]);
|
|
let sequence: Sequence = new Sequence({ id: sequenceKey, image_ids: [prevKey, key] });
|
|
|
|
let sequenceEdges: NavigationEdge[] = edgeCalculator.computeSequenceEdges(image, sequence);
|
|
|
|
expect(sequenceEdges.length).toBe(1);
|
|
|
|
let sequenceEdge: NavigationEdge = sequenceEdges[0];
|
|
|
|
expect(sequenceEdge.target).toBe(prevKey);
|
|
expect(sequenceEdge.data.direction).toBe(NavigationDirection.Prev);
|
|
});
|
|
|
|
it("should return a prev and a next edge", () => {
|
|
let key: string = "key";
|
|
let prevKey: string = "prevKey";
|
|
let nextKey: string = "nextKey";
|
|
|
|
let sequenceKey: string = "skey";
|
|
|
|
let image: Image = helper.createCompleteImage(key, { alt: 0, lat: 0, lng: 0 }, sequenceKey, [0, 0, 0]);
|
|
let sequence: Sequence = new Sequence({ id: sequenceKey, image_ids: [prevKey, key, nextKey] });
|
|
|
|
let sequenceEdges: NavigationEdge[] = edgeCalculator.computeSequenceEdges(image, sequence);
|
|
|
|
expect(sequenceEdges.length).toBe(2);
|
|
|
|
for (let sequenceEdge of sequenceEdges) {
|
|
if (sequenceEdge.target === prevKey) {
|
|
expect(sequenceEdge.data.direction).toBe(NavigationDirection.Prev);
|
|
} else if (sequenceEdge.target === nextKey) {
|
|
expect(sequenceEdge.data.direction).toBe(NavigationDirection.Next);
|
|
}
|
|
}
|
|
});
|
|
});
|