core-graphics
Version:
A core library for creating shape-based graphic editors
90 lines (61 loc) • 3.13 kB
JavaScript
;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _tap = require('tap');
var _compress = require('../../lib/contrib/compress');
var _historyEvent = require('../history/history-event');
var _history = require('../test-data/history');
var _history2 = _interopRequireDefault(_history);
var _largeHistory = require('../test-data/large-history');
var _largeHistory2 = _interopRequireDefault(_largeHistory);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
(0, _tap.test)('decompressPointsArray(compressPointsArray(x)) === x', function (t) {
var points = [{ x: 10, y: 20 }, { x: 30, y: 40 }];
t.deepEqual((0, _compress.decompressPointsArray)((0, _compress.compressPointsArray)(points)), points);
t.end();
});
(0, _tap.test)('decomp(comp(x)) === x', function (t) {
var compressed = _history2.default.map(_compress.compressHistoryEvent);
var decompressed = compressed.map(_compress.decompressHistoryEvent);
t.deepEqual(decompressed, _history2.default);
t.end();
});
(0, _tap.test)('|comp(x)| / |decomp(x)| <= 0.6', function (t) {
var compressed = _history2.default.map(_compress.compressHistoryEvent);
var decompressed = compressed.map(_compress.decompressHistoryEvent);
var compL = JSON.stringify(compressed).length;
var decompL = JSON.stringify(decompressed).length;
t.assert(compL / decompL <= 0.6, 'ratio is fine');
t.end();
});
(0, _tap.test)('comp(x) rounds shape data keypoints to 2 significant digits', function (t) {
var initialShapeData = {
graphicalContextData: { SC: '#1B2B34' },
id: '1',
keyPoints: [{ x: 160.24213, y: 80.358 }, { x: 160.44213, y: 160.346 }],
type: 'FREEHAND'
};
var expectedShapeData = _extends({}, initialShapeData, {
keyPoints: [{ x: 160.24, y: 80.36 }, { x: 160.44, y: 160.35 }]
});
var testEvent = (0, _historyEvent.getPersistedHistoryEvent)({ id: 0, author: 'some' }, (0, _historyEvent.shapeAddEvent)(initialShapeData));
var expectedEvent = (0, _historyEvent.getPersistedHistoryEvent)({ id: 0, author: 'some' }, (0, _historyEvent.shapeAddEvent)(expectedShapeData));
var processedEvent = (0, _compress.decompressHistoryEvent)((0, _compress.compressHistoryEvent)(testEvent));
t.deepEqual(processedEvent, expectedEvent);
t.end();
});
/*
test('large decomp(comp(x)) === x', t => {
const compressed = TEST_LARGE_HISTORY.map(compressHistoryEvent);
const decompressed = compressed.map(decompressHistoryEvent);
t.deepEqual(decompressed, TEST_LARGE_HISTORY);
t.end();
});
test('large |comp(x)| / |decomp(x)| <= 0.6', t => {
const compressed = TEST_LARGE_HISTORY.map(compressHistoryEvent);
const decompressed = compressed.map(decompressHistoryEvent);
const compL = JSON.stringify(compressed).length;
const decompL = JSON.stringify(decompressed).length;
t.assert( (compL / decompL) <= 0.6, 'ratio is fine');
t.end();
});
*/