@@ -126,4 +126,91 @@ func TestFuncCheck(t *testing.T) {
126126 },
127127 })
128128 })
129+ require .Panics (func () {
130+ // too large val
131+ NewFunc ([]Dot {
132+ {
133+ X : 0 ,
134+ Y : 0 ,
135+ },
136+ {
137+ X : maxVal + 1 ,
138+ Y : 1 ,
139+ },
140+ })
141+ })
142+ require .Panics (func () {
143+ // too large val
144+ NewFunc ([]Dot {
145+ {
146+ X : 0 ,
147+ Y : 0 ,
148+ },
149+ {
150+ X : 1 ,
151+ Y : maxVal + 1 ,
152+ },
153+ })
154+ })
155+ require .Panics (func () {
156+ // too large val
157+ NewFunc ([]Dot {
158+ {
159+ X : maxVal + 1 ,
160+ Y : maxVal + 1 ,
161+ },
162+ {
163+ X : maxVal + 2 ,
164+ Y : maxVal + 2 ,
165+ },
166+ })
167+ })
168+ }
169+
170+ func TestCustomFunc (t * testing.T ) {
171+ require := require .New (t )
172+
173+ var f = NewFunc ([]Dot {
174+ {
175+ X : 1 ,
176+ Y : 0.0 * DecimalUnit ,
177+ },
178+ {
179+ X : 10.0 * DecimalUnit ,
180+ Y : 10.0 * DecimalUnit ,
181+ },
182+ {
183+ X : 20.0 * DecimalUnit ,
184+ Y : 40.0 * DecimalUnit ,
185+ },
186+ {
187+ X : 25.0 * DecimalUnit ,
188+ Y : 41.0 * DecimalUnit ,
189+ },
190+ {
191+ X : maxVal ,
192+ Y : maxVal ,
193+ },
194+ })
195+
196+ require .Equal (uint64 (0 ), f (0 ))
197+ require .Equal (uint64 (0 ), f (1 ))
198+ require .Equal (uint64 (0 ), f (10 ))
199+ require .Equal (uint64 (10 ), f (11 ))
200+ require .Equal (uint64 (4.99999 * DecimalUnit ), f (5.0 * DecimalUnit ))
201+ require .Equal (uint64 (10.0 * DecimalUnit ), f (10.0 * DecimalUnit ))
202+ require .Equal (uint64 (25.0 * DecimalUnit ), f (15.0 * DecimalUnit ))
203+ require .Equal (uint64 (34.0 * DecimalUnit ), f (18.0 * DecimalUnit ))
204+ require .Equal (uint64 (37.0 * DecimalUnit ), f (19.0 * DecimalUnit ))
205+ require .Equal (uint64 (37.3 * DecimalUnit ), f (19.1 * DecimalUnit ))
206+ require .Equal (uint64 (40.0 * DecimalUnit ), f (20.0 * DecimalUnit ))
207+ require .Equal (uint64 (40.4 * DecimalUnit ), f (22.0 * DecimalUnit ))
208+ require .Equal (uint64 (41 * DecimalUnit ), f (25.0 * DecimalUnit ))
209+ require .Equal (uint64 (250012.273351 * DecimalUnit ), f (250000.0 * DecimalUnit ))
210+ require .Equal (uint64 (2500011.987361 * DecimalUnit ), f (2500000.0 * DecimalUnit ))
211+ require .Equal (uint64 (maxVal - 18446704 - 18446703 ), f (maxVal - 18446704 - 16 ))
212+ require .Equal (uint64 (maxVal - 18446704 ), f (maxVal - 18446704 - 15 ))
213+ require .Equal (uint64 (maxVal - 18446704 ), f (maxVal - 1 ))
214+ require .Equal (uint64 (maxVal ), f (maxVal ))
215+ require .Equal (uint64 (maxVal ), f (math .MaxUint64 ))
129216}
0 commit comments