@@ -24,6 +24,8 @@ describe('MdSlider', () => {
24
24
SliderWithThumbLabel ,
25
25
SliderWithOneWayBinding ,
26
26
SliderWithTwoWayBinding ,
27
+ SliderWithValueSmallerThanMin ,
28
+ SliderWithValueGreaterThanMax ,
27
29
] ,
28
30
providers : [
29
31
{ provide : HAMMER_GESTURE_CONFIG , useFactory : ( ) => {
@@ -670,6 +672,82 @@ describe('MdSlider', () => {
670
672
expect ( thumbPosition ) . toBe ( sliderDimensions . width * 3 / 4 ) ;
671
673
} ) ;
672
674
} ) ;
675
+
676
+ describe ( 'slider with set min and max and a value smaller than min' , ( ) => {
677
+ let fixture : ComponentFixture < SliderWithValueSmallerThanMin > ;
678
+ let sliderDebugElement : DebugElement ;
679
+ let sliderNativeElement : HTMLElement ;
680
+ let sliderInstance : MdSlider ;
681
+ let sliderTrackElement : HTMLElement ;
682
+ let sliderDimensions : ClientRect ;
683
+ let thumbElement : HTMLElement ;
684
+ let thumbDimensions : ClientRect ;
685
+
686
+ beforeEach ( ( ) => {
687
+
688
+ fixture = TestBed . createComponent ( SliderWithValueSmallerThanMin ) ;
689
+ fixture . detectChanges ( ) ;
690
+
691
+ sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
692
+ sliderNativeElement = sliderDebugElement . nativeElement ;
693
+ sliderInstance = sliderDebugElement . componentInstance ;
694
+
695
+ sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
696
+ sliderDimensions = sliderTrackElement . getBoundingClientRect ( ) ;
697
+
698
+ thumbElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-thumb-position' ) ;
699
+ thumbDimensions = thumbElement . getBoundingClientRect ( ) ;
700
+ } ) ;
701
+
702
+ it ( 'should set the value smaller than the min value' , ( ) => {
703
+ expect ( sliderInstance . value ) . toBe ( 3 ) ;
704
+ expect ( sliderInstance . min ) . toBe ( 4 ) ;
705
+ expect ( sliderInstance . max ) . toBe ( 6 ) ;
706
+ } ) ;
707
+
708
+ it ( 'should place the thumb on the min value' , ( ) => {
709
+ thumbDimensions = thumbElement . getBoundingClientRect ( ) ;
710
+ expect ( thumbDimensions . left ) . toBe ( sliderDimensions . left ) ;
711
+ } ) ;
712
+ } ) ;
713
+
714
+ describe ( 'slider with set min and max and a value greater than max' , ( ) => {
715
+ let fixture : ComponentFixture < SliderWithValueSmallerThanMin > ;
716
+ let sliderDebugElement : DebugElement ;
717
+ let sliderNativeElement : HTMLElement ;
718
+ let sliderInstance : MdSlider ;
719
+ let sliderTrackElement : HTMLElement ;
720
+ let sliderDimensions : ClientRect ;
721
+ let thumbElement : HTMLElement ;
722
+ let thumbDimensions : ClientRect ;
723
+
724
+ beforeEach ( ( ) => {
725
+ fixture = TestBed . createComponent ( SliderWithValueGreaterThanMax ) ;
726
+ fixture . detectChanges ( ) ;
727
+
728
+ sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
729
+ sliderNativeElement = sliderDebugElement . nativeElement ;
730
+ sliderInstance = sliderDebugElement . componentInstance ;
731
+
732
+ sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
733
+ sliderDimensions = sliderTrackElement . getBoundingClientRect ( ) ;
734
+
735
+ thumbElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-thumb-position' ) ;
736
+ thumbDimensions = thumbElement . getBoundingClientRect ( ) ;
737
+
738
+ } ) ;
739
+
740
+ it ( 'should set the value greater than the max value' , ( ) => {
741
+ expect ( sliderInstance . value ) . toBe ( 7 ) ;
742
+ expect ( sliderInstance . min ) . toBe ( 4 ) ;
743
+ expect ( sliderInstance . max ) . toBe ( 6 ) ;
744
+ } ) ;
745
+
746
+ it ( 'should place the thumb on the max value' , ( ) => {
747
+ thumbDimensions = thumbElement . getBoundingClientRect ( ) ;
748
+ expect ( thumbDimensions . left ) . toBe ( sliderDimensions . right ) ;
749
+ } ) ;
750
+ } ) ;
673
751
} ) ;
674
752
675
753
// The transition has to be removed in order to test the updated positions without setTimeout.
@@ -734,6 +812,20 @@ class SliderWithTwoWayBinding {
734
812
control = new FormControl ( '' ) ;
735
813
}
736
814
815
+ @Component ( {
816
+ template : `<md-slider value="3" min="4" max="6"></md-slider>` ,
817
+ styles : [ noTransitionStyle ] ,
818
+ encapsulation : ViewEncapsulation . None
819
+ } )
820
+ class SliderWithValueSmallerThanMin { }
821
+
822
+ @Component ( {
823
+ template : `<md-slider value="7" min="4" max="6"></md-slider>` ,
824
+ styles : [ noTransitionStyle ] ,
825
+ encapsulation : ViewEncapsulation . None
826
+ } )
827
+ class SliderWithValueGreaterThanMax { }
828
+
737
829
/**
738
830
* Dispatches a click event from an element.
739
831
* Note: The mouse event truncates the position for the click.
0 commit comments