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.

953 lines
32 KiB
JavaScript

import { Iso8601 } from "../../Source/Cesium.js";
import { JulianDate } from "../../Source/Cesium.js";
import { TimeInterval } from "../../Source/Cesium.js";
import { TimeIntervalCollection } from "../../Source/Cesium.js";
import { BillboardGraphics } from "../../Source/Cesium.js";
import { CompositeEntityCollection } from "../../Source/Cesium.js";
import { CompositePositionProperty } from "../../Source/Cesium.js";
import { CompositeProperty } from "../../Source/Cesium.js";
import { ConstantProperty } from "../../Source/Cesium.js";
import { Entity } from "../../Source/Cesium.js";
import { EntityCollection } from "../../Source/Cesium.js";
describe("DataSources/CompositeEntityCollection", function () {
function CollectionListener() {
this.timesCalled = 0;
this.added = [];
this.removed = [];
}
CollectionListener.prototype.onCollectionChanged = function (
collection,
added,
removed
) {
this.timesCalled++;
this.added = added.slice(0);
this.removed = removed.slice(0);
};
it("constructor has expected defaults", function () {
var composite = new CompositeEntityCollection();
expect(composite.collectionChanged).toBeDefined();
expect(composite.getCollectionsLength()).toEqual(0);
expect(composite.values.length).toEqual(0);
});
it("constructor with owner", function () {
var composite = new CompositeEntityCollection();
var child = new CompositeEntityCollection(undefined, composite);
expect(child.owner).toEqual(composite);
});
it("addCollection/removeCollection works", function () {
var entityCollection = new EntityCollection();
entityCollection.add(new Entity());
var entityCollection2 = new EntityCollection();
entityCollection2.add(new Entity());
var composite = new CompositeEntityCollection();
composite.addCollection(entityCollection);
expect(composite.getCollectionsLength()).toEqual(1);
expect(composite.values.length).toEqual(1);
composite.addCollection(entityCollection2);
expect(composite.getCollectionsLength()).toEqual(2);
expect(composite.values.length).toEqual(2);
expect(composite.removeCollection(entityCollection)).toEqual(true);
expect(composite.values.length).toEqual(1);
expect(composite.removeCollection(entityCollection2)).toEqual(true);
expect(composite.values.length).toEqual(0);
expect(composite.getCollectionsLength()).toEqual(0);
expect(composite.removeCollection(entityCollection)).toEqual(false);
});
it("addCollection works with index", function () {
var entityCollection = new EntityCollection();
var entityCollection2 = new EntityCollection();
var entityCollection3 = new EntityCollection();
var composite = new CompositeEntityCollection();
composite.addCollection(entityCollection);
composite.addCollection(entityCollection3);
composite.addCollection(entityCollection2, 1);
expect(composite.getCollection(0)).toBe(entityCollection);
expect(composite.getCollection(1)).toBe(entityCollection2);
expect(composite.getCollection(2)).toBe(entityCollection3);
});
it("contains returns true if in collection", function () {
var entityCollection = new EntityCollection();
var composite = new CompositeEntityCollection();
composite.addCollection(entityCollection);
var entity = entityCollection.getOrCreateEntity("asd");
expect(entityCollection.contains(entity)).toBe(true);
});
it("contains returns false if not in collection", function () {
var entityCollection = new CompositeEntityCollection();
expect(entityCollection.contains(new Entity())).toBe(false);
});
it("contains throws with undefined Entity", function () {
var entityCollection = new CompositeEntityCollection();
expect(function () {
entityCollection.contains(undefined);
}).toThrowDeveloperError();
});
it("containsCollection works", function () {
var entityCollection = new EntityCollection();
var composite = new CompositeEntityCollection();
expect(composite.containsCollection(entityCollection)).toEqual(false);
composite.addCollection(entityCollection);
expect(composite.containsCollection(entityCollection)).toEqual(true);
});
it("indexOfCollection works", function () {
var entityCollection = new EntityCollection();
var entityCollection2 = new EntityCollection();
var composite = new CompositeEntityCollection();
expect(composite.indexOfCollection(entityCollection)).toEqual(-1);
composite.addCollection(entityCollection);
composite.addCollection(entityCollection2);
expect(composite.indexOfCollection(entityCollection)).toEqual(0);
expect(composite.indexOfCollection(entityCollection2)).toEqual(1);
composite.removeCollection(entityCollection);
expect(composite.indexOfCollection(entityCollection2)).toEqual(0);
});
it("getCollection works", function () {
var entityCollection = new EntityCollection();
var entityCollection2 = new EntityCollection();
var composite = new CompositeEntityCollection();
composite.addCollection(entityCollection);
composite.addCollection(entityCollection2);
expect(composite.getCollection(0)).toBe(entityCollection);
expect(composite.getCollection(1)).toBe(entityCollection2);
expect(composite.getCollection(2)).toBeUndefined();
});
it("raise/lower collection works", function () {
var entityCollection = new EntityCollection();
var entityCollection2 = new EntityCollection();
var entityCollection3 = new EntityCollection();
var composite = new CompositeEntityCollection();
composite.addCollection(entityCollection);
composite.addCollection(entityCollection2);
composite.addCollection(entityCollection3);
expect(composite.indexOfCollection(entityCollection2)).toEqual(1);
composite.raiseCollection(entityCollection2);
expect(composite.indexOfCollection(entityCollection2)).toEqual(2);
composite.lowerCollection(entityCollection2);
composite.lowerCollection(entityCollection2);
expect(composite.indexOfCollection(entityCollection2)).toEqual(0);
composite.lowerCollection(entityCollection2);
expect(composite.indexOfCollection(entityCollection2)).toEqual(0);
composite.raiseCollectionToTop(entityCollection2);
expect(composite.indexOfCollection(entityCollection2)).toEqual(2);
composite.raiseCollectionToTop(entityCollection2);
expect(composite.indexOfCollection(entityCollection2)).toEqual(2);
composite.lowerCollectionToBottom(entityCollection2);
expect(composite.indexOfCollection(entityCollection2)).toEqual(0);
composite.lowerCollectionToBottom(entityCollection2);
expect(composite.indexOfCollection(entityCollection2)).toEqual(0);
});
it("add/remove works", function () {
var entity = new Entity();
var entity2 = new Entity();
var entityCollection = new EntityCollection();
var composite = new CompositeEntityCollection([entityCollection]);
entityCollection.add(entity);
expect(composite.values.length).toEqual(1);
entityCollection.add(entity2);
expect(composite.values.length).toEqual(2);
entityCollection.remove(entity2);
expect(composite.values.length).toEqual(1);
entityCollection.remove(entity);
expect(composite.values.length).toEqual(0);
});
it("add/remove raises expected events", function () {
var entity = new Entity();
var entity2 = new Entity();
var entityCollection = new EntityCollection();
var composite = new CompositeEntityCollection([entityCollection]);
var listener = new CollectionListener();
composite.collectionChanged.addEventListener(
listener.onCollectionChanged,
listener
);
entityCollection.add(entity);
expect(listener.timesCalled).toEqual(1);
expect(listener.added.length).toEqual(1);
expect(listener.added[0].id).toBe(entity.id);
expect(listener.removed.length).toEqual(0);
entityCollection.add(entity2);
expect(listener.timesCalled).toEqual(2);
expect(listener.added.length).toEqual(1);
expect(listener.added[0].id).toBe(entity2.id);
expect(listener.removed.length).toEqual(0);
entityCollection.remove(entity2);
expect(listener.timesCalled).toEqual(3);
expect(listener.added.length).toEqual(0);
expect(listener.removed.length).toEqual(1);
expect(listener.removed[0].id).toBe(entity2.id);
entityCollection.remove(entity);
expect(listener.timesCalled).toEqual(4);
expect(listener.added.length).toEqual(0);
expect(listener.removed.length).toEqual(1);
expect(listener.removed[0].id).toBe(entity.id);
composite.collectionChanged.removeEventListener(
listener.onCollectionChanged,
listener
);
});
it("suspended add/remove raises expected events", function () {
var entity = new Entity();
var entity2 = new Entity();
var entity3 = new Entity();
var entityCollection = new EntityCollection();
var composite = new CompositeEntityCollection([entityCollection]);
var listener = new CollectionListener();
composite.collectionChanged.addEventListener(
listener.onCollectionChanged,
listener
);
composite.suspendEvents();
composite.suspendEvents();
entityCollection.add(entity);
entityCollection.add(entity2);
entityCollection.add(entity3);
entityCollection.remove(entity2);
expect(listener.timesCalled).toEqual(0);
composite.resumeEvents();
expect(listener.timesCalled).toEqual(0);
composite.resumeEvents();
expect(listener.timesCalled).toEqual(1);
expect(listener.added.length).toEqual(2);
expect(listener.added[0].id).toBe(entity.id);
expect(listener.added[1].id).toBe(entity3.id);
expect(listener.removed.length).toEqual(0);
composite.suspendEvents();
entityCollection.remove(entity);
entityCollection.remove(entity3);
entityCollection.add(entity);
entityCollection.add(entity3);
composite.resumeEvents();
expect(listener.timesCalled).toEqual(1);
composite.collectionChanged.removeEventListener(
listener.onCollectionChanged,
listener
);
});
it("removeAllCollections works", function () {
var entity = new Entity();
var entity2 = new Entity();
var entityCollection = new EntityCollection();
var composite = new CompositeEntityCollection([entityCollection]);
entityCollection.add(entity);
entityCollection.add(entity2);
composite.removeAllCollections();
expect(composite.values.length).toEqual(0);
});
it("removeAllCollections raises expected events", function () {
var entity = new Entity();
var entity2 = new Entity();
var entityCollection = new EntityCollection();
var listener = new CollectionListener();
var composite = new CompositeEntityCollection([entityCollection]);
entityCollection.add(entity);
entityCollection.add(entity2);
composite.collectionChanged.addEventListener(
listener.onCollectionChanged,
listener
);
composite.removeAllCollections();
expect(listener.timesCalled).toEqual(1);
expect(listener.removed.length).toEqual(2);
expect(listener.removed[0].id).toBe(entity.id);
expect(listener.removed[1].id).toBe(entity2.id);
expect(listener.added.length).toEqual(0);
composite.removeAllCollections();
expect(listener.timesCalled).toEqual(1);
composite.collectionChanged.removeEventListener(
listener.onCollectionChanged,
listener
);
});
it("suspended removeAllCollections raises expected events", function () {
var entity = new Entity();
var entity2 = new Entity();
var entityCollection = new EntityCollection();
var listener = new CollectionListener();
var composite = new CompositeEntityCollection([entityCollection]);
entityCollection.add(entity);
entityCollection.add(entity2);
composite.collectionChanged.addEventListener(
listener.onCollectionChanged,
listener
);
composite.suspendEvents();
composite.removeAllCollections();
composite.resumeEvents();
expect(listener.timesCalled).toEqual(1);
expect(listener.removed.length).toEqual(2);
expect(listener.removed[0].id).toBe(entity.id);
expect(listener.removed[1].id).toBe(entity2.id);
expect(listener.added.length).toEqual(0);
expect(composite.getCollectionsLength()).toEqual(0);
composite.suspendEvents();
composite.addCollection(entityCollection);
entityCollection.removeAll();
composite.resumeEvents();
expect(listener.timesCalled).toEqual(1);
composite.collectionChanged.removeEventListener(
listener.onCollectionChanged,
listener
);
});
it("getById works", function () {
var entity = new Entity();
var entity2 = new Entity();
var entityCollection = new EntityCollection();
entityCollection.add(entity);
entityCollection.add(entity2);
var composite = new CompositeEntityCollection();
composite.addCollection(entityCollection);
expect(composite.getById(entity.id).id).toEqual(entity.id);
expect(composite.getById(entity2.id).id).toEqual(entity2.id);
});
it("getById returns undefined for non-existent object", function () {
var composite = new CompositeEntityCollection();
expect(composite.getById("123")).toBeUndefined();
});
it("computeAvailability returns infinite with no data.", function () {
var entityCollection = new EntityCollection();
var composite = new CompositeEntityCollection();
composite.addCollection(entityCollection);
var availability = composite.computeAvailability();
expect(availability.start).toEqual(Iso8601.MINIMUM_VALUE);
expect(availability.stop).toEqual(Iso8601.MAXIMUM_VALUE);
});
it("computeAvailability returns intersection of collections.", function () {
var entityCollection = new EntityCollection();
var entity = entityCollection.getOrCreateEntity("1");
var entity2 = entityCollection.getOrCreateEntity("2");
var entity3 = entityCollection.getOrCreateEntity("3");
entity.availability = new TimeIntervalCollection();
entity.availability.addInterval(
TimeInterval.fromIso8601({
iso8601: "2012-08-01/2012-08-02",
})
);
entity2.availability = new TimeIntervalCollection();
entity2.availability.addInterval(
TimeInterval.fromIso8601({
iso8601: "2012-08-05/2012-08-06",
})
);
entity3.availability = undefined;
var composite = new CompositeEntityCollection();
composite.addCollection(entityCollection);
var availability = composite.computeAvailability();
expect(availability.start).toEqual(JulianDate.fromIso8601("2012-08-01"));
expect(availability.stop).toEqual(JulianDate.fromIso8601("2012-08-06"));
});
it("computeAvailability works if only start or stop time is infinite.", function () {
var entityCollection = new EntityCollection();
var entity = entityCollection.getOrCreateEntity("1");
var entity2 = entityCollection.getOrCreateEntity("2");
var entity3 = entityCollection.getOrCreateEntity("3");
entity.availability = new TimeIntervalCollection();
entity.availability.addInterval(
TimeInterval.fromIso8601({
iso8601: "2012-08-01/9999-12-31T24:00:00Z",
})
);
entity2.availability = new TimeIntervalCollection();
entity2.availability.addInterval(
TimeInterval.fromIso8601({
iso8601: "0000-01-01T00:00:00Z/2012-08-06",
})
);
entity3.availability = undefined;
var composite = new CompositeEntityCollection();
composite.addCollection(entityCollection);
var availability = composite.computeAvailability();
expect(availability.start).toEqual(JulianDate.fromIso8601("2012-08-01"));
expect(availability.stop).toEqual(JulianDate.fromIso8601("2012-08-06"));
});
it("coarse property compositing works", function () {
var composite = new CompositeEntityCollection();
var collection1 = new EntityCollection();
var collection2 = new EntityCollection();
var collection3 = new EntityCollection();
//Add collections in reverse order to lower numbers of priority
composite.addCollection(collection3);
composite.addCollection(collection2);
composite.addCollection(collection1);
//Start with an object in the middle with defined position and orientation
var entity2 = new Entity();
collection2.add(entity2);
entity2.position = new CompositePositionProperty();
entity2.orientation = new CompositeProperty();
//Initial composite should match both properties
var compositeObject = composite.getById(entity2.id);
expect(compositeObject).toBeDefined();
expect(composite.values.length).toEqual(1);
expect(compositeObject.position).toBe(entity2.position);
expect(compositeObject.orientation).toBe(entity2.orientation);
//Add a lower-priority object with position and viewFrom.
var entity3 = new Entity({
id: entity2.id,
});
collection3.add(entity3);
entity3.position = new CompositePositionProperty();
entity3.viewFrom = new CompositeProperty();
//We keep the orientation and position from higher priority entity2
//But add the viewFrom from 3.
expect(composite.values.length).toEqual(1);
expect(compositeObject.position).toBe(entity2.position);
expect(compositeObject.orientation).toBe(entity2.orientation);
expect(compositeObject.viewFrom).toBe(entity3.viewFrom);
//Add a higher priority object with position
var entity1 = new Entity({
id: entity2.id,
});
collection1.add(entity1);
entity1.position = new CompositePositionProperty();
//We now use the position from the higher priority
//object with other properties unchanged.
expect(composite.values.length).toEqual(1);
expect(compositeObject.position).toBe(entity1.position);
expect(compositeObject.orientation).toBe(entity2.orientation);
expect(compositeObject.viewFrom).toBe(entity3.viewFrom);
});
it("sub-property compositing works", function () {
var id = "test";
var collection1 = new EntityCollection();
var entity1 = new Entity({
id: id,
});
entity1.billboard = new BillboardGraphics();
collection1.add(entity1);
var collection2 = new EntityCollection();
var entity2 = new Entity({
id: id,
});
entity2.billboard = new BillboardGraphics();
collection2.add(entity2);
var collection3 = new EntityCollection();
var entity3 = new Entity({
id: id,
});
entity3.billboard = new BillboardGraphics();
collection3.add(entity3);
//Add collections in reverse order to lower numbers of priority
var composite = new CompositeEntityCollection();
composite.addCollection(collection3);
composite.addCollection(collection2);
composite.addCollection(collection1);
var compositeObject = composite.getById(id);
// Start with an object in the middle with defined billboard
entity2.billboard.show = new CompositeProperty();
expect(compositeObject.billboard.show).toBe(entity2.billboard.show);
entity3.billboard.show = new CompositeProperty();
expect(compositeObject.billboard.show).toBe(entity2.billboard.show);
entity1.billboard.show = new CompositeProperty();
expect(compositeObject.billboard.show).toBe(entity1.billboard.show);
entity2.billboard.show = undefined;
expect(compositeObject.billboard.show).toBe(entity1.billboard.show);
entity1.billboard.show = undefined;
expect(compositeObject.billboard.show).toBe(entity3.billboard.show);
entity3.billboard.show = undefined;
expect(compositeObject.billboard.show).toBeUndefined();
});
it("per-entity availability works", function () {
var id = "test";
var collection1 = new EntityCollection();
var availability1 = new TimeIntervalCollection();
availability1.addInterval(
TimeInterval.fromIso8601({
iso8601: "2019-01-01/2019-01-04",
})
);
var entity1 = new Entity({
id: id,
availability: availability1,
});
collection1.add(entity1);
var collection2 = new EntityCollection();
var availability2 = new TimeIntervalCollection();
availability2.addInterval(
TimeInterval.fromIso8601({
iso8601: "2019-01-02/2019-01-05",
})
);
var entity2 = new Entity({
id: id,
availability: availability2,
});
collection2.add(entity2);
var collection3 = new EntityCollection();
var availability3 = new TimeIntervalCollection();
availability3.addInterval(
TimeInterval.fromIso8601({
iso8601: "2019-01-03/2019-01-06",
})
);
var entity3 = new Entity({
id: id,
availability: availability3,
});
collection3.add(entity3);
//Add collections in reverse order to lower numbers of priority
var composite = new CompositeEntityCollection();
composite.addCollection(collection3);
composite.addCollection(collection2);
composite.addCollection(collection1);
var compositeObject = composite.getById(id);
expect(compositeObject.availability.start).toEqual(
JulianDate.fromIso8601("2019-01-01")
);
composite.removeCollection(collection1);
expect(compositeObject.availability.start).toEqual(
JulianDate.fromIso8601("2019-01-02")
);
composite.removeCollection(collection2);
expect(compositeObject.availability.start).toEqual(
JulianDate.fromIso8601("2019-01-03")
);
});
it("works when collection being composited suspends updates", function () {
var collection = new EntityCollection();
var composite = new CompositeEntityCollection([collection]);
collection.suspendEvents();
collection.getOrCreateEntity("id1");
collection.getOrCreateEntity("id2");
expect(composite.getById("id1")).toBeUndefined();
expect(composite.getById("id2")).toBeUndefined();
collection.resumeEvents();
expect(composite.getById("id1")).toBeDefined();
expect(composite.getById("id2")).toBeDefined();
});
it("custom entity properties are properly registed on new composited entity.", function () {
var oldValue = "tubelcane";
var newValue = "fizzbuzz";
var propertyName = "customProperty";
var collection = new EntityCollection();
var e1 = collection.getOrCreateEntity("id1");
e1.addProperty(propertyName);
e1[propertyName] = oldValue;
var composite = new CompositeEntityCollection([collection]);
var e1Composite = composite.getById("id1");
expect(e1Composite[propertyName]).toEqual(e1[propertyName]);
var listener = jasmine.createSpy("listener");
e1Composite.definitionChanged.addEventListener(listener);
e1[propertyName] = newValue;
expect(listener).toHaveBeenCalledWith(
e1Composite,
propertyName,
newValue,
oldValue
);
});
it("custom entity properties are properly registed on existing composited entity.", function () {
var oldValue = "tubelcane";
var newValue = "fizzbuzz";
var propertyName = "customProperty";
var collection = new EntityCollection();
var e1 = collection.getOrCreateEntity("id1");
var composite = new CompositeEntityCollection([collection]);
e1.addProperty(propertyName);
e1[propertyName] = oldValue;
var e1Composite = composite.getById("id1");
expect(e1Composite[propertyName]).toEqual(e1[propertyName]);
var listener = jasmine.createSpy("listener");
e1Composite.definitionChanged.addEventListener(listener);
e1[propertyName] = newValue;
expect(listener).toHaveBeenCalledWith(
e1Composite,
propertyName,
newValue,
oldValue
);
});
it("can use the same entity collection in multiple composites", function () {
var id = "test";
// the entity in collection1 has show === true
var collection1 = new EntityCollection();
var entity1 = new Entity({
id: id,
});
entity1.billboard = new BillboardGraphics();
entity1.billboard.show = new ConstantProperty(true);
collection1.add(entity1);
// the entity in collection1 has show === false
var collection2 = new EntityCollection();
var entity2 = new Entity({
id: id,
});
entity2.billboard = new BillboardGraphics();
entity2.billboard.show = new ConstantProperty(false);
collection2.add(entity2);
// composite1 has collection1 as higher priority
var composite1 = new CompositeEntityCollection();
composite1.addCollection(collection2);
composite1.addCollection(collection1);
// composite2 has collection2 as higher priority
var composite2 = new CompositeEntityCollection();
composite2.addCollection(collection1);
composite2.addCollection(collection2);
expect(
composite1.getById(id).billboard.show.getValue(JulianDate.now())
).toEqual(true);
expect(
composite2.getById(id).billboard.show.getValue(JulianDate.now())
).toEqual(false);
// switch the billboard show for the entity in collection2 to true, this should affect
// composite2 but not composite1
entity2.billboard.show = new ConstantProperty(true);
expect(
composite2.getById(id).billboard.show.getValue(JulianDate.now())
).toEqual(true);
expect(composite1.getById(id).billboard.show).toBe(entity1.billboard.show);
expect(composite2.getById(id).billboard.show).toBe(entity2.billboard.show);
// add a position property to the entity in collection1
entity1.position = new CompositePositionProperty();
// both composites should use the position from the object in collection1
expect(composite1.getById(id).position).toBe(entity1.position);
expect(composite2.getById(id).position).toBe(entity1.position);
// add a position property to the entity in collection1
entity2.position = new CompositePositionProperty();
// composite1 should use the position from the object in collection1
// composite2 should use the position from the object in collection2
expect(composite1.getById(id).position).toBe(entity1.position);
expect(composite2.getById(id).position).toBe(entity2.position);
});
it("has entity with link to entity collection", function () {
var id = "test";
var collection = new EntityCollection();
var entity = new Entity({
id: id,
});
collection.add(entity);
var composite = new CompositeEntityCollection();
composite.addCollection(collection);
var compositeEntity = composite.getCollection(0).values[0];
expect(compositeEntity.entityCollection).toEqual(collection);
});
it("suspend events suspends recompositing", function () {
var id = "test";
var collection1 = new EntityCollection();
var entity1 = new Entity({
id: id,
});
collection1.add(entity1);
var collection2 = new EntityCollection();
var entity2 = new Entity({
id: id,
});
collection2.add(entity2);
//Add collections in reverse order to lower numbers of priority
var composite = new CompositeEntityCollection();
composite.addCollection(collection2);
// suspend events
composite.suspendEvents();
composite.addCollection(collection1);
// add a billboard
var compositeObject = composite.getById(id);
entity1.billboard = new BillboardGraphics();
entity1.billboard.show = new ConstantProperty(false);
// should be undefined because we haven't recomposited
expect(compositeObject.billboard).toBeUndefined();
// resume events
composite.resumeEvents();
expect(compositeObject.billboard.show).toBe(entity1.billboard.show);
});
it("prevents names from colliding between property events and object events", function () {
var id = "test";
var collection1 = new EntityCollection();
var entity1 = new Entity({
id: id,
});
collection1.add(entity1);
var collection2 = new EntityCollection();
var entity2 = new Entity({
id: id,
});
collection2.add(entity2);
//Add collections in reverse order to lower numbers of priority
var composite = new CompositeEntityCollection();
composite.addCollection(collection2);
composite.addCollection(collection1);
var compositeObject = composite.getById(id);
// Add a billboard
entity1.billboard = new BillboardGraphics();
entity1.billboard.show = new ConstantProperty(false);
expect(compositeObject.billboard.show).toBe(entity1.billboard.show);
// Add a new object
var newObject = new Entity({
id: id + "billboard",
});
collection1.add(newObject);
// Replace the billboard on the original object
entity1.billboard = new BillboardGraphics();
entity1.billboard.show = new ConstantProperty(false);
// Add a property to the new object
newObject.position = new CompositePositionProperty();
// It should appear on the composite
expect(composite.getById(newObject.id).position).toBe(newObject.position);
});
it("addCollection throws with undefined collection", function () {
var composite = new CompositeEntityCollection();
expect(function () {
composite.addCollection(undefined);
}).toThrowDeveloperError();
});
it("addCollection throws if negative index", function () {
var collection = new EntityCollection();
var composite = new CompositeEntityCollection();
expect(function () {
composite.addCollection(collection, -1);
}).toThrowDeveloperError();
});
it("addCollection throws if index greater than length", function () {
var collection = new EntityCollection();
var composite = new CompositeEntityCollection();
expect(function () {
composite.addCollection(collection, 1);
}).toThrowDeveloperError();
});
it("getCollection throws with undefined index", function () {
var composite = new CompositeEntityCollection();
expect(function () {
composite.getCollection(undefined);
}).toThrowDeveloperError();
});
it("raiseCollection throws if collection not in composite", function () {
var composite = new CompositeEntityCollection();
var collection = new EntityCollection();
expect(function () {
composite.raiseCollection(collection);
}).toThrowDeveloperError();
});
it("raiseCollectionToTop throws if collection not in composite", function () {
var composite = new CompositeEntityCollection();
var collection = new EntityCollection();
expect(function () {
composite.raiseCollectionToTop(collection);
}).toThrowDeveloperError();
});
it("lowerCollection throws if collection not in composite", function () {
var composite = new CompositeEntityCollection();
var collection = new EntityCollection();
expect(function () {
composite.lowerCollection(collection);
}).toThrowDeveloperError();
});
it("lowerCollectionToBottom throws if collection not in composite", function () {
var composite = new CompositeEntityCollection();
var collection = new EntityCollection();
expect(function () {
composite.lowerCollectionToBottom(collection);
}).toThrowDeveloperError();
});
it("raiseCollection throws if collection not defined", function () {
var composite = new CompositeEntityCollection();
expect(function () {
composite.raiseCollection(undefined);
}).toThrowDeveloperError();
});
it("raiseCollectionToTop throws if collection not defined", function () {
var composite = new CompositeEntityCollection();
expect(function () {
composite.raiseCollectionToTop(undefined);
}).toThrowDeveloperError();
});
it("lowerCollection throws if collection not defined", function () {
var composite = new CompositeEntityCollection();
expect(function () {
composite.lowerCollection(undefined);
}).toThrowDeveloperError();
});
it("lowerCollectionToBottom throws if collection not defined", function () {
var composite = new CompositeEntityCollection();
expect(function () {
composite.lowerCollectionToBottom(undefined);
}).toThrowDeveloperError();
});
it("resumeEvents throws if no matching suspendEvents", function () {
var composite = new CompositeEntityCollection();
expect(function () {
composite.resumeEvents();
}).toThrowDeveloperError();
});
it("getById throws if no id specified", function () {
var composite = new CompositeEntityCollection();
expect(function () {
composite.getById(undefined);
}).toThrowDeveloperError();
});
});