mirror of
https://github.com/dolthub/dolt.git
synced 2026-02-10 18:49:02 -06:00
89 lines
2.7 KiB
JavaScript
89 lines
2.7 KiB
JavaScript
// @flow
|
|
|
|
// Copyright 2016 Attic Labs, Inc. All rights reserved.
|
|
// Licensed under the Apache License, version 2.0:
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
import {suite, test} from 'mocha';
|
|
import {assert} from 'chai';
|
|
import {notNull} from './assert.js';
|
|
import OrderedPutCache from './put-cache.js';
|
|
import Chunk from './chunk.js';
|
|
|
|
suite('OrderedPutCache', () => {
|
|
test('append', async () => {
|
|
const canned = [Chunk.fromString('abc'), Chunk.fromString('def')];
|
|
const cache = new OrderedPutCache();
|
|
assert.isTrue(cache.append(canned[0]));
|
|
assert.isTrue(cache.append(canned[1]));
|
|
await cache.destroy();
|
|
});
|
|
|
|
test('repeated append returns false', async () => {
|
|
const canned = [Chunk.fromString('abc'), Chunk.fromString('def')];
|
|
const cache = new OrderedPutCache();
|
|
assert.isTrue(cache.append(canned[0]));
|
|
assert.isTrue(cache.append(canned[1]));
|
|
assert.isFalse(cache.append(canned[0]));
|
|
await cache.destroy();
|
|
});
|
|
|
|
test('get', async () => {
|
|
const canned = [Chunk.fromString('abc'), Chunk.fromString('def')];
|
|
const cache = new OrderedPutCache();
|
|
assert.isTrue(cache.append(canned[0]));
|
|
|
|
let p = cache.get(canned[1].hash.toString());
|
|
assert.isNull(p);
|
|
|
|
assert.isTrue(cache.append(canned[1]));
|
|
p = cache.get(canned[1].hash.toString());
|
|
assert.isNotNull(p);
|
|
const chunk = await notNull(p);
|
|
assert.isTrue(canned[1].hash.equals(chunk.hash));
|
|
|
|
await cache.destroy();
|
|
});
|
|
|
|
test('dropUntil', async () => {
|
|
const canned = [Chunk.fromString('abc'), Chunk.fromString('def'), Chunk.fromString('ghi')];
|
|
const cache = new OrderedPutCache();
|
|
for (const chunk of canned) {
|
|
assert.isTrue(cache.append(chunk));
|
|
}
|
|
|
|
await cache.dropUntil(canned[1].hash.toString());
|
|
|
|
let p = cache.get(canned[2].hash.toString());
|
|
assert.isNotNull(p);
|
|
const chunk = await notNull(p);
|
|
assert.isTrue(canned[2].hash.equals(chunk.hash));
|
|
|
|
p = cache.get(canned[0].hash.toString());
|
|
assert.isNull(p);
|
|
p = cache.get(canned[1].hash.toString());
|
|
assert.isNull(p);
|
|
|
|
await cache.destroy();
|
|
});
|
|
|
|
test('extractChunks', async () => {
|
|
const canned = [Chunk.fromString('abc'), Chunk.fromString('def'), Chunk.fromString('ghi')];
|
|
const cache = new OrderedPutCache();
|
|
for (const chunk of canned) {
|
|
assert.isTrue(cache.append(chunk));
|
|
}
|
|
|
|
const chunkStream = await cache.extractChunks(canned[0].hash.toString(),
|
|
canned[2].hash.toString());
|
|
const chunks = [];
|
|
await chunkStream(chunk => { chunks.push(chunk); });
|
|
|
|
for (let i = 0; i < canned.length; i++) {
|
|
assert.isTrue(canned[i].hash.equals(chunks[i].hash));
|
|
}
|
|
|
|
await cache.destroy();
|
|
});
|
|
});
|