muschema
Version:
Schemas for mudb
48 lines (33 loc) • 1.25 kB
text/typescript
import test = require('tape');
import { MuString } from '../string';
import { MuReadStream, MuWriteStream } from 'mustreams';
test('string', (t) => {
const defaultValue = '';
let s = new MuString();
t.equals(s.identity, defaultValue);
t.equals(s.alloc(), defaultValue);
t.equals(s.clone(''), '');
const ascii = 'I <3 you.';
const twoBytes = 'אני אוהבת אותך';
const threeBytes = '我♥你';
const fourBytes = '👩👨❤️👨👩';
const varBytes = fourBytes + twoBytes + ascii + threeBytes;
s = new MuString(varBytes);
t.equals(s.identity, varBytes);
t.equals(s.alloc(), varBytes);
t.equals(s.clone(varBytes), varBytes);
let longStr = '';
for (let i = 0; i < 100000; ++i) {
longStr += varBytes;
}
s = new MuString(longStr);
t.equals(s.identity, longStr);
t.equals(s.alloc(), longStr);
t.equals(s.clone(longStr), longStr);
const ws = new MuWriteStream(2);
t.equals(s.diff(longStr, longStr, ws), false);
t.equals(s.diff(longStr, longStr.substring(0, longStr.length - 1), ws), true);
const rs = new MuReadStream(ws.bytes());
t.equals(s.patch(longStr, rs), longStr.substring(0, longStr.length - 1));
t.end();
});