singularity-forge/synthlang-runner/test.cjs
2026-05-04 19:28:39 +02:00

38 lines
1.8 KiB
JavaScript

const { compressText, decompressText, calculateCompressionRatio, estimateTokens, getCompressionInfo } = require('./synthlang_native');
console.log('=== SynthLang Native Rust Module Test ===\n');
// Show module info
const info = getCompressionInfo();
console.log('Module Info:', info);
// Test compression
const testTexts = [
"function calculateTotal(items, taxRate, discountCode) { let subtotal = 0; for (const item of items) { subtotal += item.price * item.quantity; } }",
"The quick brown fox jumps over the lazy dog and then runs away with the chicken",
"import { Component } from 'react'; export default class MyComponent extends Component { render() { return <div>Hello</div>; } }",
"async function fetchData() { const response = await fetch('/api/data'); const data = await response.json(); return data; }",
];
for (const text of testTexts) {
console.log('\n---');
console.log('Original:', text.substring(0, 80) + (text.length > 80 ? '...' : ''));
console.log('Length:', text.length, 'chars');
const compressed = compressText(text);
console.log('Compressed:', compressed.substring(0, 80) + (compressed.length > 80 ? '...' : ''));
console.log('Compressed Length:', compressed.length, 'chars');
const ratio = calculateCompressionRatio(text, compressed);
console.log('Compression Ratio:', (ratio * 100).toFixed(1) + '%');
const origTokens = estimateTokens(text);
const compTokens = estimateTokens(compressed);
console.log('Tokens:', origTokens, '→', compTokens, '(saved:', origTokens - compTokens, ')');
const decompressed = decompressText(compressed);
console.log('Decompressed:', decompressed.substring(0, 80) + (decompressed.length > 80 ? '...' : ''));
console.log('Roundtrip OK:', decompressed === text ? '✅' : '❌ (lossy as expected)');
}
console.log('\n=== Done ===');