1+ import { limitLogScaleDomain } from './scale_continuous' ;
12import { createContinuousScale , createOrdinalScale , ScaleType } from './scales' ;
23
34describe ( 'Scale Test' , ( ) => {
@@ -49,6 +50,19 @@ describe('Scale Test', () => {
4950 const scaledValue3 = logScale . scale ( 5 ) ;
5051 expect ( scaledValue3 ) . toBe ( ( Math . log ( 5 ) / Math . log ( 10 ) ) * 100 ) ;
5152 } ) ;
53+ test ( 'Create an log scale starting with 0 as min' , ( ) => {
54+ const data = [ 0 , 10 ] ;
55+ const minRange = 0 ;
56+ const maxRange = 100 ;
57+ const logScale = createContinuousScale ( ScaleType . Log , data , minRange , maxRange ) ;
58+ const { domain, range } = logScale ;
59+ expect ( domain ) . toEqual ( [ 1 , 10 ] ) ;
60+ expect ( range ) . toEqual ( [ minRange , maxRange ] ) ;
61+ const scaledValue1 = logScale . scale ( 1 ) ;
62+ expect ( scaledValue1 ) . toBe ( 0 ) ;
63+ const scaledValue3 = logScale . scale ( 5 ) ;
64+ expect ( scaledValue3 ) . toBe ( ( Math . log ( 5 ) / Math . log ( 10 ) ) * 100 ) ;
65+ } ) ;
5266 test ( 'Create an sqrt scale' , ( ) => {
5367 const data = [ 0 , 10 ] ;
5468 const minRange = 0 ;
@@ -62,4 +76,44 @@ describe('Scale Test', () => {
6276 const scaledValue3 = sqrtScale . scale ( 5 ) ;
6377 expect ( scaledValue3 ) . toBe ( ( Math . sqrt ( 5 ) / Math . sqrt ( 10 ) ) * 100 ) ;
6478 } ) ;
79+ test ( 'Check log scale domain limiting' , ( ) => {
80+ let limitedDomain = limitLogScaleDomain ( [ 10 , 20 ] ) ;
81+ expect ( limitedDomain ) . toEqual ( [ 10 , 20 ] ) ;
82+
83+ limitedDomain = limitLogScaleDomain ( [ 0 , 100 ] ) ;
84+ expect ( limitedDomain ) . toEqual ( [ 1 , 100 ] ) ;
85+
86+ limitedDomain = limitLogScaleDomain ( [ 100 , 0 ] ) ;
87+ expect ( limitedDomain ) . toEqual ( [ 100 , 1 ] ) ;
88+
89+ limitedDomain = limitLogScaleDomain ( [ 0 , 0 ] ) ;
90+ expect ( limitedDomain ) . toEqual ( [ 1 , 1 ] ) ;
91+
92+ limitedDomain = limitLogScaleDomain ( [ - 100 , 0 ] ) ;
93+ expect ( limitedDomain ) . toEqual ( [ - 100 , - 1 ] ) ;
94+
95+ limitedDomain = limitLogScaleDomain ( [ 0 , - 100 ] ) ;
96+ expect ( limitedDomain ) . toEqual ( [ - 1 , - 100 ] ) ;
97+
98+ limitedDomain = limitLogScaleDomain ( [ - 100 , 100 ] ) ;
99+ expect ( limitedDomain ) . toEqual ( [ 1 , 100 ] ) ;
100+
101+ limitedDomain = limitLogScaleDomain ( [ - 100 , 50 ] ) ;
102+ expect ( limitedDomain ) . toEqual ( [ - 100 , - 1 ] ) ;
103+
104+ limitedDomain = limitLogScaleDomain ( [ - 100 , 150 ] ) ;
105+ expect ( limitedDomain ) . toEqual ( [ 1 , 150 ] ) ;
106+
107+ limitedDomain = limitLogScaleDomain ( [ 100 , - 100 ] ) ;
108+ expect ( limitedDomain ) . toEqual ( [ 100 , 1 ] ) ;
109+
110+ limitedDomain = limitLogScaleDomain ( [ 100 , - 50 ] ) ;
111+ expect ( limitedDomain ) . toEqual ( [ 100 , 1 ] ) ;
112+
113+ limitedDomain = limitLogScaleDomain ( [ 150 , - 100 ] ) ;
114+ expect ( limitedDomain ) . toEqual ( [ 150 , 1 ] ) ;
115+
116+ limitedDomain = limitLogScaleDomain ( [ 50 , - 100 ] ) ;
117+ expect ( limitedDomain ) . toEqual ( [ - 1 , - 100 ] ) ;
118+ } ) ;
65119} ) ;
0 commit comments