@solvprotocol/upgrade-safe-transpiler
Version:
Solidity preprocessor used to generate OpenZeppelin Contracts Upgrade Safe.
73 lines • 3.19 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ava_1 = __importDefault(require("ava"));
const compare_1 = require("./compare");
function sortTransformations(ts) {
return Array.from(ts).sort(compare_1.compareTransformations);
}
(0, ava_1.default)('sort non overlapping', t => {
const b = { kind: 'b', start: 2, length: 1, text: '' };
const a = { kind: 'a', start: 0, length: 1, text: '' };
t.deepEqual([a, b], sortTransformations([a, b]));
t.deepEqual([a, b], sortTransformations([b, a]));
});
(0, ava_1.default)('sort contained', t => {
const a = { kind: 'a', start: 1, length: 1, text: '' };
const b = { kind: 'b', start: 0, length: 4, text: '' };
t.deepEqual([a, b], sortTransformations([b, a]));
t.deepEqual([a, b], sortTransformations([a, b]));
});
(0, ava_1.default)('reject partial overlap', t => {
const a = { kind: 'a', start: 1, length: 2, text: '' };
const b = { kind: 'b', start: 0, length: 2, text: '' };
t.throws(() => sortTransformations([b, a]));
});
(0, ava_1.default)('sort contained with shared end', t => {
const a = { kind: 'a', start: 1, length: 1, text: '' };
const b = { kind: 'b', start: 0, length: 2, text: '' };
t.deepEqual([a, b], sortTransformations([b, a]));
t.deepEqual([a, b], sortTransformations([a, b]));
});
(0, ava_1.default)('sort contained with shared start', t => {
const a = { kind: 'a', start: 0, length: 1, text: '' };
const b = { kind: 'b', start: 0, length: 2, text: '' };
t.deepEqual([a, b], sortTransformations([b, a]));
t.deepEqual([a, b], sortTransformations([a, b]));
});
(0, ava_1.default)('sort equal lengths', t => {
const a = { kind: 'a', start: 0, length: 1, text: '' };
const b = { kind: 'b', start: 0, length: 1, text: '' };
sortTransformations([b, a]);
t.pass();
});
(0, ava_1.default)('sort length zero as not overlapping', t => {
const a = { kind: 'a', start: 0, length: 1, text: '' };
const b = { kind: 'b', start: 1, length: 0, text: '' };
const c = { kind: 'c', start: 1, length: 1, text: '' };
t.deepEqual([a, b, c], sortTransformations([a, b, c]));
t.deepEqual([a, b, c], sortTransformations([b, a, c]));
t.deepEqual([a, b, c], sortTransformations([c, a, b]));
});
(0, ava_1.default)('sort complex', t => {
const tf = (kind, start, length) => ({
kind,
start,
length,
text: '',
});
const a = tf('a', 0, 1); // x
const b = tf('b', 4, 1); // x
const c = tf('c', 6, 1); // x
const d = tf('d', 3, 5); // xxxxx
const e = tf('e', 9, 1); // x
const f = tf('f', 2, 9); // xxxxxxxxx
// 0123456789A
t.deepEqual([a, b, c, d, e, f], sortTransformations([a, b, c, d, e, f]));
t.deepEqual([a, b, c, d, e, f], sortTransformations([b, f, a, c, e, d]));
t.deepEqual([a, b, c, d, e, f], sortTransformations([a, f, b, d, c, e]));
t.deepEqual([a, b, c, d, e, f], sortTransformations([e, b, a, d, f, c]));
});
//# sourceMappingURL=compare.test.js.map