|
1 | 1 | import { assert, describe, test } from 'vitest';
|
2 | 2 | import {
|
| 3 | + DuckDBAnyType, |
3 | 4 | DuckDBArrayType,
|
4 | 5 | DuckDBArrayVector,
|
5 | 6 | DuckDBBigIntType,
|
@@ -44,6 +45,7 @@ import {
|
44 | 45 | DuckDBMapVector,
|
45 | 46 | DuckDBPendingResultState,
|
46 | 47 | DuckDBResult,
|
| 48 | + DuckDBSQLNullType, |
47 | 49 | DuckDBSmallDecimal,
|
48 | 50 | DuckDBSmallIntType,
|
49 | 51 | DuckDBSmallIntVector,
|
@@ -283,6 +285,10 @@ describe('api', () => {
|
283 | 285 | const ver = version();
|
284 | 286 | assert.ok(ver.startsWith('v'), `version starts with 'v'`);
|
285 | 287 | });
|
| 288 | + test('should expose configuration option descriptions', () => { |
| 289 | + const descriptions = configurationOptionDescriptions(); |
| 290 | + assert.ok(descriptions['memory_limit'], `descriptions has 'memory_limit'`); |
| 291 | + }); |
286 | 292 | test('ReturnResultType enum', () => {
|
287 | 293 | assert.equal(ResultReturnType.INVALID, 0);
|
288 | 294 | assert.equal(ResultReturnType.CHANGED_ROWS, 1);
|
@@ -353,9 +359,55 @@ describe('api', () => {
|
353 | 359 | assert.equal(StatementType[StatementType.DETACH], 'DETACH');
|
354 | 360 | assert.equal(StatementType[StatementType.MULTI], 'MULTI');
|
355 | 361 | });
|
356 |
| - test('should expose configuration option descriptions', () => { |
357 |
| - const descriptions = configurationOptionDescriptions(); |
358 |
| - assert.ok(descriptions['memory_limit'], `descriptions has 'memory_limit'`); |
| 362 | + test('DuckDBType toString', () => { |
| 363 | + assert.equal(DuckDBBooleanType.instance.toString(), 'BOOLEAN'); |
| 364 | + assert.equal(DuckDBTinyIntType.instance.toString(), 'TINYINT'); |
| 365 | + assert.equal(DuckDBSmallIntType.instance.toString(), 'SMALLINT'); |
| 366 | + assert.equal(DuckDBIntegerType.instance.toString(), 'INTEGER'); |
| 367 | + assert.equal(DuckDBBigIntType.instance.toString(), 'BIGINT'); |
| 368 | + assert.equal(DuckDBUTinyIntType.instance.toString(), 'UTINYINT'); |
| 369 | + assert.equal(DuckDBUSmallIntType.instance.toString(), 'USMALLINT'); |
| 370 | + assert.equal(DuckDBUIntegerType.instance.toString(), 'UINTEGER'); |
| 371 | + assert.equal(DuckDBUBigIntType.instance.toString(), 'UBIGINT'); |
| 372 | + assert.equal(DuckDBFloatType.instance.toString(), 'FLOAT'); |
| 373 | + assert.equal(DuckDBDoubleType.instance.toString(), 'DOUBLE'); |
| 374 | + assert.equal(DuckDBTimestampType.instance.toString(), 'TIMESTAMP'); |
| 375 | + assert.equal(DuckDBDateType.instance.toString(), 'DATE'); |
| 376 | + assert.equal(DuckDBTimeType.instance.toString(), 'TIME'); |
| 377 | + assert.equal(DuckDBIntervalType.instance.toString(), 'INTERVAL'); |
| 378 | + assert.equal(DuckDBHugeIntType.instance.toString(), 'HUGEINT'); |
| 379 | + assert.equal(DuckDBUHugeIntType.instance.toString(), 'UHUGEINT'); |
| 380 | + assert.equal(DuckDBVarCharType.instance.toString(), 'VARCHAR'); |
| 381 | + assert.equal(DuckDBBlobType.instance.toString(), 'BLOB'); |
| 382 | + assert.equal((new DuckDBDecimalType(17, 5)).toString(), 'DECIMAL(17,5)'); |
| 383 | + assert.equal(DuckDBTimestampSecondsType.instance.toString(), 'TIMESTAMP_S'); |
| 384 | + assert.equal(DuckDBTimestampMillisecondsType.instance.toString(), 'TIMESTAMP_MS'); |
| 385 | + assert.equal(DuckDBTimestampNanosecondsType.instance.toString(), 'TIMESTAMP_NS'); |
| 386 | + assert.equal( |
| 387 | + (new DuckDBEnumType(['fly', 'swim', 'walk'], DuckDBTypeId.UTINYINT)).toString(), |
| 388 | + `ENUM('fly', 'swim', 'walk')` |
| 389 | + ); |
| 390 | + assert.equal((new DuckDBListType(DuckDBIntegerType.instance)).toString(), 'INTEGER[]'); |
| 391 | + assert.equal((new DuckDBStructType([ |
| 392 | + { name: 'id', valueType: DuckDBVarCharType.instance }, |
| 393 | + { name: 'ts', valueType: DuckDBTimestampType.instance }, |
| 394 | + ])).toString(), 'STRUCT("id" VARCHAR, "ts" TIMESTAMP)'); |
| 395 | + assert.equal( |
| 396 | + (new DuckDBMapType(DuckDBIntegerType.instance, DuckDBVarCharType.instance)).toString(), |
| 397 | + 'MAP(INTEGER, VARCHAR)' |
| 398 | + ); |
| 399 | + assert.equal((new DuckDBArrayType(DuckDBIntegerType.instance, 3)).toString(), 'INTEGER[3]'); |
| 400 | + assert.equal(DuckDBUUIDType.instance.toString(), 'UUID'); |
| 401 | + assert.equal((new DuckDBUnionType([ |
| 402 | + { tag: 'str', valueType: DuckDBVarCharType.instance }, |
| 403 | + { tag: 'num', valueType: DuckDBIntegerType.instance }, |
| 404 | + ])).toString(), 'UNION("str" VARCHAR, "num" INTEGER)'); |
| 405 | + assert.equal(DuckDBBitType.instance.toString(), 'BIT'); |
| 406 | + assert.equal(DuckDBTimeTZType.instance.toString(), 'TIME WITH TIME ZONE'); |
| 407 | + assert.equal(DuckDBTimestampTZType.instance.toString(), 'TIMESTAMP WITH TIME ZONE'); |
| 408 | + assert.equal(DuckDBAnyType.instance.toString(), 'ANY'); |
| 409 | + assert.equal(DuckDBVarIntType.instance.toString(), 'VARINT'); |
| 410 | + assert.equal(DuckDBSQLNullType.instance.toString(), 'SQLNULL'); |
359 | 411 | });
|
360 | 412 | test('should support creating, connecting, running a basic query, and reading results', async () => {
|
361 | 413 | const instance = await DuckDBInstance.create();
|
|
0 commit comments