@@ -4264,6 +4264,32 @@ describe('MatSelect', () => {
42644264 expect ( testInstance . control . value ) . toEqual ( [ ] ) ;
42654265 } ) ;
42664266
4267+ it ( 'should be able to programmatically set an array with duplicate values' , fakeAsync ( ( ) => {
4268+ testInstance . foods = [
4269+ { value : 'steak-0' , viewValue : 'Steak' } ,
4270+ { value : 'pizza-1' , viewValue : 'Pizza' } ,
4271+ { value : 'pizza-1' , viewValue : 'Pizza' } ,
4272+ { value : 'pizza-1' , viewValue : 'Pizza' } ,
4273+ { value : 'pizza-1' , viewValue : 'Pizza' } ,
4274+ { value : 'pizza-1' , viewValue : 'Pizza' } ,
4275+ ] ;
4276+ fixture . detectChanges ( ) ;
4277+ testInstance . control . setValue ( [ 'steak-0' , 'pizza-1' , 'pizza-1' , 'pizza-1' ] ) ;
4278+ fixture . detectChanges ( ) ;
4279+
4280+ trigger . click ( ) ;
4281+ fixture . detectChanges ( ) ;
4282+
4283+ const optionNodes = Array . from ( overlayContainerElement . querySelectorAll ( 'mat-option' ) ) ;
4284+ const optionInstances = testInstance . options . toArray ( ) ;
4285+
4286+ expect ( optionNodes . map ( node => node . classList . contains ( 'mat-selected' ) ) )
4287+ . toEqual ( [ true , true , true , true , false , false ] ) ;
4288+
4289+ expect ( optionInstances . map ( instance => instance . selected ) )
4290+ . toEqual ( [ true , true , true , true , false , false ] ) ;
4291+ } ) ) ;
4292+
42674293 } ) ;
42684294} ) ;
42694295
0 commit comments