@@ -2143,6 +2143,105 @@ defineSuite([
2143
2143
} ) . toThrowDeveloperError ( ) ;
2144
2144
} ) ;
2145
2145
2146
+ it ( 'evaluates the distance function' , function ( ) {
2147
+ var expression = new Expression ( 'distance(0, 1)' ) ;
2148
+ expect ( expression . evaluate ( frameState , undefined ) ) . toEqual ( 1.0 ) ;
2149
+
2150
+ expression = new Expression ( 'distance(vec2(1.0, 0.0), vec2(0.0, 0.0))' ) ;
2151
+ expect ( expression . evaluate ( frameState , undefined ) ) . toEqual ( 1.0 ) ;
2152
+
2153
+ expression = new Expression ( 'distance(vec3(3.0, 2.0, 1.0), vec3(1.0, 0.0, 0.0))' ) ;
2154
+ expect ( expression . evaluate ( frameState , undefined ) ) . toEqual ( 3.0 ) ;
2155
+
2156
+ expression = new Expression ( 'distance(vec4(5.0, 5.0, 5.0, 5.0), vec4(0.0, 0.0, 0.0, 0.0))' ) ;
2157
+ expect ( expression . evaluate ( frameState , undefined ) ) . toEqual ( 10.0 ) ;
2158
+ } ) ;
2159
+
2160
+ it ( 'throws if distance function takes an invalid number of arguments' , function ( ) {
2161
+ expect ( function ( ) {
2162
+ return new Expression ( 'distance(0.0)' ) ;
2163
+ } ) . toThrowDeveloperError ( ) ;
2164
+
2165
+ expect ( function ( ) {
2166
+ return new Expression ( 'distance(1, 3, 0)' ) ;
2167
+ } ) . toThrowDeveloperError ( ) ;
2168
+ } ) ;
2169
+
2170
+ it ( 'throws if distance function takes mismatching types of arguments' , function ( ) {
2171
+ expect ( function ( ) {
2172
+ return new Expression ( 'distance(1, vec2(3.0, 2.0)' ) . evaluate ( frameState , undefined ) ;
2173
+ } ) . toThrowDeveloperError ( ) ;
2174
+
2175
+ expect ( function ( ) {
2176
+ return new Expression ( 'distance(vec4(5.0, 2.0, 3.0, 1.0), vec3(4.0, 4.0, 4.0))' ) . evaluate ( frameState , undefined ) ;
2177
+ } ) . toThrowDeveloperError ( ) ;
2178
+ } ) ;
2179
+
2180
+ it ( 'evaluates the dot function' , function ( ) {
2181
+ var expression = new Expression ( 'dot(1, 2)' ) ;
2182
+ expect ( expression . evaluate ( frameState , undefined ) ) . toEqual ( 2.0 ) ;
2183
+
2184
+ expression = new Expression ( 'dot(vec2(1.0, 1.0), vec2(2.0, 2.0))' ) ;
2185
+ expect ( expression . evaluate ( frameState , undefined ) ) . toEqual ( 4.0 ) ;
2186
+
2187
+ expression = new Expression ( 'dot(vec3(1.0, 2.0, 3.0), vec3(2.0, 2.0, 1.0))' ) ;
2188
+ expect ( expression . evaluate ( frameState , undefined ) ) . toEqual ( 9.0 ) ;
2189
+
2190
+ expression = new Expression ( 'dot(vec4(5.0, 5.0, 2.0, 3.0), vec4(1.0, 2.0, 1.0, 1.0))' ) ;
2191
+ expect ( expression . evaluate ( frameState , undefined ) ) . toEqual ( 20.0 ) ;
2192
+ } ) ;
2193
+
2194
+ it ( 'throws if dot function takes an invalid number of arguments' , function ( ) {
2195
+ expect ( function ( ) {
2196
+ return new Expression ( 'dot(0.0)' ) ;
2197
+ } ) . toThrowDeveloperError ( ) ;
2198
+
2199
+ expect ( function ( ) {
2200
+ return new Expression ( 'dot(1, 3, 0)' ) ;
2201
+ } ) . toThrowDeveloperError ( ) ;
2202
+ } ) ;
2203
+
2204
+ it ( 'throws if dot function takes mismatching types of arguments' , function ( ) {
2205
+ expect ( function ( ) {
2206
+ return new Expression ( 'dot(1, vec2(3.0, 2.0)' ) . evaluate ( frameState , undefined ) ;
2207
+ } ) . toThrowDeveloperError ( ) ;
2208
+
2209
+ expect ( function ( ) {
2210
+ return new Expression ( 'dot(vec4(5.0, 2.0, 3.0, 1.0), vec3(4.0, 4.0, 4.0))' ) . evaluate ( frameState , undefined ) ;
2211
+ } ) . toThrowDeveloperError ( ) ;
2212
+ } ) ;
2213
+
2214
+ it ( 'evaluates the cross function' , function ( ) {
2215
+ var expression = new Expression ( 'cross(vec3(1.0, 1.0, 1.0), vec3(2.0, 2.0, 2.0))' ) ;
2216
+ expect ( expression . evaluate ( frameState , undefined ) ) . toEqual ( new Cartesian3 ( 0.0 , 0.0 , 0.0 ) ) ;
2217
+
2218
+ expression = new Expression ( 'cross(vec3(-1.0, -1.0, -1.0), vec3(0.0, -2.0, -5.0))' ) ;
2219
+ expect ( expression . evaluate ( frameState , undefined ) ) . toEqual ( new Cartesian3 ( 3.0 , - 5.0 , 2.0 ) ) ;
2220
+
2221
+ expression = new Expression ( 'cross(vec3(5.0, -2.0, 1.0), vec3(-2.0, -6.0, -8.0))' ) ;
2222
+ expect ( expression . evaluate ( frameState , undefined ) ) . toEqual ( new Cartesian3 ( 22.0 , 38.0 , - 34.0 ) ) ;
2223
+ } ) ;
2224
+
2225
+ it ( 'throws if cross function takes an invalid number of arguments' , function ( ) {
2226
+ expect ( function ( ) {
2227
+ return new Expression ( 'cross(vec3(0.0, 0.0, 0.0))' ) ;
2228
+ } ) . toThrowDeveloperError ( ) ;
2229
+
2230
+ expect ( function ( ) {
2231
+ return new Expression ( 'cross(vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0), vec3(2.0, 2.0, 2.0))' ) ;
2232
+ } ) . toThrowDeveloperError ( ) ;
2233
+ } ) ;
2234
+
2235
+ it ( 'throws if cross function does not take vec3 arguments' , function ( ) {
2236
+ expect ( function ( ) {
2237
+ return new Expression ( 'cross(vec2(1.0, 2.0), vec2(3.0, 2.0)' ) . evaluate ( frameState , undefined ) ;
2238
+ } ) . toThrowDeveloperError ( ) ;
2239
+
2240
+ expect ( function ( ) {
2241
+ return new Expression ( 'cross(vec4(5.0, 2.0, 3.0, 1.0), vec3(4.0, 4.0, 4.0))' ) . evaluate ( frameState , undefined ) ;
2242
+ } ) . toThrowDeveloperError ( ) ;
2243
+ } ) ;
2244
+
2146
2245
it ( 'evaluates length function' , function ( ) {
2147
2246
var expression = new Expression ( 'length(-3.0)' ) ;
2148
2247
expect ( expression . evaluate ( frameState , undefined ) ) . toEqual ( 3.0 ) ;
@@ -2587,7 +2686,7 @@ defineSuite([
2587
2686
feature . addProperty ( 'complicatedArray' , [ {
2588
2687
'subproperty' : Cartesian4 . UNIT_X ,
2589
2688
'anotherproperty' : Cartesian4 . UNIT_Y
2590
- } , {
2689
+ } , {
2591
2690
'subproperty' : Cartesian4 . UNIT_Z ,
2592
2691
'anotherproperty' : Cartesian4 . UNIT_W
2593
2692
} ] ) ;
@@ -3016,7 +3115,7 @@ defineSuite([
3016
3115
expect ( shaderExpression ) . toEqual ( expected ) ;
3017
3116
} ) ;
3018
3117
3019
- it ( 'gets shader expression for sin' , function ( ) {
3118
+ it ( 'gets shader expression for sin' , function ( ) {
3020
3119
var expression = new Expression ( 'sin(0.0)' ) ;
3021
3120
var shaderExpression = expression . getShaderExpression ( '' , { } ) ;
3022
3121
var expected = 'sin(0.0)' ;
@@ -3163,6 +3262,27 @@ defineSuite([
3163
3262
expect ( shaderExpression ) . toEqual ( expected ) ;
3164
3263
} ) ;
3165
3264
3265
+ it ( 'gets shader expression for distance' , function ( ) {
3266
+ var expression = new Expression ( 'distance(0.0, 1.0)' ) ;
3267
+ var shaderExpression = expression . getShaderExpression ( '' , { } ) ;
3268
+ var expected = 'distance(0.0, 1.0)' ;
3269
+ expect ( shaderExpression ) . toEqual ( expected ) ;
3270
+ } ) ;
3271
+
3272
+ it ( 'gets shader expression for dot' , function ( ) {
3273
+ var expression = new Expression ( 'dot(1.0, 2.0)' ) ;
3274
+ var shaderExpression = expression . getShaderExpression ( '' , { } ) ;
3275
+ var expected = 'dot(1.0, 2.0)' ;
3276
+ expect ( shaderExpression ) . toEqual ( expected ) ;
3277
+ } ) ;
3278
+
3279
+ it ( 'gets shader expression for cross' , function ( ) {
3280
+ var expression = new Expression ( 'cross(vec3(1.0, 1.0, 1.0), vec3(2.0, 2.0, 2.0))' ) ;
3281
+ var shaderExpression = expression . getShaderExpression ( '' , { } ) ;
3282
+ var expected = 'cross(vec3(1.0, 1.0, 1.0), vec3(2.0, 2.0, 2.0))' ;
3283
+ expect ( shaderExpression ) . toEqual ( expected ) ;
3284
+ } ) ;
3285
+
3166
3286
it ( 'throws when getting shader expression for regex' , function ( ) {
3167
3287
var expression = new Expression ( 'regExp("a").test("abc")' ) ;
3168
3288
expect ( function ( ) {
0 commit comments