@@ -8349,48 +8349,96 @@ module TestMapKeys {
8349
8349
8350
8350
// _.merge
8351
8351
module TestMerge {
8352
- let customizer : ( value : any , srcValue : any , key ?: string , object ?: { } , source ?: { } ) => any ;
8353
- let result : TResult ;
8352
+ type InitialValue = { a : number } ;
8353
+ type MergingValue = { b : string } ;
8354
+
8355
+ var initialValue = { a : 1 } ;
8356
+ var mergingValue = { b : "hi" } ;
8357
+
8358
+ type ExpectedResult = { a : number , b : string } ;
8359
+ let result : ExpectedResult ;
8360
+
8361
+ let customizer : ( value : any , srcValue : any , key ?: string , object ?: InitialValue , source ?: MergingValue ) => any ;
8362
+
8363
+ // Test for basic merging
8364
+
8365
+ result = _ . merge ( initialValue , mergingValue ) ;
8366
+ result = _ . merge ( initialValue , mergingValue , customizer ) ;
8367
+ result = _ . merge ( initialValue , mergingValue , customizer , any ) ;
8368
+
8369
+ result = _ . merge ( initialValue , { } , mergingValue ) ;
8370
+ result = _ . merge ( initialValue , { } , mergingValue , customizer ) ;
8371
+ result = _ . merge ( initialValue , { } , mergingValue , customizer , any ) ;
8372
+
8373
+ result = _ . merge ( initialValue , { } , { } , mergingValue ) ;
8374
+ result = _ . merge ( initialValue , { } , { } , mergingValue , customizer ) ;
8375
+ result = _ . merge ( initialValue , { } , { } , mergingValue , customizer , any ) ;
8376
+
8377
+ result = _ . merge ( initialValue , { } , { } , { } , mergingValue ) ;
8378
+ result = _ . merge ( initialValue , { } , { } , { } , mergingValue , customizer ) ;
8379
+ result = _ . merge ( initialValue , { } , { } , { } , mergingValue , customizer , any ) ;
8380
+
8381
+ // Once we get to the varargs version, you have to specify the result explicitly
8382
+ result = _ . merge < ExpectedResult > ( initialValue , { } , { } , { } , { } , mergingValue ) ;
8383
+ result = _ . merge < ExpectedResult > ( initialValue , { } , { } , { } , { } , mergingValue , customizer ) ;
8384
+ result = _ . merge < ExpectedResult > ( initialValue , { } , { } , { } , { } , mergingValue , customizer , any ) ;
8385
+
8386
+ // Test for multiple combinations of many types
8387
+
8388
+ type ComplicatedExpectedType = { a : number , b : string , c : { } , d : number [ ] , e : boolean } ;
8389
+
8390
+ var complicatedResult : ComplicatedExpectedType = _ . merge ( { a : 1 } ,
8391
+ { b : "string" } ,
8392
+ { c : { } } ,
8393
+ { d : [ 1 ] } ,
8394
+ { e : true } ) ;
8395
+ // Test for type overriding
8396
+
8397
+ type ExpectedTypeAfterOverriding = { a : boolean } ;
8398
+
8399
+ var overriddenResult : ExpectedTypeAfterOverriding = _ . merge ( { a : 1 } ,
8400
+ { a : "string" } ,
8401
+ { a : { } } ,
8402
+ { a : [ 1 ] } ,
8403
+ { a : true } ) ;
8404
+
8405
+ // Tests for basic chaining with merge
8354
8406
8355
- result = _ . merge < { } , { } , TResult > ( { } , { } ) ;
8356
- result = _ . merge < { } , { } , TResult > ( { } , { } , customizer ) ;
8357
- result = _ . merge < { } , { } , TResult > ( { } , { } , customizer , any ) ;
8407
+ result = _ ( initialValue ) . merge ( mergingValue ) . value ( ) ;
8408
+ result = _ ( initialValue ) . merge ( mergingValue , customizer ) . value ( ) ;
8409
+ result = _ ( initialValue ) . merge ( mergingValue , customizer , any ) . value ( ) ;
8358
8410
8359
- result = _ . merge < { } , { } , { } , TResult > ( { } , { } , { } ) ;
8360
- result = _ . merge < { } , { } , { } , TResult > ( { } , { } , { } , customizer ) ;
8361
- result = _ . merge < { } , { } , { } , TResult > ( { } , { } , { } , customizer , any ) ;
8411
+ result = _ ( initialValue ) . merge ( { } , mergingValue ) . value ( ) ;
8412
+ result = _ ( initialValue ) . merge ( { } , mergingValue , customizer ) . value ( ) ;
8413
+ result = _ ( initialValue ) . merge ( { } , mergingValue , customizer , any ) . value ( ) ;
8362
8414
8363
- result = _ . merge < { } , { } , { } , { } , TResult > ( { } , { } , { } , { } ) ;
8364
- result = _ . merge < { } , { } , { } , { } , TResult > ( { } , { } , { } , { } , customizer ) ;
8365
- result = _ . merge < { } , { } , { } , { } , TResult > ( { } , { } , { } , { } , customizer , any ) ;
8415
+ result = _ ( initialValue ) . merge ( { } , { } , mergingValue ) . value ( ) ;
8416
+ result = _ ( initialValue ) . merge ( { } , { } , mergingValue , customizer ) . value ( ) ;
8417
+ result = _ ( initialValue ) . merge ( { } , { } , mergingValue , customizer , any ) . value ( ) ;
8366
8418
8367
- result = _ . merge < { } , { } , { } , { } , { } , TResult > ( { } , { } , { } , { } , { } ) ;
8368
- result = _ . merge < { } , { } , { } , { } , { } , TResult > ( { } , { } , { } , { } , { } , customizer ) ;
8369
- result = _ . merge < { } , { } , { } , { } , { } , TResult > ( { } , { } , { } , { } , { } , customizer , any ) ;
8419
+ result = _ ( initialValue ) . merge ( { } , { } , { } , mergingValue ) . value ( ) ;
8420
+ result = _ ( initialValue ) . merge ( { } , { } , { } , mergingValue , customizer ) . value ( ) ;
8421
+ result = _ ( initialValue ) . merge ( { } , { } , { } , mergingValue , customizer , any ) . value ( ) ;
8370
8422
8371
- result = _ . merge < { } , TResult > ( { } , { } , { } , { } , { } , { } ) ;
8372
- result = _ . merge < { } , TResult > ( { } , { } , { } , { } , { } , { } , customizer ) ;
8373
- result = _ . merge < { } , TResult > ( { } , { } , { } , { } , { } , { } , customizer , any ) ;
8423
+ // Once we get to the varargs version, you have to specify the result explicitly
8424
+ result = _ ( initialValue ) . merge < ExpectedResult > ( { } , { } , { } , { } , mergingValue ) . value ( ) ;
8425
+ result = _ ( initialValue ) . merge < ExpectedResult > ( { } , { } , { } , { } , mergingValue , customizer ) . value ( ) ;
8426
+ result = _ ( initialValue ) . merge < ExpectedResult > ( { } , { } , { } , { } , mergingValue , customizer , any ) . value ( ) ;
8374
8427
8375
- result = _ ( { } ) . merge < { } , TResult > ( { } ) . value ( ) ;
8376
- result = _ ( { } ) . merge < { } , TResult > ( { } , customizer ) . value ( ) ;
8377
- result = _ ( { } ) . merge < { } , TResult > ( { } , customizer , any ) . value ( ) ;
8428
+ // Test complex multiple combinations with chaining
8378
8429
8379
- result = _ ( { } ) . merge < { } , { } , TResult > ( { } , { } ) . value ( ) ;
8380
- result = _ ( { } ) . merge < { } , { } , TResult > ( { } , { } , customizer ) . value ( ) ;
8381
- result = _ ( { } ) . merge < { } , { } , TResult > ( { } , { } , customizer , any ) . value ( ) ;
8430
+ var complicatedResult : ComplicatedExpectedType = _ ( { a : 1 } ) . merge ( { b : "string" } ,
8431
+ { c : { } } ,
8432
+ { d : [ 1 ] } ,
8433
+ { e : true } ) . value ( ) ;
8382
8434
8383
- result = _ ( { } ) . merge < { } , { } , { } , TResult > ( { } , { } , { } ) . value ( ) ;
8384
- result = _ ( { } ) . merge < { } , { } , { } , TResult > ( { } , { } , { } , customizer ) . value ( ) ;
8385
- result = _ ( { } ) . merge < { } , { } , { } , TResult > ( { } , { } , { } , customizer , any ) . value ( ) ;
8435
+ // Test for type overriding with chaining
8386
8436
8387
- result = _ ( { } ) . merge < { } , { } , { } , { } , TResult > ( { } , { } , { } , { } ) . value ( ) ;
8388
- result = _ ( { } ) . merge < { } , { } , { } , { } , TResult > ( { } , { } , { } , { } , customizer ) . value ( ) ;
8389
- result = _ ( { } ) . merge < { } , { } , { } , { } , TResult > ( { } , { } , { } , { } , customizer , any ) . value ( ) ;
8437
+ var overriddenResult : ExpectedTypeAfterOverriding = _ ( { a : 1 } ) . merge ( { a : "string" } ,
8438
+ { a : { } } ,
8439
+ { a : [ 1 ] } ,
8440
+ { a : true } ) . value ( ) ;
8390
8441
8391
- result = _ ( { } ) . merge < TResult > ( { } , { } , { } , { } , { } ) . value ( ) ;
8392
- result = _ ( { } ) . merge < TResult > ( { } , { } , { } , { } , { } , customizer ) . value ( ) ;
8393
- result = _ ( { } ) . merge < TResult > ( { } , { } , { } , { } , { } , customizer , any ) . value ( ) ;
8394
8442
}
8395
8443
8396
8444
// _.methods
0 commit comments