maplibre-gl
Version:
BSD licensed community fork of mapbox-gl, a WebGL interactive maps library
63 lines (49 loc) • 2.56 kB
text/typescript
import {EvaluationContext, FormattedSection, createExpression, StyleExpression, ZoomConstantExpression} from '@maplibre/maplibre-gl-style-spec';
import properties from './style_layer/symbol_style_layer_properties.g';
import {PossiblyEvaluatedPropertyValue} from './properties';
import {FormatSectionOverride} from './format_section_override';
import {EvaluationParameters} from './evaluation_parameters';
describe('evaluate', () => {
test('override constant', () => {
const defaultColor = {'r': 0, 'g': 1, 'b': 0, 'a': 1};
const overriddenColor = {'r': 1, 'g': 0, 'b': 0, 'a': 1};
const overridden = new PossiblyEvaluatedPropertyValue(
properties.paint.properties['text-color'],
{kind: 'constant', value: defaultColor},
{zoom: 0, zoomHistory: {}} as EvaluationParameters
);
const override = new FormatSectionOverride(overridden);
const ctx = new EvaluationContext();
ctx.feature = {} as any;
ctx.featureState = {};
expect(override.evaluate(ctx)).toEqual(defaultColor);
ctx.formattedSection = {textColor: overriddenColor} as FormattedSection;
expect(override.evaluate(ctx)).toEqual(overriddenColor);
});
test('override expression', () => {
const warn = console.warn;
console.warn = (_) => {};
const defaultColor = {'r': 0, 'g': 0, 'b': 0, 'a': 1};
const propertyColor = {'r': 1, 'g': 0, 'b': 0, 'a': 1};
const overriddenColor = {'r': 0, 'g': 0, 'b': 1, 'a': 1};
const styleExpr = createExpression(
['get', 'color'],
properties.paint.properties['text-color'].specification);
const sourceExpr = new ZoomConstantExpression('source', styleExpr.value as StyleExpression);
const overridden = new PossiblyEvaluatedPropertyValue(
properties.paint.properties['text-color'],
sourceExpr,
{zoom: 0, zoomHistory: {}} as EvaluationParameters
);
const override = new FormatSectionOverride(overridden);
const ctx = new EvaluationContext();
ctx.feature = {properties: {}} as any;
ctx.featureState = {};
expect(override.evaluate(ctx)).toEqual(defaultColor);
ctx.feature.properties.color = 'red';
expect(override.evaluate(ctx)).toEqual(propertyColor);
ctx.formattedSection = {textColor: overriddenColor} as FormattedSection;
expect(override.evaluate(ctx)).toEqual(overriddenColor);
console.warn = warn;
});
});