DSDSServer2024/build/build.20240805/static/js/Cesium-1.53/Specs/Scene/ConditionsExpressionSpec.js

121 lines
4.6 KiB
JavaScript

defineSuite([
'Scene/ConditionsExpression',
'Core/Cartesian4',
'Core/Color'
], function(
ConditionsExpression,
Cartesian4,
Color) {
'use strict';
function MockFeature(value) {
this._value = value;
}
MockFeature.prototype.getProperty = function() {
return this._value;
};
var jsonExp = {
conditions : [
['${Height} > 100', 'color("blue")'],
['${Height} > 50', 'color("red")'],
['true', 'color("lime")']
]
};
var defines = {
halfHeight: '${Height}/2',
quarterHeight: '${Height}/4'
};
var jsonExpWithDefines = {
conditions : [
['${halfHeight} > 50 && ${halfHeight} < 100', 'color("blue")'],
['${quarterHeight} > 50 && ${quarterHeight} < 52', 'color("red")'],
['true', 'color("lime")']
]
};
it('constructs', function() {
var expression = new ConditionsExpression(jsonExp);
expect(expression.conditionsExpression).toEqual(jsonExp);
});
it('evaluates conditional', function() {
var expression = new ConditionsExpression(jsonExp);
expect(expression.evaluateColor(new MockFeature(101))).toEqual(Color.BLUE);
expect(expression.evaluateColor(new MockFeature(52))).toEqual(Color.RED);
expect(expression.evaluateColor(new MockFeature(3))).toEqual(Color.LIME);
});
it('evaluates conditional with defines', function() {
var expression = new ConditionsExpression(jsonExpWithDefines, defines);
expect(expression.evaluateColor(new MockFeature(101))).toEqual(Color.BLUE);
expect(expression.evaluateColor(new MockFeature(52))).toEqual(Color.LIME);
expect(expression.evaluateColor(new MockFeature(3))).toEqual(Color.LIME);
});
it('evaluate takes result argument', function() {
var result = new Cartesian4();
var expression = new ConditionsExpression(jsonExpWithDefines, defines, result);
var value = expression.evaluate(new MockFeature(101), result);
expect(value).toEqual(new Cartesian4(0.0, 0.0, 1.0, 1.0));
expect(value).toBe(result);
});
it('evaluate takes a color result argument', function() {
var result = new Color();
var expression = new ConditionsExpression(jsonExpWithDefines, defines, result);
var value = expression.evaluate(new MockFeature(101), result);
expect(value).toEqual(Color.BLUE);
expect(value).toBe(result);
});
it('constructs and evaluates empty conditional', function() {
var expression = new ConditionsExpression({
'conditions' : []
});
expect(expression._conditions).toEqual([]);
expect(expression.evaluate(new MockFeature(101))).toEqual(undefined);
expect(expression.evaluate(new MockFeature(52))).toEqual(undefined);
expect(expression.evaluate(new MockFeature(3))).toEqual(undefined);
});
it('constructs and evaluates empty', function() {
var expression = new ConditionsExpression([]);
expect(expression._conditions).toEqual(undefined);
expect(expression.evaluate(new MockFeature(101))).toEqual(undefined);
expect(expression.evaluate(new MockFeature(52))).toEqual(undefined);
expect(expression.evaluate(new MockFeature(3))).toEqual(undefined);
});
it('gets shader function', function() {
var expression = new ConditionsExpression(jsonExp);
var shaderFunction = expression.getShaderFunction('getColor', '', {}, 'vec4');
var expected = 'vec4 getColor() \n' +
'{ \n' +
' if ((Height > 100.0)) \n' +
' { \n' +
' return vec4(vec3(0.0, 0.0, 1.0), 1.0); \n' +
' } \n' +
' else if ((Height > 50.0)) \n' +
' { \n' +
' return vec4(vec3(1.0, 0.0, 0.0), 1.0); \n' +
' } \n' +
' else if (true) \n' +
' { \n' +
' return vec4(vec3(0.0, 1.0, 0.0), 1.0); \n' +
' } \n' +
' return vec4(1.0); \n' +
'} \n';
expect(shaderFunction).toEqual(expected);
});
it('return undefined shader function when there are no conditions', function() {
var expression = new ConditionsExpression([]);
var shaderFunction = expression.getShaderFunction('getColor', '', {}, 'vec4');
expect(shaderFunction).toBeUndefined();
});
});