28 lines
985 B
JavaScript
28 lines
985 B
JavaScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import { embedQuery, embedText } from './embed-memory-v2-local-hash.mjs';
|
|
|
|
test('embedText returns deterministic normalized vectors', () => {
|
|
const first = embedText('memory chain local smoke', { dimensions: 8 });
|
|
const second = embedText('memory chain local smoke', { dimensions: 8 });
|
|
const norm = Math.sqrt(first.reduce((sum, value) => sum + value * value, 0));
|
|
|
|
assert.deepEqual(first, second);
|
|
assert.equal(first.length, 8);
|
|
assert.ok(Math.abs(norm - 1) < 0.000001);
|
|
});
|
|
|
|
test('embedQuery accepts dimensions from runtime input', async () => {
|
|
const vector = await embedQuery('pgvector canary', { dimensions: 3 });
|
|
|
|
assert.equal(vector.length, 3);
|
|
assert.equal(vector.every((item) => Number.isFinite(item)), true);
|
|
});
|
|
|
|
test('embedText validates dimensions', () => {
|
|
assert.throws(
|
|
() => embedText('bad', { dimensions: 0 }),
|
|
/Invalid MEMORY_V2_LOCAL_EMBEDDING_DIMENSIONS/,
|
|
);
|
|
});
|