322 lines
17 KiB
JavaScript
322 lines
17 KiB
JavaScript
defineSuite([
|
|
'DataSources/ModelGraphics',
|
|
'Core/Cartesian2',
|
|
'Core/Cartesian3',
|
|
'Core/Color',
|
|
'Core/DistanceDisplayCondition',
|
|
'Core/JulianDate',
|
|
'Core/Quaternion',
|
|
'DataSources/ConstantProperty',
|
|
'DataSources/NodeTransformationProperty',
|
|
'DataSources/PropertyBag',
|
|
'Scene/ClippingPlaneCollection',
|
|
'Scene/ColorBlendMode',
|
|
'Scene/HeightReference',
|
|
'Scene/ShadowMode'
|
|
], function(
|
|
ModelGraphics,
|
|
Cartesian2,
|
|
Cartesian3,
|
|
Color,
|
|
DistanceDisplayCondition,
|
|
JulianDate,
|
|
Quaternion,
|
|
ConstantProperty,
|
|
NodeTransformationProperty,
|
|
PropertyBag,
|
|
ClippingPlaneCollection,
|
|
ColorBlendMode,
|
|
HeightReference,
|
|
ShadowMode) {
|
|
'use strict';
|
|
|
|
it('creates expected instance from raw assignment and construction', function() {
|
|
var options = {
|
|
uri : '0',
|
|
scale : 1,
|
|
show : false,
|
|
minimumPixelSize : 2,
|
|
maximumScale : 200,
|
|
incrementallyLoadTextures : false,
|
|
runAnimations : false,
|
|
clampAnimations : false,
|
|
shadows : ShadowMode.DISABLED,
|
|
heightReference : HeightReference.CLAMP_TO_GROUND,
|
|
distanceDisplayCondition : new DistanceDisplayCondition(),
|
|
silhouetteColor : new Color(1.0, 0.0, 0.0, 1.0),
|
|
silhouetteSize : 3.0,
|
|
color : new Color(0.0, 1.0, 0.0, 0.2),
|
|
colorBlendMode : ColorBlendMode.HIGHLIGHT,
|
|
colorBlendAmount : 0.5,
|
|
clippingPlanes : new ClippingPlaneCollection(),
|
|
imageBasedLightingFactor : new Cartesian2(0.5, 0.5),
|
|
lightColor : new Color(1.0, 1.0, 0.0, 1.0),
|
|
nodeTransformations : {
|
|
node1 : {
|
|
translation : Cartesian3.UNIT_Y,
|
|
rotation : new Quaternion(0.5, 0.5, 0.5, 0.5),
|
|
scale : Cartesian3.UNIT_X
|
|
}
|
|
}
|
|
};
|
|
|
|
var model = new ModelGraphics(options);
|
|
expect(model.uri).toBeInstanceOf(ConstantProperty);
|
|
expect(model.scale).toBeInstanceOf(ConstantProperty);
|
|
expect(model.show).toBeInstanceOf(ConstantProperty);
|
|
expect(model.minimumPixelSize).toBeInstanceOf(ConstantProperty);
|
|
expect(model.maximumScale).toBeInstanceOf(ConstantProperty);
|
|
expect(model.incrementallyLoadTextures).toBeInstanceOf(ConstantProperty);
|
|
expect(model.shadows).toBeInstanceOf(ConstantProperty);
|
|
expect(model.heightReference).toBeInstanceOf(ConstantProperty);
|
|
expect(model.distanceDisplayCondition).toBeInstanceOf(ConstantProperty);
|
|
expect(model.silhouetteColor).toBeInstanceOf(ConstantProperty);
|
|
expect(model.silhouetteSize).toBeInstanceOf(ConstantProperty);
|
|
expect(model.color).toBeInstanceOf(ConstantProperty);
|
|
expect(model.colorBlendMode).toBeInstanceOf(ConstantProperty);
|
|
expect(model.colorBlendAmount).toBeInstanceOf(ConstantProperty);
|
|
expect(model.clippingPlanes).toBeInstanceOf(ConstantProperty);
|
|
expect(model.imageBasedLightingFactor).toBeInstanceOf(ConstantProperty);
|
|
expect(model.lightColor).toBeInstanceOf(ConstantProperty);
|
|
expect(model.runAnimations).toBeInstanceOf(ConstantProperty);
|
|
expect(model.clampAnimations).toBeInstanceOf(ConstantProperty);
|
|
|
|
expect(model.nodeTransformations).toBeInstanceOf(PropertyBag);
|
|
|
|
expect(model.uri.getValue()).toEqual(options.uri);
|
|
expect(model.scale.getValue()).toEqual(options.scale);
|
|
expect(model.show.getValue()).toEqual(options.show);
|
|
expect(model.minimumPixelSize.getValue()).toEqual(options.minimumPixelSize);
|
|
expect(model.maximumScale.getValue()).toEqual(options.maximumScale);
|
|
expect(model.incrementallyLoadTextures.getValue()).toEqual(options.incrementallyLoadTextures);
|
|
expect(model.shadows.getValue()).toEqual(options.shadows);
|
|
expect(model.heightReference.getValue()).toEqual(options.heightReference);
|
|
expect(model.distanceDisplayCondition.getValue()).toEqual(options.distanceDisplayCondition);
|
|
expect(model.silhouetteColor.getValue()).toEqual(options.silhouetteColor);
|
|
expect(model.silhouetteSize.getValue()).toEqual(options.silhouetteSize);
|
|
expect(model.color.getValue()).toEqual(options.color);
|
|
expect(model.colorBlendMode.getValue()).toEqual(options.colorBlendMode);
|
|
expect(model.colorBlendAmount.getValue()).toEqual(options.colorBlendAmount);
|
|
expect(model.clippingPlanes.getValue().planes).toEqual(options.clippingPlanes.planes);
|
|
expect(model.imageBasedLightingFactor.getValue()).toEqual(options.imageBasedLightingFactor);
|
|
expect(model.lightColor.getValue()).toEqual(options.lightColor);
|
|
expect(model.runAnimations.getValue()).toEqual(options.runAnimations);
|
|
expect(model.clampAnimations.getValue()).toEqual(options.clampAnimations);
|
|
|
|
var actualNodeTransformations = model.nodeTransformations.getValue(new JulianDate());
|
|
var expectedNodeTransformations = options.nodeTransformations;
|
|
|
|
// by default toEqual requires constructors to match. for the purposes of this test, we only care about the structure.
|
|
actualNodeTransformations = JSON.parse(JSON.stringify(actualNodeTransformations));
|
|
expectedNodeTransformations = JSON.parse(JSON.stringify(expectedNodeTransformations));
|
|
expect(actualNodeTransformations).toEqual(expectedNodeTransformations);
|
|
});
|
|
|
|
it('merge assigns unassigned properties', function() {
|
|
var source = new ModelGraphics();
|
|
source.uri = new ConstantProperty('');
|
|
source.show = new ConstantProperty(true);
|
|
source.scale = new ConstantProperty(1.0);
|
|
source.minimumPixelSize = new ConstantProperty(2.0);
|
|
source.maximumScale = new ConstantProperty(200.0);
|
|
source.incrementallyLoadTextures = new ConstantProperty(true);
|
|
source.shadows = new ConstantProperty(ShadowMode.ENABLED);
|
|
source.heightReference = new ConstantProperty(HeightReference.CLAMP_TO_GROUND);
|
|
source.distanceDisplayCondition = new ConstantProperty(new DistanceDisplayCondition());
|
|
source.silhouetteColor = new ConstantProperty(new Color(1.0, 0.0, 0.0, 1.0));
|
|
source.silhouetteSize = new ConstantProperty(3.0);
|
|
source.color = new ConstantProperty(new Color(0.0, 1.0, 0.0, 0.2));
|
|
source.colorBlendMode = new ConstantProperty(ColorBlendMode.HIGHLIGHT);
|
|
source.colorBlendAmount = new ConstantProperty(0.5);
|
|
source.clippingPlanes = new ConstantProperty(new ClippingPlaneCollection());
|
|
source.imageBasedLightingFactor = new ConstantProperty(new Cartesian2(0.5, 0.5));
|
|
source.lightColor = new ConstantProperty(new Color(1.0, 1.0, 0.0, 1.0));
|
|
source.runAnimations = new ConstantProperty(true);
|
|
source.clampAnimations = new ConstantProperty(true);
|
|
source.nodeTransformations = {
|
|
node1 : new NodeTransformationProperty({
|
|
translation : Cartesian3.UNIT_Y,
|
|
rotation : new Quaternion(0.5, 0.5, 0.5, 0.5),
|
|
scale : Cartesian3.UNIT_X
|
|
}),
|
|
node2 : new NodeTransformationProperty({
|
|
scale : Cartesian3.UNIT_Z
|
|
})
|
|
};
|
|
|
|
var target = new ModelGraphics();
|
|
target.merge(source);
|
|
|
|
expect(target.uri).toBe(source.uri);
|
|
expect(target.show).toBe(source.show);
|
|
expect(target.scale).toBe(source.scale);
|
|
expect(target.minimumPixelSize).toBe(source.minimumPixelSize);
|
|
expect(target.maximumScale).toBe(source.maximumScale);
|
|
expect(target.incrementallyLoadTextures).toBe(source.incrementallyLoadTextures);
|
|
expect(target.shadows).toBe(source.shadows);
|
|
expect(target.heightReference).toBe(source.heightReference);
|
|
expect(target.distanceDisplayCondition).toBe(source.distanceDisplayCondition);
|
|
expect(target.silhouetteColor).toEqual(source.silhouetteColor);
|
|
expect(target.silhouetteSize).toEqual(source.silhouetteSize);
|
|
expect(target.color).toBe(source.color);
|
|
expect(target.colorBlendMode).toBe(source.colorBlendMode);
|
|
expect(target.colorBlendAmount).toBe(source.colorBlendAmount);
|
|
expect(target.clippingPlanes).toBe(source.clippingPlanes);
|
|
expect(target.imageBasedLightingFactor).toBe(source.imageBasedLightingFactor);
|
|
expect(target.lightColor).toBe(source.lightColor);
|
|
expect(target.runAnimations).toBe(source.runAnimations);
|
|
expect(target.clampAnimations).toBe(source.clampAnimations);
|
|
expect(target.nodeTransformations).toEqual(source.nodeTransformations);
|
|
});
|
|
|
|
it('merge does not assign assigned properties', function() {
|
|
var source = new ModelGraphics();
|
|
source.uri = new ConstantProperty('');
|
|
source.show = new ConstantProperty(true);
|
|
source.scale = new ConstantProperty(1.0);
|
|
source.minimumPixelSize = new ConstantProperty(2.0);
|
|
source.maximumScale = new ConstantProperty(200.0);
|
|
source.incrementallyLoadTextures = new ConstantProperty(true);
|
|
source.shadows = new ConstantProperty(ShadowMode.ENABLED);
|
|
source.heightReference = new ConstantProperty(HeightReference.CLAMP_TO_GROUND);
|
|
source.distanceDisplayCondition = new ConstantProperty(new DistanceDisplayCondition());
|
|
source.silhouetteColor = new ConstantProperty(new Color());
|
|
source.silhouetteSize = new ConstantProperty(1.0);
|
|
source.color = new ConstantProperty(new Color(0.0, 1.0, 0.0, 0.2));
|
|
source.colorBlendMode = new ConstantProperty(ColorBlendMode.HIGHLIGHT);
|
|
source.colorBlendAmount = new ConstantProperty(0.5);
|
|
source.clippingPlanes = new ConstantProperty(new ClippingPlaneCollection());
|
|
source.imageBasedLightingFactor = new ConstantProperty(new Cartesian2(0.5, 0.5));
|
|
source.lightColor = new ConstantProperty(new Color(1.0, 1.0, 0.0, 1.0));
|
|
source.runAnimations = new ConstantProperty(true);
|
|
source.clampAnimations = new ConstantProperty(true);
|
|
source.nodeTransformations = {
|
|
transform : new NodeTransformationProperty()
|
|
};
|
|
|
|
var uri = new ConstantProperty('');
|
|
var show = new ConstantProperty(true);
|
|
var scale = new ConstantProperty(1.0);
|
|
var minimumPixelSize = new ConstantProperty(2.0);
|
|
var maximumScale = new ConstantProperty(200.0);
|
|
var incrementallyLoadTextures = new ConstantProperty(true);
|
|
var shadows = new ConstantProperty(ShadowMode.ENABLED);
|
|
var heightReference = new ConstantProperty(HeightReference.CLAMP_TO_GROUND);
|
|
var distanceDisplayCondition = new ConstantProperty(new DistanceDisplayCondition());
|
|
var silhouetteColor = new ConstantProperty(new Color());
|
|
var silhouetteSize = new ConstantProperty(1.0);
|
|
var color = new ConstantProperty(new Color(0.0, 1.0, 0.0, 0.2));
|
|
var colorBlendMode = new ConstantProperty(ColorBlendMode.HIGHLIGHT);
|
|
var colorBlendAmount = new ConstantProperty(0.5);
|
|
var clippingPlanes = new ConstantProperty(new ClippingPlaneCollection());
|
|
var imageBasedLightingFactor = new ConstantProperty(new Cartesian2(0.5, 0.5));
|
|
var lightColor = new ConstantProperty(new Color(1.0, 1.0, 0.0, 1.0));
|
|
var runAnimations = new ConstantProperty(true);
|
|
var clampAnimations = new ConstantProperty(true);
|
|
var nodeTransformations = new PropertyBag({
|
|
transform : new NodeTransformationProperty()
|
|
});
|
|
|
|
var target = new ModelGraphics();
|
|
target.uri = uri;
|
|
target.show = show;
|
|
target.scale = scale;
|
|
target.minimumPixelSize = minimumPixelSize;
|
|
target.maximumScale = maximumScale;
|
|
target.incrementallyLoadTextures = incrementallyLoadTextures;
|
|
target.shadows = shadows;
|
|
target.heightReference = heightReference;
|
|
target.distanceDisplayCondition = distanceDisplayCondition;
|
|
target.silhouetteColor = silhouetteColor;
|
|
target.silhouetteSize = silhouetteSize;
|
|
target.color = color;
|
|
target.colorBlendMode = colorBlendMode;
|
|
target.colorBlendAmount = colorBlendAmount;
|
|
target.clippingPlanes = clippingPlanes;
|
|
target.imageBasedLightingFactor = imageBasedLightingFactor;
|
|
target.lightColor = lightColor;
|
|
target.runAnimations = runAnimations;
|
|
target.clampAnimations = clampAnimations;
|
|
target.nodeTransformations = nodeTransformations;
|
|
|
|
target.merge(source);
|
|
|
|
expect(target.uri).toBe(uri);
|
|
expect(target.show).toBe(show);
|
|
expect(target.scale).toBe(scale);
|
|
expect(target.minimumPixelSize).toBe(minimumPixelSize);
|
|
expect(target.maximumScale).toBe(maximumScale);
|
|
expect(target.incrementallyLoadTextures).toBe(incrementallyLoadTextures);
|
|
expect(target.shadows).toBe(shadows);
|
|
expect(target.heightReference).toBe(heightReference);
|
|
expect(target.distanceDisplayCondition).toBe(distanceDisplayCondition);
|
|
expect(target.silhouetteColor).toBe(silhouetteColor);
|
|
expect(target.silhouetteSize).toBe(silhouetteSize);
|
|
expect(target.color).toBe(color);
|
|
expect(target.colorBlendMode).toBe(colorBlendMode);
|
|
expect(target.colorBlendAmount).toBe(colorBlendAmount);
|
|
expect(target.clippingPlanes).toBe(clippingPlanes);
|
|
expect(target.imageBasedLightingFactor).toBe(imageBasedLightingFactor);
|
|
expect(target.lightColor).toBe(lightColor);
|
|
expect(target.runAnimations).toBe(runAnimations);
|
|
expect(target.clampAnimations).toBe(clampAnimations);
|
|
expect(target.nodeTransformations).toBe(nodeTransformations);
|
|
});
|
|
|
|
it('clone works', function() {
|
|
var source = new ModelGraphics();
|
|
source.uri = new ConstantProperty('');
|
|
source.show = new ConstantProperty(true);
|
|
source.scale = new ConstantProperty(1.0);
|
|
source.minimumPixelSize = new ConstantProperty(2.0);
|
|
source.maximumScale = new ConstantProperty(200.0);
|
|
source.incrementallyLoadTextures = new ConstantProperty(true);
|
|
source.shadows = new ConstantProperty(ShadowMode.ENABLED);
|
|
source.heightReference = new ConstantProperty(HeightReference.CLAMP_TO_GROUND);
|
|
source.distanceDisplayCondition = new ConstantProperty(new DistanceDisplayCondition());
|
|
source.silhouetteColor = new ConstantProperty(new Color());
|
|
source.silhouetteSize = new ConstantProperty(2.0);
|
|
source.color = new ConstantProperty(new Color(0.0, 1.0, 0.0, 0.2));
|
|
source.colorBlendMode = new ConstantProperty(ColorBlendMode.HIGHLIGHT);
|
|
source.colorBlendAmount = new ConstantProperty(0.5);
|
|
source.clippingPlanes = new ConstantProperty(new ClippingPlaneCollection());
|
|
source.imageBasedLightingFactor = new ConstantProperty(new Cartesian2(0.5, 0.5));
|
|
source.lightColor = new ConstantProperty(new Color(1.0, 1.0, 0.0, 1.0));
|
|
source.runAnimations = new ConstantProperty(true);
|
|
source.clampAnimations = new ConstantProperty(true);
|
|
source.nodeTransformations = {
|
|
node1 : new NodeTransformationProperty(),
|
|
node2 : new NodeTransformationProperty()
|
|
};
|
|
|
|
var result = source.clone();
|
|
expect(result.uri).toBe(source.uri);
|
|
expect(result.show).toBe(source.show);
|
|
expect(result.scale).toBe(source.scale);
|
|
expect(result.minimumPixelSize).toBe(source.minimumPixelSize);
|
|
expect(result.maximumScale).toBe(source.maximumScale);
|
|
expect(result.incrementallyLoadTextures).toBe(source.incrementallyLoadTextures);
|
|
expect(result.shadows).toBe(source.shadows);
|
|
expect(result.heightReference).toBe(source.heightReference);
|
|
expect(result.distanceDisplayCondition).toBe(source.distanceDisplayCondition);
|
|
expect(result.silhouetteColor).toEqual(source.silhouetteColor);
|
|
expect(result.silhouetteSize).toEqual(source.silhouetteSize);
|
|
expect(result.color).toBe(source.color);
|
|
expect(result.colorBlendMode).toBe(source.colorBlendMode);
|
|
expect(result.colorBlendAmount).toBe(source.colorBlendAmount);
|
|
expect(result.clippingPlanes).toBe(source.clippingPlanes);
|
|
expect(result.imageBasedLightingFactor).toBe(source.imageBasedLightingFactor);
|
|
expect(result.lightColor).toBe(source.lightColor);
|
|
expect(result.runAnimations).toBe(source.runAnimations);
|
|
expect(result.clampAnimations).toBe(source.clampAnimations);
|
|
expect(result.nodeTransformations).toEqual(source.nodeTransformations);
|
|
});
|
|
|
|
it('merge throws if source undefined', function() {
|
|
var target = new ModelGraphics();
|
|
expect(function() {
|
|
target.merge(undefined);
|
|
}).toThrowDeveloperError();
|
|
});
|
|
});
|