@@ -84,6 +84,68 @@ describe('vendor prefixes', () => {
8484 } )
8585} )
8686
87+ describe ( 'shorthands' , ( ) => {
88+ test ( 'counts shorthand properties' , ( ) => {
89+ const fixture = `
90+ a {
91+ margin: 0;
92+ padding: 0;
93+ color: red;
94+ font: bold 1em/1.5 sans-serif;
95+ }
96+ `
97+ const actual = analyze ( fixture ) . properties . shorthands
98+
99+ expect ( actual . total ) . toEqual ( 3 )
100+ expect ( actual . totalUnique ) . toEqual ( 3 )
101+ expect ( actual . unique ) . toEqual ( { margin : 1 , padding : 1 , font : 1 } )
102+ expect ( actual . ratio ) . toEqual ( 3 / 4 )
103+ } )
104+
105+ test ( 'counts duplicate shorthands' , ( ) => {
106+ const fixture = `
107+ a { margin: 0; }
108+ b { margin: 10px; }
109+ `
110+ const actual = analyze ( fixture ) . properties . shorthands
111+
112+ expect ( actual . total ) . toEqual ( 2 )
113+ expect ( actual . totalUnique ) . toEqual ( 1 )
114+ expect ( actual . unique ) . toEqual ( { margin : 2 } )
115+ expect ( actual . uniquenessRatio ) . toEqual ( 1 / 2 )
116+ } )
117+
118+ test ( 'non-shorthand properties are not counted' , ( ) => {
119+ const fixture = `a { color: red; font-size: 1em; }`
120+ const actual = analyze ( fixture ) . properties . shorthands
121+
122+ expect ( actual . total ) . toEqual ( 0 )
123+ expect ( actual . totalUnique ) . toEqual ( 0 )
124+ expect ( actual . unique ) . toEqual ( { } )
125+ expect ( actual . ratio ) . toEqual ( 0 )
126+ } )
127+
128+ test ( 'preserves original casing of shorthand property name' , ( ) => {
129+ const fixture = `a { MARGIN: 0; }`
130+ const actual = analyze ( fixture ) . properties . shorthands
131+
132+ expect ( actual . total ) . toEqual ( 1 )
133+ expect ( actual . unique ) . toEqual ( { MARGIN : 1 } )
134+ } )
135+
136+ test ( 'counts shorthands inside at-rules' , ( ) => {
137+ const fixture = `
138+ @media screen {
139+ a { padding: 0; }
140+ }
141+ `
142+ const actual = analyze ( fixture ) . properties . shorthands
143+
144+ expect ( actual . total ) . toEqual ( 1 )
145+ expect ( actual . unique ) . toEqual ( { padding : 1 } )
146+ } )
147+ } )
148+
87149describe ( 'browserhacks' , ( ) => {
88150 test ( 'counts browser hacks' , ( ) => {
89151 const fixture = `
0 commit comments