You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
4.4 KiB
JavaScript

import { buildModuleUrl } from "../../Source/Cesium.js";
import { Color } from "../../Source/Cesium.js";
import { PinBuilder } from "../../Source/Cesium.js";
import { when } from "../../Source/Cesium.js";
describe("Core/PinBuilder", function () {
function getPinColor(canvas) {
var context2D = canvas.getContext("2d");
var data = context2D.getImageData(64, 5, 1, 1).data;
return Color.fromBytes(data[0], data[1], data[2]);
}
function getIconColor(canvas) {
var context2D = canvas.getContext("2d");
var data = context2D.getImageData(64, 32, 1, 1).data;
return Color.fromBytes(data[0], data[1], data[2]);
}
it("fromColor creates icon of correct color", function () {
var builder = new PinBuilder();
var canvas = builder.fromColor(Color.GREEN, 128);
expect(getPinColor(canvas)).toEqual(Color.GREEN);
});
it("fromText creates icon of correct color with symbol", function () {
var builder = new PinBuilder();
//Solid square icon
var canvas = builder.fromText("\u25A0", Color.BLUE, 128);
expect(getPinColor(canvas)).toEqual(Color.BLUE);
expect(getIconColor(canvas)).toEqual(Color.WHITE);
});
it("fromUrl creates icon of correct color with symbol", function () {
var builder = new PinBuilder();
//Solid square icon
return when(
builder.fromUrl(
buildModuleUrl("Assets/Textures/maki/square.png"),
Color.RED,
128
),
function (canvas) {
expect(getPinColor(canvas)).toEqual(Color.RED);
expect(getIconColor(canvas)).toEqual(Color.WHITE);
}
);
});
it("fromMakiIconId creates icon of correct color with symbol", function () {
var builder = new PinBuilder();
//Solid square icon
return when(builder.fromMakiIconId("square", Color.YELLOW, 128), function (
canvas
) {
expect(getPinColor(canvas)).toEqual(Color.YELLOW);
expect(getIconColor(canvas)).toEqual(Color.WHITE);
});
});
it("caches and returns existing canvas", function () {
var builder = new PinBuilder();
var canvas = builder.fromColor(Color.GREEN, 128);
var canvas2 = builder.fromColor(Color.GREEN, 128);
expect(canvas).toBe(canvas2);
});
it("fromColor throws without color", function () {
var builder = new PinBuilder();
expect(function () {
builder.fromColor(undefined, 128);
}).toThrowDeveloperError();
});
it("fromColor throws without size", function () {
var builder = new PinBuilder();
expect(function () {
builder.fromColor(Color.RED, undefined);
}).toThrowDeveloperError();
});
it("fromText throws without text", function () {
var builder = new PinBuilder();
expect(function () {
builder.fromText(undefined, Color.RED, 128);
}).toThrowDeveloperError();
});
it("fromText throws without color", function () {
var builder = new PinBuilder();
expect(function () {
builder.fromText("text", undefined, 128);
}).toThrowDeveloperError();
});
it("fromText throws without size", function () {
var builder = new PinBuilder();
expect(function () {
builder.fromText("text", Color.RED, undefined);
}).toThrowDeveloperError();
});
it("fromUrl throws without url", function () {
var builder = new PinBuilder();
expect(function () {
builder.fromUrl(undefined, Color.RED, 128);
}).toThrowDeveloperError();
});
it("fromUrl throws without color", function () {
var builder = new PinBuilder();
expect(function () {
builder.fromUrl("http://someUrl.invalid/some.png", undefined, 128);
}).toThrowDeveloperError();
});
it("fromUrl throws without size", function () {
var builder = new PinBuilder();
expect(function () {
builder.fromUrl("http://someUrl.invalid/some.png", Color.RED, undefined);
}).toThrowDeveloperError();
});
it("fromMakiIconId throws without id", function () {
var builder = new PinBuilder();
expect(function () {
builder.fromMakiIconId(undefined, Color.RED, 128);
}).toThrowDeveloperError();
});
it("fromMakiIconId throws without color", function () {
var builder = new PinBuilder();
expect(function () {
builder.fromMakiIconId("hospital", undefined, 128);
}).toThrowDeveloperError();
});
it("fromMakiIconId throws without size", function () {
var builder = new PinBuilder();
expect(function () {
builder.fromMakiIconId("hospital", Color.RED, undefined);
}).toThrowDeveloperError();
});
});