defineSuite([ 'DataSources/createMaterialPropertyDescriptor', 'Core/Color', 'Core/Event', 'DataSources/ColorMaterialProperty', 'DataSources/ImageMaterialProperty' ], function( createMaterialPropertyDescriptor, Color, Event, ColorMaterialProperty, ImageMaterialProperty) { 'use strict'; function MockGraphics() { this._definitionChanged = new Event(); } Object.defineProperties(MockGraphics.prototype, { materialProperty : createMaterialPropertyDescriptor('materialProperty') }); it('defaults to undefined', function() { var instance = new MockGraphics(); expect(instance.materialProperty).toBeUndefined(); }); it('creates ImageMaterialProperty from string ', function() { var instance = new MockGraphics(); expect(instance.materialProperty).toBeUndefined(); var value = 'test.invalid'; instance.materialProperty = value; expect(instance.materialProperty).toBeInstanceOf(ImageMaterialProperty); expect(instance.materialProperty.image.getValue()).toEqual(value); }); it('creates ColorMaterialProperty from Color', function() { var instance = new MockGraphics(); expect(instance.materialProperty).toBeUndefined(); var value = Color.RED; instance.materialProperty = value; expect(instance.materialProperty).toBeInstanceOf(ColorMaterialProperty); expect(instance.materialProperty.color.getValue()).toEqual(value); }); it('throws if type can not be infered', function() { var instance = new MockGraphics(); expect(function() { instance.materialProperty = {}; }).toThrowDeveloperError(); }); });