@@ -179,12 +179,12 @@ suite('conversion', () => {
179
179
} ) ;
180
180
} ) ;
181
181
suite ( 'hugeint_to_double' , ( ) => {
182
- test ( 'one' , ( ) => {
183
- expect ( duckdb . hugeint_to_double ( 1n ) ) . toBe ( 1 ) ;
184
- } ) ;
185
182
test ( 'zero' , ( ) => {
186
183
expect ( duckdb . hugeint_to_double ( 0n ) ) . toBe ( 0 ) ;
187
184
} ) ;
185
+ test ( 'one' , ( ) => {
186
+ expect ( duckdb . hugeint_to_double ( 1n ) ) . toBe ( 1 ) ;
187
+ } ) ;
188
188
test ( 'negative one' , ( ) => {
189
189
expect ( duckdb . hugeint_to_double ( - 1n ) ) . toBe ( - 1 ) ;
190
190
} ) ;
@@ -212,17 +212,20 @@ suite('conversion', () => {
212
212
test ( 'near max' , ( ) => {
213
213
expect ( duckdb . hugeint_to_double ( 2n ** 127n - 2n ** 74n ) ) . toBe ( 1.7014118346046922e+38 ) ;
214
214
} ) ;
215
- test ( 'out of range' , ( ) => {
215
+ test ( 'out of range (positive) ' , ( ) => {
216
216
expect ( ( ) => duckdb . hugeint_to_double ( 2n ** 129n ) ) . toThrowError ( 'bigint out of hugeint range' ) ;
217
217
} ) ;
218
+ test ( 'out of range (negative)' , ( ) => {
219
+ expect ( ( ) => duckdb . hugeint_to_double ( - ( 2n ** 129n ) ) ) . toThrowError ( 'bigint out of hugeint range' ) ;
220
+ } ) ;
218
221
} ) ;
219
222
suite ( 'double_to_hugeint' , ( ) => {
220
- test ( 'one' , ( ) => {
221
- expect ( duckdb . double_to_hugeint ( 1 ) ) . toBe ( 1n ) ;
222
- } ) ;
223
223
test ( 'zero' , ( ) => {
224
224
expect ( duckdb . double_to_hugeint ( 0 ) ) . toBe ( 0n ) ;
225
225
} ) ;
226
+ test ( 'one' , ( ) => {
227
+ expect ( duckdb . double_to_hugeint ( 1 ) ) . toBe ( 1n ) ;
228
+ } ) ;
226
229
test ( 'negative one' , ( ) => {
227
230
expect ( duckdb . double_to_hugeint ( - 1 ) ) . toBe ( - 1n ) ;
228
231
} ) ;
@@ -245,4 +248,47 @@ suite('conversion', () => {
245
248
expect ( duckdb . double_to_hugeint ( 1.7014118346046922e+38 ) ) . toBe ( 2n ** 127n - 2n ** 74n ) ;
246
249
} ) ;
247
250
} ) ;
251
+ suite ( 'uhugeint_to_double' , ( ) => {
252
+ test ( 'zero' , ( ) => {
253
+ expect ( duckdb . uhugeint_to_double ( 0n ) ) . toBe ( 0 ) ;
254
+ } ) ;
255
+ test ( 'one' , ( ) => {
256
+ expect ( duckdb . uhugeint_to_double ( 1n ) ) . toBe ( 1 ) ;
257
+ } ) ;
258
+ test ( 'one word' , ( ) => {
259
+ expect ( duckdb . uhugeint_to_double ( 2n ** 63n ) ) . toBe ( 9.223372036854776e+18 ) ;
260
+ } ) ;
261
+ test ( 'two words' , ( ) => {
262
+ expect ( duckdb . uhugeint_to_double ( 2n ** 65n ) ) . toBe ( 3.6893488147419103e+19 ) ;
263
+ } ) ;
264
+ test ( 'max' , ( ) => {
265
+ expect ( duckdb . uhugeint_to_double ( 2n ** 127n - 1n ) ) . toBe ( 1.7014118346046923e+38 ) ;
266
+ } ) ;
267
+ test ( 'near max' , ( ) => {
268
+ expect ( duckdb . uhugeint_to_double ( 2n ** 127n - 2n ** 74n ) ) . toBe ( 1.7014118346046922e+38 ) ;
269
+ } ) ;
270
+ test ( 'out of range (positive)' , ( ) => {
271
+ expect ( ( ) => duckdb . uhugeint_to_double ( 2n ** 129n ) ) . toThrowError ( 'bigint out of uhugeint range' ) ;
272
+ } ) ;
273
+ test ( 'out of range (negative)' , ( ) => {
274
+ expect ( ( ) => duckdb . uhugeint_to_double ( - 1n ) ) . toThrowError ( 'bigint out of uhugeint range' ) ;
275
+ } ) ;
276
+ } ) ;
277
+ suite ( 'double_to_uhugeint' , ( ) => {
278
+ test ( 'zero' , ( ) => {
279
+ expect ( duckdb . double_to_uhugeint ( 0 ) ) . toBe ( 0n ) ;
280
+ } ) ;
281
+ test ( 'one' , ( ) => {
282
+ expect ( duckdb . double_to_uhugeint ( 1 ) ) . toBe ( 1n ) ;
283
+ } ) ;
284
+ test ( 'one word' , ( ) => {
285
+ expect ( duckdb . double_to_uhugeint ( 9.223372036854776e+18 ) ) . toBe ( 2n ** 63n ) ;
286
+ } ) ;
287
+ test ( 'two words' , ( ) => {
288
+ expect ( duckdb . double_to_uhugeint ( 3.6893488147419103e+19 ) ) . toBe ( 2n ** 65n ) ;
289
+ } ) ;
290
+ test ( 'near max' , ( ) => {
291
+ expect ( duckdb . double_to_uhugeint ( 1.7014118346046922e+38 ) ) . toBe ( 2n ** 127n - 2n ** 74n ) ;
292
+ } ) ;
293
+ } ) ;
248
294
} ) ;
0 commit comments