defineSuite([ 'DataSources/PointGraphics', 'Core/Color', 'Core/DistanceDisplayCondition', 'Core/NearFarScalar', 'DataSources/ConstantProperty', 'Scene/HeightReference' ], function( PointGraphics, Color, DistanceDisplayCondition, NearFarScalar, ConstantProperty, HeightReference) { 'use strict'; it('creates expected instance from raw assignment and construction', function() { var options = { color : Color.RED, pixelSize : 1, outlineColor : Color.BLUE, outlineWidth : 2, show : false, scaleByDistance : new NearFarScalar(3, 4, 5, 6), heightReference : HeightReference.RELATIVE_TO_GROUND, distanceDisplayCondition : new DistanceDisplayCondition(10.0, 100.0), disableDepthTestDistance : 10.0 }; var point = new PointGraphics(options); expect(point.color).toBeInstanceOf(ConstantProperty); expect(point.pixelSize).toBeInstanceOf(ConstantProperty); expect(point.outlineColor).toBeInstanceOf(ConstantProperty); expect(point.outlineWidth).toBeInstanceOf(ConstantProperty); expect(point.show).toBeInstanceOf(ConstantProperty); expect(point.scaleByDistance).toBeInstanceOf(ConstantProperty); expect(point.heightReference).toBeInstanceOf(ConstantProperty); expect(point.distanceDisplayCondition).toBeInstanceOf(ConstantProperty); expect(point.disableDepthTestDistance).toBeInstanceOf(ConstantProperty); expect(point.color.getValue()).toEqual(options.color); expect(point.pixelSize.getValue()).toEqual(options.pixelSize); expect(point.outlineColor.getValue()).toEqual(options.outlineColor); expect(point.outlineWidth.getValue()).toEqual(options.outlineWidth); expect(point.show.getValue()).toEqual(options.show); expect(point.scaleByDistance.getValue()).toEqual(options.scaleByDistance); expect(point.heightReference.getValue()).toEqual(options.heightReference); expect(point.distanceDisplayCondition.getValue()).toEqual(options.distanceDisplayCondition); expect(point.disableDepthTestDistance.getValue()).toEqual(options.disableDepthTestDistance); }); it('merge assigns unassigned properties', function() { var source = new PointGraphics(); source.color = new ConstantProperty(Color.WHITE); source.pixelSize = new ConstantProperty(1); source.outlineColor = new ConstantProperty(Color.WHITE); source.outlineWidth = new ConstantProperty(1); source.show = new ConstantProperty(true); source.scaleByDistance = new ConstantProperty(new NearFarScalar()); source.heightReference = new ConstantProperty(HeightReference.RELATIVE_TO_GROUND); source.distanceDisplayCondition = new ConstantProperty(new DistanceDisplayCondition(10.0, 100.0)); source.disableDepthTestDistance = new ConstantProperty(10.0); var target = new PointGraphics(); target.merge(source); expect(target.color).toBe(source.color); expect(target.pixelSize).toBe(source.pixelSize); expect(target.outlineColor).toBe(source.outlineColor); expect(target.outlineWidth).toBe(source.outlineWidth); expect(target.show).toBe(source.show); expect(target.scaleByDistance).toBe(source.scaleByDistance); expect(target.heightReference).toBe(source.heightReference); expect(target.distanceDisplayCondition).toBe(source.distanceDisplayCondition); expect(target.disableDepthTestDistance).toBe(source.disableDepthTestDistance); }); it('merge does not assign assigned properties', function() { var source = new PointGraphics(); source.color = new ConstantProperty(Color.WHITE); source.pixelSize = new ConstantProperty(1); source.outlineColor = new ConstantProperty(Color.WHITE); source.outlineWidth = new ConstantProperty(1); source.show = new ConstantProperty(true); source.scaleByDistance = new ConstantProperty(new NearFarScalar()); source.heightReference = new ConstantProperty(HeightReference.RELATIVE_TO_GROUND); source.distanceDisplayCondition = new ConstantProperty(new DistanceDisplayCondition(10.0, 100.0)); source.disableDepthTestDistance = new ConstantProperty(10.0); var color = new ConstantProperty(Color.WHITE); var pixelSize = new ConstantProperty(1); var outlineColor = new ConstantProperty(Color.WHITE); var outlineWidth = new ConstantProperty(1); var show = new ConstantProperty(true); var heightReference = new ConstantProperty(HeightReference.CLAMP_TO_GROUND); var distanDisplayCondition = new ConstantProperty(new DistanceDisplayCondition(10.0, 100.0)); var disableDepthTestDistance = new ConstantProperty(20.0); var target = new PointGraphics(); target.color = color; target.pixelSize = pixelSize; target.outlineColor = outlineColor; target.outlineWidth = outlineWidth; target.show = show; target.scaleByDistance = show; target.heightReference = heightReference; target.distanceDisplayCondition = distanDisplayCondition; target.disableDepthTestDistance = disableDepthTestDistance; target.merge(source); expect(target.color).toBe(color); expect(target.pixelSize).toBe(pixelSize); expect(target.outlineColor).toBe(outlineColor); expect(target.outlineWidth).toBe(outlineWidth); expect(target.show).toBe(show); expect(target.scaleByDistance).toBe(show); expect(target.heightReference).toBe(heightReference); expect(target.distanceDisplayCondition).toBe(distanDisplayCondition); expect(target.disableDepthTestDistance).toBe(disableDepthTestDistance); }); it('clone works', function() { var source = new PointGraphics(); source.color = new ConstantProperty(Color.WHITE); source.pixelSize = new ConstantProperty(1); source.outlineColor = new ConstantProperty(Color.WHITE); source.outlineWidth = new ConstantProperty(1); source.show = new ConstantProperty(true); source.scaleByDistance = new ConstantProperty(new NearFarScalar()); source.heightReference = new ConstantProperty(HeightReference.RELATIVE_TO_GROUND); source.distanceDisplayCondition = new ConstantProperty(new DistanceDisplayCondition(10.0, 100.0)); source.disableDepthTestDistance = new ConstantProperty(10.0); var result = source.clone(); expect(result.color).toBe(source.color); expect(result.pixelSize).toBe(source.pixelSize); expect(result.outlineColor).toBe(source.outlineColor); expect(result.outlineWidth).toBe(source.outlineWidth); expect(result.show).toBe(source.show); expect(result.scaleByDistance).toBe(source.scaleByDistance); expect(result.heightReference).toBe(source.heightReference); expect(result.distanceDisplayCondition).toBe(source.distanceDisplayCondition); expect(result.disableDepthTestDistance).toBe(source.disableDepthTestDistance); }); it('merge throws if source undefined', function() { var target = new PointGraphics(); expect(function() { target.merge(undefined); }).toThrowDeveloperError(); }); });