@@ -3168,5 +3168,231 @@ public void PerspectiveOffCenterFarPlaneAtInfinityTest()
3168
3168
Assert . Equal ( - 1.0f , m . M33 ) ;
3169
3169
Assert . Equal ( - nearPlaneDistance , m . M43 ) ;
3170
3170
}
3171
+
3172
+ [ Fact ]
3173
+ public void Matrix4x4CreateBroadcastScalarTest ( )
3174
+ {
3175
+ Matrix4x4 a = Matrix4x4 . Create ( float . Pi ) ;
3176
+
3177
+ Assert . Equal ( Vector4 . Create ( float . Pi ) , a . X ) ;
3178
+ Assert . Equal ( Vector4 . Create ( float . Pi ) , a . Y ) ;
3179
+ Assert . Equal ( Vector4 . Create ( float . Pi ) , a . Z ) ;
3180
+ Assert . Equal ( Vector4 . Create ( float . Pi ) , a . W ) ;
3181
+ }
3182
+
3183
+ [ Fact ]
3184
+ public void Matrix4x4CreateBroadcastVectorTest ( )
3185
+ {
3186
+ Matrix4x4 a = Matrix4x4 . Create ( Vector4 . Create ( float . Pi , float . E , float . PositiveInfinity , float . NegativeInfinity ) ) ;
3187
+
3188
+ Assert . Equal ( Vector4 . Create ( float . Pi , float . E , float . PositiveInfinity , float . NegativeInfinity ) , a . X ) ;
3189
+ Assert . Equal ( Vector4 . Create ( float . Pi , float . E , float . PositiveInfinity , float . NegativeInfinity ) , a . Y ) ;
3190
+ Assert . Equal ( Vector4 . Create ( float . Pi , float . E , float . PositiveInfinity , float . NegativeInfinity ) , a . Z ) ;
3191
+ Assert . Equal ( Vector4 . Create ( float . Pi , float . E , float . PositiveInfinity , float . NegativeInfinity ) , a . W ) ;
3192
+ }
3193
+
3194
+ [ Fact ]
3195
+ public void Matrix4x4CreateVectorsTest ( )
3196
+ {
3197
+ Matrix4x4 a = Matrix4x4 . Create (
3198
+ Vector4 . Create ( 11.0f , 12.0f , 13.0f , 14.0f ) ,
3199
+ Vector4 . Create ( 21.0f , 22.0f , 23.0f , 24.0f ) ,
3200
+ Vector4 . Create ( 31.0f , 32.0f , 33.0f , 34.0f ) ,
3201
+ Vector4 . Create ( 41.0f , 42.0f , 43.0f , 44.0f )
3202
+ ) ;
3203
+
3204
+ Assert . Equal ( Vector4 . Create ( 11.0f , 12.0f , 13.0f , 14.0f ) , a . X ) ;
3205
+ Assert . Equal ( Vector4 . Create ( 21.0f , 22.0f , 23.0f , 24.0f ) , a . Y ) ;
3206
+ Assert . Equal ( Vector4 . Create ( 31.0f , 32.0f , 33.0f , 34.0f ) , a . Z ) ;
3207
+ Assert . Equal ( Vector4 . Create ( 41.0f , 42.0f , 43.0f , 44.0f ) , a . W ) ;
3208
+ }
3209
+
3210
+ [ Fact ]
3211
+ public void Matrix4x4GetElementTest ( )
3212
+ {
3213
+ Matrix4x4 a = GenerateTestMatrix ( ) ;
3214
+
3215
+ Assert . Equal ( a . M11 , a . X . X ) ;
3216
+ Assert . Equal ( a . M11 , a [ 0 , 0 ] ) ;
3217
+ Assert . Equal ( a . M11 , a . GetElement ( 0 , 0 ) ) ;
3218
+
3219
+ Assert . Equal ( a . M12 , a . X . Y ) ;
3220
+ Assert . Equal ( a . M12 , a [ 0 , 1 ] ) ;
3221
+ Assert . Equal ( a . M12 , a . GetElement ( 0 , 1 ) ) ;
3222
+
3223
+ Assert . Equal ( a . M13 , a . X . Z ) ;
3224
+ Assert . Equal ( a . M13 , a [ 0 , 2 ] ) ;
3225
+ Assert . Equal ( a . M13 , a . GetElement ( 0 , 2 ) ) ;
3226
+
3227
+ Assert . Equal ( a . M14 , a . X . W ) ;
3228
+ Assert . Equal ( a . M14 , a [ 0 , 3 ] ) ;
3229
+ Assert . Equal ( a . M14 , a . GetElement ( 0 , 3 ) ) ;
3230
+
3231
+ Assert . Equal ( a . M21 , a . Y . X ) ;
3232
+ Assert . Equal ( a . M21 , a [ 1 , 0 ] ) ;
3233
+ Assert . Equal ( a . M21 , a . GetElement ( 1 , 0 ) ) ;
3234
+
3235
+ Assert . Equal ( a . M22 , a . Y . Y ) ;
3236
+ Assert . Equal ( a . M22 , a [ 1 , 1 ] ) ;
3237
+ Assert . Equal ( a . M22 , a . GetElement ( 1 , 1 ) ) ;
3238
+
3239
+ Assert . Equal ( a . M23 , a . Y . Z ) ;
3240
+ Assert . Equal ( a . M23 , a [ 1 , 2 ] ) ;
3241
+ Assert . Equal ( a . M23 , a . GetElement ( 1 , 2 ) ) ;
3242
+
3243
+ Assert . Equal ( a . M24 , a . Y . W ) ;
3244
+ Assert . Equal ( a . M24 , a [ 1 , 3 ] ) ;
3245
+ Assert . Equal ( a . M24 , a . GetElement ( 1 , 3 ) ) ;
3246
+
3247
+ Assert . Equal ( a . M31 , a . Z . X ) ;
3248
+ Assert . Equal ( a . M31 , a [ 2 , 0 ] ) ;
3249
+ Assert . Equal ( a . M31 , a . GetElement ( 2 , 0 ) ) ;
3250
+
3251
+ Assert . Equal ( a . M32 , a . Z . Y ) ;
3252
+ Assert . Equal ( a . M32 , a [ 2 , 1 ] ) ;
3253
+ Assert . Equal ( a . M32 , a . GetElement ( 2 , 1 ) ) ;
3254
+
3255
+ Assert . Equal ( a . M33 , a . Z . Z ) ;
3256
+ Assert . Equal ( a . M33 , a [ 2 , 2 ] ) ;
3257
+ Assert . Equal ( a . M33 , a . GetElement ( 2 , 2 ) ) ;
3258
+
3259
+ Assert . Equal ( a . M34 , a . Z . W ) ;
3260
+ Assert . Equal ( a . M34 , a [ 2 , 3 ] ) ;
3261
+ Assert . Equal ( a . M34 , a . GetElement ( 2 , 3 ) ) ;
3262
+
3263
+ Assert . Equal ( a . M41 , a . W . X ) ;
3264
+ Assert . Equal ( a . M41 , a [ 3 , 0 ] ) ;
3265
+ Assert . Equal ( a . M41 , a . GetElement ( 3 , 0 ) ) ;
3266
+
3267
+ Assert . Equal ( a . M42 , a . W . Y ) ;
3268
+ Assert . Equal ( a . M42 , a [ 3 , 1 ] ) ;
3269
+ Assert . Equal ( a . M42 , a . GetElement ( 3 , 1 ) ) ;
3270
+
3271
+ Assert . Equal ( a . M43 , a . W . Z ) ;
3272
+ Assert . Equal ( a . M43 , a [ 3 , 2 ] ) ;
3273
+ Assert . Equal ( a . M43 , a . GetElement ( 3 , 2 ) ) ;
3274
+
3275
+ Assert . Equal ( a . M44 , a . W . W ) ;
3276
+ Assert . Equal ( a . M44 , a [ 3 , 3 ] ) ;
3277
+ Assert . Equal ( a . M44 , a . GetElement ( 3 , 3 ) ) ;
3278
+ }
3279
+
3280
+ [ Fact ]
3281
+ public void Matrix4x4GetRowTest ( )
3282
+ {
3283
+ Matrix4x4 a = GenerateTestMatrix ( ) ;
3284
+
3285
+ Vector4 vx = new Vector4 ( a . M11 , a . M12 , a . M13 , a . M14 ) ;
3286
+ Assert . Equal ( vx , a . X ) ;
3287
+ Assert . Equal ( vx , a [ 0 ] ) ;
3288
+ Assert . Equal ( vx , a . GetRow ( 0 ) ) ;
3289
+
3290
+ Vector4 vy = new Vector4 ( a . M21 , a . M22 , a . M23 , a . M24 ) ;
3291
+ Assert . Equal ( vy , a . Y ) ;
3292
+ Assert . Equal ( vy , a [ 1 ] ) ;
3293
+ Assert . Equal ( vy , a . GetRow ( 1 ) ) ;
3294
+
3295
+ Vector4 vz = new Vector4 ( a . M31 , a . M32 , a . M33 , a . M34 ) ;
3296
+ Assert . Equal ( vz , a . Z ) ;
3297
+ Assert . Equal ( vz , a [ 2 ] ) ;
3298
+ Assert . Equal ( vz , a . GetRow ( 2 ) ) ;
3299
+
3300
+ Vector4 vw = new Vector4 ( a . M41 , a . M42 , a . M43 , a . M44 ) ;
3301
+ Assert . Equal ( vw , a . W ) ;
3302
+ Assert . Equal ( vw , a [ 3 ] ) ;
3303
+ Assert . Equal ( vw , a . GetRow ( 3 ) ) ;
3304
+ }
3305
+
3306
+ [ Fact ]
3307
+ public void Matrix4x4WithElementTest ( )
3308
+ {
3309
+ Matrix4x4 a = Matrix4x4 . Identity ;
3310
+
3311
+ a [ 0 , 0 ] = 11.0f ;
3312
+ Assert . Equal ( 11.5f , a . WithElement ( 0 , 0 , 11.5f ) . M11 ) ;
3313
+ Assert . Equal ( 11.0f , a . M11 ) ;
3314
+
3315
+ a [ 0 , 1 ] = 12.0f ;
3316
+ Assert . Equal ( 12.5f , a . WithElement ( 0 , 1 , 12.5f ) . M12 ) ;
3317
+ Assert . Equal ( 12.0f , a . M12 ) ;
3318
+
3319
+ a [ 0 , 2 ] = 13.0f ;
3320
+ Assert . Equal ( 13.5f , a . WithElement ( 0 , 2 , 13.5f ) . M13 ) ;
3321
+ Assert . Equal ( 13.0f , a . M13 ) ;
3322
+
3323
+ a [ 0 , 3 ] = 14.0f ;
3324
+ Assert . Equal ( 14.5f , a . WithElement ( 0 , 3 , 14.5f ) . M14 ) ;
3325
+ Assert . Equal ( 14.0f , a . M14 ) ;
3326
+
3327
+ a [ 1 , 0 ] = 21.0f ;
3328
+ Assert . Equal ( 21.5f , a . WithElement ( 1 , 1 , 21.5f ) . M21 ) ;
3329
+ Assert . Equal ( 21.0f , a . M21 ) ;
3330
+
3331
+ a [ 1 , 1 ] = 22.0f ;
3332
+ Assert . Equal ( 22.5f , a . WithElement ( 1 , 1 , 22.5f ) . M22 ) ;
3333
+ Assert . Equal ( 22.0f , a . M22 ) ;
3334
+
3335
+ a [ 1 , 2 ] = 23.0f ;
3336
+ Assert . Equal ( 23.5f , a . WithElement ( 1 , 2 , 23.5f ) . M23 ) ;
3337
+ Assert . Equal ( 23.0f , a . M23 ) ;
3338
+
3339
+ a [ 1 , 3 ] = 24.0f ;
3340
+ Assert . Equal ( 24.5f , a . WithElement ( 1 , 3 , 24.5f ) . M24 ) ;
3341
+ Assert . Equal ( 24.0f , a . M24 ) ;
3342
+
3343
+ a [ 2 , 0 ] = 31.0f ;
3344
+ Assert . Equal ( 31.5f , a . WithElement ( 2 , 2 , 31.5f ) . M31 ) ;
3345
+ Assert . Equal ( 31.0f , a . M31 ) ;
3346
+
3347
+ a [ 2 , 1 ] = 32.0f ;
3348
+ Assert . Equal ( 32.5f , a . WithElement ( 2 , 1 , 32.5f ) . M32 ) ;
3349
+ Assert . Equal ( 32.0f , a . M32 ) ;
3350
+
3351
+ a [ 2 , 2 ] = 33.0f ;
3352
+ Assert . Equal ( 33.5f , a . WithElement ( 2 , 2 , 33.5f ) . M33 ) ;
3353
+ Assert . Equal ( 33.0f , a . M33 ) ;
3354
+
3355
+ a [ 2 , 3 ] = 34.0f ;
3356
+ Assert . Equal ( 34.5f , a . WithElement ( 2 , 3 , 34.5f ) . M34 ) ;
3357
+ Assert . Equal ( 34.0f , a . M34 ) ;
3358
+
3359
+ a [ 3 , 0 ] = 41.0f ;
3360
+ Assert . Equal ( 41.5f , a . WithElement ( 3 , 3 , 41.5f ) . M41 ) ;
3361
+ Assert . Equal ( 41.0f , a . M41 ) ;
3362
+
3363
+ a [ 3 , 1 ] = 42.0f ;
3364
+ Assert . Equal ( 42.5f , a . WithElement ( 3 , 1 , 42.5f ) . M42 ) ;
3365
+ Assert . Equal ( 42.0f , a . M42 ) ;
3366
+
3367
+ a [ 3 , 2 ] = 43.0f ;
3368
+ Assert . Equal ( 43.5f , a . WithElement ( 3 , 2 , 43.5f ) . M43 ) ;
3369
+ Assert . Equal ( 43.0f , a . M43 ) ;
3370
+
3371
+ a [ 3 , 3 ] = 44.0f ;
3372
+ Assert . Equal ( 44.5f , a . WithElement ( 3 , 3 , 44.5f ) . M44 ) ;
3373
+ Assert . Equal ( 44.0f , a . M44 ) ;
3374
+ }
3375
+
3376
+ [ Fact ]
3377
+ public void Matrix4x4WithRowTest ( )
3378
+ {
3379
+ Matrix4x4 a = Matrix4x4 . Identity ;
3380
+
3381
+ a [ 0 ] = Vector4 . Create ( 11.0f , 12.0f , 13.0f , 14.0f ) ;
3382
+ Assert . Equal ( Vector4 . Create ( 11.5f , 12.5f , 13.5f , 14.5f ) , a . WithRow ( 0 , Vector4 . Create ( 11.5f , 12.5f , 13.5f , 14.5f ) ) . X ) ;
3383
+ Assert . Equal ( Vector4 . Create ( 11.0f , 12.0f , 13.0f , 14.0f ) , a . X ) ;
3384
+
3385
+ a [ 1 ] = Vector4 . Create ( 21.0f , 22.0f , 23.0f , 24.0f ) ;
3386
+ Assert . Equal ( Vector4 . Create ( 21.5f , 22.5f , 23.5f , 24.5f ) , a . WithRow ( 1 , Vector4 . Create ( 21.5f , 22.5f , 23.5f , 24.5f ) ) . Y ) ;
3387
+ Assert . Equal ( Vector4 . Create ( 21.0f , 22.0f , 23.0f , 24.0f ) , a . Y ) ;
3388
+
3389
+ a [ 2 ] = Vector4 . Create ( 31.0f , 32.0f , 33.0f , 34.0f ) ;
3390
+ Assert . Equal ( Vector4 . Create ( 31.5f , 32.5f , 33.5f , 34.5f ) , a . WithRow ( 2 , Vector4 . Create ( 31.5f , 32.5f , 33.5f , 34.5f ) ) . Z ) ;
3391
+ Assert . Equal ( Vector4 . Create ( 31.0f , 32.0f , 33.0f , 34.0f ) , a . Z ) ;
3392
+
3393
+ a [ 3 ] = Vector4 . Create ( 41.0f , 42.0f , 43.0f , 44.0f ) ;
3394
+ Assert . Equal ( Vector4 . Create ( 41.5f , 42.5f , 43.5f , 44.5f ) , a . WithRow ( 3 , Vector4 . Create ( 41.5f , 42.5f , 43.5f , 44.5f ) ) . W ) ;
3395
+ Assert . Equal ( Vector4 . Create ( 41.0f , 42.0f , 43.0f , 44.0f ) , a . W ) ;
3396
+ }
3171
3397
}
3172
3398
}
0 commit comments