1+ import {
2+ expect ,
3+ test ,
4+ describe ,
5+ } from "vitest" ;
6+
7+ import {
8+ lightenColor ,
9+ darkenColor ,
10+ shiftColorHue
11+ } from '../src/exposedLib' ;
12+
13+ describe ( 'lightenColor' , ( ) => {
14+ test ( 'returns a lightened hex color by a given strength from a rgb source' , ( ) => {
15+ const color = 'rgb(255,0,0)' ;
16+ expect ( lightenColor ( color , 0.1 ) ) . toBe ( '#ff1a1aff' )
17+ expect ( lightenColor ( color , 0.2 ) ) . toBe ( '#ff3333ff' )
18+ expect ( lightenColor ( color , 0.3 ) ) . toBe ( '#ff4d4dff' )
19+ expect ( lightenColor ( color , 0.4 ) ) . toBe ( '#ff6666ff' )
20+ expect ( lightenColor ( color , 0.5 ) ) . toBe ( '#ff8080ff' )
21+ expect ( lightenColor ( color , 0.6 ) ) . toBe ( '#ff9999ff' )
22+ expect ( lightenColor ( color , 0.7 ) ) . toBe ( '#ffb3b3ff' )
23+ expect ( lightenColor ( color , 0.8 ) ) . toBe ( '#ffccccff' )
24+ expect ( lightenColor ( color , 0.9 ) ) . toBe ( '#ffe6e6ff' )
25+ expect ( lightenColor ( color , 1 ) ) . toBe ( '#ffffffff' )
26+ } ) ;
27+
28+ test ( 'returns a lightened hex color by a given strength from a rgba source' , ( ) => {
29+ const color = 'rgb(255,0,0,0.5)' ;
30+ expect ( lightenColor ( color , 0.1 ) ) . toBe ( '#ff1a1a80' )
31+ expect ( lightenColor ( color , 0.2 ) ) . toBe ( '#ff333380' )
32+ expect ( lightenColor ( color , 0.3 ) ) . toBe ( '#ff4d4d80' )
33+ expect ( lightenColor ( color , 0.4 ) ) . toBe ( '#ff666680' )
34+ expect ( lightenColor ( color , 0.5 ) ) . toBe ( '#ff808080' )
35+ expect ( lightenColor ( color , 0.6 ) ) . toBe ( '#ff999980' )
36+ expect ( lightenColor ( color , 0.7 ) ) . toBe ( '#ffb3b380' )
37+ expect ( lightenColor ( color , 0.8 ) ) . toBe ( '#ffcccc80' )
38+ expect ( lightenColor ( color , 0.9 ) ) . toBe ( '#ffe6e680' )
39+ expect ( lightenColor ( color , 1 ) ) . toBe ( '#ffffff80' )
40+ } ) ;
41+
42+ test ( 'returns a lightened hex color by a given strength from a hex source' , ( ) => {
43+ const color = '#FF0000' ;
44+ expect ( lightenColor ( color , 0.1 ) ) . toBe ( '#ff1a1aff' )
45+ expect ( lightenColor ( color , 0.2 ) ) . toBe ( '#ff3333ff' )
46+ expect ( lightenColor ( color , 0.3 ) ) . toBe ( '#ff4d4dff' )
47+ expect ( lightenColor ( color , 0.4 ) ) . toBe ( '#ff6666ff' )
48+ expect ( lightenColor ( color , 0.5 ) ) . toBe ( '#ff8080ff' )
49+ expect ( lightenColor ( color , 0.6 ) ) . toBe ( '#ff9999ff' )
50+ expect ( lightenColor ( color , 0.7 ) ) . toBe ( '#ffb3b3ff' )
51+ expect ( lightenColor ( color , 0.8 ) ) . toBe ( '#ffccccff' )
52+ expect ( lightenColor ( color , 0.9 ) ) . toBe ( '#ffe6e6ff' )
53+ expect ( lightenColor ( color , 1 ) ) . toBe ( '#ffffffff' )
54+ } ) ;
55+
56+ test ( 'returns a lightened hex color by a given strength from a hex source with alpha channel' , ( ) => {
57+ const color = '#FF000080' ;
58+ expect ( lightenColor ( color , 0.1 ) ) . toBe ( '#ff1a1a80' )
59+ expect ( lightenColor ( color , 0.2 ) ) . toBe ( '#ff333380' )
60+ expect ( lightenColor ( color , 0.3 ) ) . toBe ( '#ff4d4d80' )
61+ expect ( lightenColor ( color , 0.4 ) ) . toBe ( '#ff666680' )
62+ expect ( lightenColor ( color , 0.5 ) ) . toBe ( '#ff808080' )
63+ expect ( lightenColor ( color , 0.6 ) ) . toBe ( '#ff999980' )
64+ expect ( lightenColor ( color , 0.7 ) ) . toBe ( '#ffb3b380' )
65+ expect ( lightenColor ( color , 0.8 ) ) . toBe ( '#ffcccc80' )
66+ expect ( lightenColor ( color , 0.9 ) ) . toBe ( '#ffe6e680' )
67+ expect ( lightenColor ( color , 1 ) ) . toBe ( '#ffffff80' )
68+ } ) ;
69+ } )
70+
71+ describe ( 'darkenColor' , ( ) => {
72+ test ( 'returns a darkened hex color by a given strength from a rgb source' , ( ) => {
73+ const color = 'rgb(255,0,0)' ;
74+ expect ( darkenColor ( color , 0.1 ) ) . toBe ( '#e60000ff' )
75+ expect ( darkenColor ( color , 0.2 ) ) . toBe ( '#cc0000ff' )
76+ expect ( darkenColor ( color , 0.3 ) ) . toBe ( '#b30000ff' )
77+ expect ( darkenColor ( color , 0.4 ) ) . toBe ( '#990000ff' )
78+ expect ( darkenColor ( color , 0.5 ) ) . toBe ( '#800000ff' )
79+ expect ( darkenColor ( color , 0.6 ) ) . toBe ( '#660000ff' )
80+ expect ( darkenColor ( color , 0.7 ) ) . toBe ( '#4d0000ff' )
81+ expect ( darkenColor ( color , 0.8 ) ) . toBe ( '#330000ff' )
82+ expect ( darkenColor ( color , 0.9 ) ) . toBe ( '#1a0000ff' )
83+ expect ( darkenColor ( color , 1 ) ) . toBe ( '#000000ff' )
84+ } ) ;
85+
86+ test ( 'returns a darkened hex color by a given strength from a rgba source' , ( ) => {
87+ const color = 'rgb(255,0,0,0.5)' ;
88+ expect ( darkenColor ( color , 0.1 ) ) . toBe ( '#e6000080' )
89+ expect ( darkenColor ( color , 0.2 ) ) . toBe ( '#cc000080' )
90+ expect ( darkenColor ( color , 0.3 ) ) . toBe ( '#b3000080' )
91+ expect ( darkenColor ( color , 0.4 ) ) . toBe ( '#99000080' )
92+ expect ( darkenColor ( color , 0.5 ) ) . toBe ( '#80000080' )
93+ expect ( darkenColor ( color , 0.6 ) ) . toBe ( '#66000080' )
94+ expect ( darkenColor ( color , 0.7 ) ) . toBe ( '#4d000080' )
95+ expect ( darkenColor ( color , 0.8 ) ) . toBe ( '#33000080' )
96+ expect ( darkenColor ( color , 0.9 ) ) . toBe ( '#1a000080' )
97+ expect ( darkenColor ( color , 1 ) ) . toBe ( '#00000080' )
98+ } ) ;
99+
100+ test ( 'returns a darkened hex color by a given strength from a hex source' , ( ) => {
101+ const color = '#FF0000' ;
102+ expect ( darkenColor ( color , 0.1 ) ) . toBe ( '#e60000ff' )
103+ expect ( darkenColor ( color , 0.2 ) ) . toBe ( '#cc0000ff' )
104+ expect ( darkenColor ( color , 0.3 ) ) . toBe ( '#b30000ff' )
105+ expect ( darkenColor ( color , 0.4 ) ) . toBe ( '#990000ff' )
106+ expect ( darkenColor ( color , 0.5 ) ) . toBe ( '#800000ff' )
107+ expect ( darkenColor ( color , 0.6 ) ) . toBe ( '#660000ff' )
108+ expect ( darkenColor ( color , 0.7 ) ) . toBe ( '#4d0000ff' )
109+ expect ( darkenColor ( color , 0.8 ) ) . toBe ( '#330000ff' )
110+ expect ( darkenColor ( color , 0.9 ) ) . toBe ( '#1a0000ff' )
111+ expect ( darkenColor ( color , 1 ) ) . toBe ( '#000000ff' )
112+ } ) ;
113+
114+ test ( 'returns a darkened hex color by a given strength from a hex source with alpha channel' , ( ) => {
115+ const color = '#FF000080' ;
116+ expect ( darkenColor ( color , 0.1 ) ) . toBe ( '#e6000080' )
117+ expect ( darkenColor ( color , 0.2 ) ) . toBe ( '#cc000080' )
118+ expect ( darkenColor ( color , 0.3 ) ) . toBe ( '#b3000080' )
119+ expect ( darkenColor ( color , 0.4 ) ) . toBe ( '#99000080' )
120+ expect ( darkenColor ( color , 0.5 ) ) . toBe ( '#80000080' )
121+ expect ( darkenColor ( color , 0.6 ) ) . toBe ( '#66000080' )
122+ expect ( darkenColor ( color , 0.7 ) ) . toBe ( '#4d000080' )
123+ expect ( darkenColor ( color , 0.8 ) ) . toBe ( '#33000080' )
124+ expect ( darkenColor ( color , 0.9 ) ) . toBe ( '#1a000080' )
125+ expect ( darkenColor ( color , 1 ) ) . toBe ( '#00000080' )
126+ } ) ;
127+ } ) ;
128+
129+ describe ( 'shiftColorHue' , ( ) => {
130+ test ( 'Shifts a color from a rgb source' , ( ) => {
131+ const color = 'rgb(255,0,0)' ;
132+ expect ( shiftColorHue ( color , 0.05 ) ) . toBe ( '#ff4d00ff' )
133+ expect ( shiftColorHue ( color , 0.1 ) ) . toBe ( '#ff9900ff' )
134+ expect ( shiftColorHue ( color , 0.15 ) ) . toBe ( '#ffe500ff' )
135+ expect ( shiftColorHue ( color , 0.2 ) ) . toBe ( '#ccff00ff' )
136+ expect ( shiftColorHue ( color , 0.3 ) ) . toBe ( '#33ff00ff' )
137+ expect ( shiftColorHue ( color , 0.4 ) ) . toBe ( '#00ff66ff' )
138+ expect ( shiftColorHue ( color , 0.5 ) ) . toBe ( '#00ffffff' )
139+ expect ( shiftColorHue ( color , 0.6 ) ) . toBe ( '#0066ffff' )
140+ expect ( shiftColorHue ( color , 0.7 ) ) . toBe ( '#3300ffff' )
141+ expect ( shiftColorHue ( color , 0.8 ) ) . toBe ( '#cc00ffff' )
142+ expect ( shiftColorHue ( color , 0.9 ) ) . toBe ( '#ff0099ff' )
143+ expect ( shiftColorHue ( color , 1 ) ) . toBe ( '#ff0000ff' )
144+ } )
145+
146+ test ( 'Shifts a color from a rgba source' , ( ) => {
147+ const color = 'rgb(255,0,0,0.5)' ;
148+ expect ( shiftColorHue ( color , 0.05 ) ) . toBe ( '#ff4d0080' )
149+ expect ( shiftColorHue ( color , 0.1 ) ) . toBe ( '#ff990080' )
150+ expect ( shiftColorHue ( color , 0.15 ) ) . toBe ( '#ffe50080' )
151+ expect ( shiftColorHue ( color , 0.2 ) ) . toBe ( '#ccff0080' )
152+ expect ( shiftColorHue ( color , 0.3 ) ) . toBe ( '#33ff0080' )
153+ expect ( shiftColorHue ( color , 0.4 ) ) . toBe ( '#00ff6680' )
154+ expect ( shiftColorHue ( color , 0.5 ) ) . toBe ( '#00ffff80' )
155+ expect ( shiftColorHue ( color , 0.6 ) ) . toBe ( '#0066ff80' )
156+ expect ( shiftColorHue ( color , 0.7 ) ) . toBe ( '#3300ff80' )
157+ expect ( shiftColorHue ( color , 0.8 ) ) . toBe ( '#cc00ff80' )
158+ expect ( shiftColorHue ( color , 0.9 ) ) . toBe ( '#ff009980' )
159+ expect ( shiftColorHue ( color , 1 ) ) . toBe ( '#ff000080' )
160+ } )
161+
162+ test ( 'Shifts a color from a hex source' , ( ) => {
163+ const color = '#FF0000' ;
164+ expect ( shiftColorHue ( color , 0.05 ) ) . toBe ( '#ff4d00ff' )
165+ expect ( shiftColorHue ( color , 0.1 ) ) . toBe ( '#ff9900ff' )
166+ expect ( shiftColorHue ( color , 0.15 ) ) . toBe ( '#ffe500ff' )
167+ expect ( shiftColorHue ( color , 0.2 ) ) . toBe ( '#ccff00ff' )
168+ expect ( shiftColorHue ( color , 0.3 ) ) . toBe ( '#33ff00ff' )
169+ expect ( shiftColorHue ( color , 0.4 ) ) . toBe ( '#00ff66ff' )
170+ expect ( shiftColorHue ( color , 0.5 ) ) . toBe ( '#00ffffff' )
171+ expect ( shiftColorHue ( color , 0.6 ) ) . toBe ( '#0066ffff' )
172+ expect ( shiftColorHue ( color , 0.7 ) ) . toBe ( '#3300ffff' )
173+ expect ( shiftColorHue ( color , 0.8 ) ) . toBe ( '#cc00ffff' )
174+ expect ( shiftColorHue ( color , 0.9 ) ) . toBe ( '#ff0099ff' )
175+ expect ( shiftColorHue ( color , 1 ) ) . toBe ( '#ff0000ff' )
176+ } )
177+
178+ test ( 'Shifts a color from a hex source with alpha channel' , ( ) => {
179+ const color = '#FF000080' ;
180+ expect ( shiftColorHue ( color , 0.05 ) ) . toBe ( '#ff4d0080' )
181+ expect ( shiftColorHue ( color , 0.1 ) ) . toBe ( '#ff990080' )
182+ expect ( shiftColorHue ( color , 0.15 ) ) . toBe ( '#ffe50080' )
183+ expect ( shiftColorHue ( color , 0.2 ) ) . toBe ( '#ccff0080' )
184+ expect ( shiftColorHue ( color , 0.3 ) ) . toBe ( '#33ff0080' )
185+ expect ( shiftColorHue ( color , 0.4 ) ) . toBe ( '#00ff6680' )
186+ expect ( shiftColorHue ( color , 0.5 ) ) . toBe ( '#00ffff80' )
187+ expect ( shiftColorHue ( color , 0.6 ) ) . toBe ( '#0066ff80' )
188+ expect ( shiftColorHue ( color , 0.7 ) ) . toBe ( '#3300ff80' )
189+ expect ( shiftColorHue ( color , 0.8 ) ) . toBe ( '#cc00ff80' )
190+ expect ( shiftColorHue ( color , 0.9 ) ) . toBe ( '#ff009980' )
191+ expect ( shiftColorHue ( color , 1 ) ) . toBe ( '#ff000080' )
192+ } )
193+ } )
0 commit comments