PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/avalanche/typings/tests/apis/platformvm
Просмотр файла: outputs.test.js
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const bn_js_1 = __importDefault(require("bn.js"));
const bintools_1 = __importDefault(require("../../../src/utils/bintools"));
const outputs_1 = require("../../../src/apis/platformvm/outputs");
const output_1 = require("../../../src/common/output");
const bintools = bintools_1.default.getInstance();
describe("Outputs", () => {
describe("SECPTransferOutput", () => {
const addrs = [
bintools.cb58Decode("B6D4v1VtPYLbiUvYXtW4Px8oE9imC2vGW"),
bintools.cb58Decode("P5wdRuZeaDt28eHMP5S3w9ZdoBfo7wuzF"),
bintools.cb58Decode("6Y3kysjF9jnHnYkdS9yGAuoHyae2eNmeV")
].sort();
const locktime = new bn_js_1.default(54321);
const addrpay = [addrs[0], addrs[1]];
const fallLocktime = locktime.add(new bn_js_1.default(50));
test("SelectOutputClass", () => {
const goodout = new outputs_1.SECPTransferOutput(new bn_js_1.default(2600), addrpay, fallLocktime, 1);
const outpayment = (0, outputs_1.SelectOutputClass)(goodout.getOutputID());
expect(outpayment).toBeInstanceOf(outputs_1.SECPTransferOutput);
expect(() => {
(0, outputs_1.SelectOutputClass)(99);
}).toThrow("Error - SelectOutputClass: unknown outputid");
});
test("comparator", () => {
const outpayment1 = new outputs_1.SECPTransferOutput(new bn_js_1.default(10000), addrs, locktime, 3);
const outpayment2 = new outputs_1.SECPTransferOutput(new bn_js_1.default(10001), addrs, locktime, 3);
const outpayment3 = new outputs_1.SECPTransferOutput(new bn_js_1.default(9999), addrs, locktime, 3);
const cmp = output_1.Output.comparator();
expect(cmp(outpayment1, outpayment1)).toBe(0);
expect(cmp(outpayment2, outpayment2)).toBe(0);
expect(cmp(outpayment3, outpayment3)).toBe(0);
expect(cmp(outpayment1, outpayment2)).toBe(-1);
expect(cmp(outpayment1, outpayment3)).toBe(1);
});
test("SECPTransferOutput", () => {
const out = new outputs_1.SECPTransferOutput(new bn_js_1.default(10000), addrs, locktime, 3);
expect(out.getOutputID()).toBe(7);
expect(JSON.stringify(out.getAddresses().sort())).toStrictEqual(JSON.stringify(addrs.sort()));
expect(out.getThreshold()).toBe(3);
expect(out.getLocktime().toNumber()).toBe(locktime.toNumber());
const r = out.getAddressIdx(addrs[2]);
expect(out.getAddress(r)).toStrictEqual(addrs[2]);
expect(() => {
out.getAddress(400);
}).toThrow();
expect(out.getAmount().toNumber()).toBe(10000);
const b = out.toBuffer();
expect(out.toString()).toBe(bintools.bufferToB58(b));
const s = out.getSpenders(addrs);
expect(JSON.stringify(s.sort())).toBe(JSON.stringify(addrs.sort()));
const m1 = out.meetsThreshold([addrs[0]]);
expect(m1).toBe(false);
const m2 = out.meetsThreshold(addrs, new bn_js_1.default(100));
expect(m2).toBe(false);
const m3 = out.meetsThreshold(addrs);
expect(m3).toBe(true);
const m4 = out.meetsThreshold(addrs, locktime.add(new bn_js_1.default(100)));
expect(m4).toBe(true);
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0cy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdHMvYXBpcy9wbGF0Zm9ybXZtL291dHB1dHMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGtEQUFzQjtBQUV0QiwyRUFBa0Q7QUFDbEQsa0VBRzZDO0FBQzdDLHVEQUFtRDtBQUVuRCxNQUFNLFFBQVEsR0FBYSxrQkFBUSxDQUFDLFdBQVcsRUFBRSxDQUFBO0FBRWpELFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBUyxFQUFFO0lBQzdCLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxHQUFTLEVBQUU7UUFDeEMsTUFBTSxLQUFLLEdBQWE7WUFDdEIsUUFBUSxDQUFDLFVBQVUsQ0FBQyxtQ0FBbUMsQ0FBQztZQUN4RCxRQUFRLENBQUMsVUFBVSxDQUFDLG1DQUFtQyxDQUFDO1lBQ3hELFFBQVEsQ0FBQyxVQUFVLENBQUMsbUNBQW1DLENBQUM7U0FDekQsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUVSLE1BQU0sUUFBUSxHQUFPLElBQUksZUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3BDLE1BQU0sWUFBWSxHQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxlQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUVqRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsR0FBUyxFQUFFO1lBQ25DLE1BQU0sT0FBTyxHQUF1QixJQUFJLDRCQUFrQixDQUN4RCxJQUFJLGVBQUUsQ0FBQyxJQUFJLENBQUMsRUFDWixPQUFPLEVBQ1AsWUFBWSxFQUNaLENBQUMsQ0FDRixDQUFBO1lBQ0QsTUFBTSxVQUFVLEdBQVcsSUFBQSwyQkFBaUIsRUFBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtZQUNu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LGVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDeEUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN2QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQk4gZnJvbSBcImJuLmpzXCJcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gXCJidWZmZXIvXCJcbmltcG9ydCBCaW5Ub29scyBmcm9tIFwiLi4vLi4vLi4vc3JjL3V0aWxzL2JpbnRvb2xzXCJcbmltcG9ydCB7XG4gIFNFQ1BUcmFuc2Zlck91dHB1dCxcbiAgU2VsZWN0T3V0cHV0Q2xhc3Ncbn0gZnJvbSBcIi4uLy4uLy4uL3NyYy9hcGlzL3BsYXRmb3Jtdm0vb3V0cHV0c1wiXG5pbXBvcnQgeyBPdXRwdXQgfSBmcm9tIFwiLi4vLi4vLi4vc3JjL2NvbW1vbi9vdXRwdXRcIlxuXG5jb25zdCBiaW50b29sczogQmluVG9vbHMgPSBCaW5Ub29scy5nZXRJbnN0YW5jZSgpXG5cbmRlc2NyaWJlKFwiT3V0cHV0c1wiLCAoKTogdm9pZCA9PiB7XG4gIGRlc2NyaWJlKFwiU0VDUFRyYW5zZmVyT3V0cHV0XCIsICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCBhZGRyczogQnVmZmVyW10gPSBbXG4gICAgICBiaW50b29scy5jYjU4RGVjb2RlKFwiQjZENHYxVnRQWUxiaVV2WVh0VzRQeDhvRTlpbUMydkdXXCIpLFxuICAgICAgYmludG9vbHMuY2I1OERlY29kZShcIlA1d2RSdVplYUR0MjhlSE1QNVMzdzlaZG9CZm83d3V6RlwiKSxcbiAgICAgIGJpbnRvb2xzLmNiNThEZWNvZGUoXCI2WTNreXNqRjlqbkhuWWtkUzl5R0F1b0h5YWUyZU5tZVZcIilcbiAgICBdLnNvcnQoKVxuXG4gICAgY29uc3QgbG9ja3RpbWU6IEJOID0gbmV3IEJOKDU0MzIxKVxuICAgIGNvbnN0IGFkZHJwYXkgPSBbYWRkcnNbMF0sIGFkZHJzWzFdXVxuICAgIGNvbnN0IGZhbGxMb2NrdGltZTogQk4gPSBsb2NrdGltZS5hZGQobmV3IEJOKDUwKSlcblxuICAgIHRlc3QoXCJTZWxlY3RPdXRwdXRDbGFzc1wiLCAoKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCBnb29kb3V0OiBTRUNQVHJhbnNmZXJPdXRwdXQgPSBuZXcgU0VDUFRyYW5zZmVyT3V0cHV0KFxuICAgICAgICBuZXcgQk4oMjYwMCksXG4gICAgICAgIGFkZHJwYXksXG4gICAgICAgIGZhbGxMb2NrdGltZSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgICAgY29uc3Qgb3V0cGF5bWVudDogT3V0cHV0ID0gU2VsZWN0T3V0cHV0Q2xhc3MoZ29vZG91dC5nZXRPdXRwdXRJRCgpKVxuICAgICAgZXhwZWN0KG91dHBheW1lbnQpLnRvQmVJbnN0YW5jZU9mKFNFQ1BUcmFuc2Zlck91dHB1dClcbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIFNlbGVjdE91dHB1dENsYXNzKDk5KVxuICAgICAgfSkudG9UaHJvdyhcIkVycm9yIC0gU2VsZWN0T3V0cHV0Q2xhc3M6IHVua25vd24gb3V0cHV0aWRcIilcbiAgICB9KVxuXG4gICAgdGVzdChcImNvbXBhcmF0b3JcIiwgKCk6IHZvaWQgPT4ge1xuICAgICAgY29uc3Qgb3V0cGF5bWVudDE6IE91dHB1dCA9IG5ldyBTRUNQVHJhbnNmZXJPdXRwdXQoXG4gICAgICAgIG5ldyBCTigxMDAwMCksXG4gICAgICAgIGFkZHJzLFxuICAgICAgICBsb2NrdGltZSxcbiAgICAgICAgM1xuICAgICAgKVxuICAgICAgY29uc3Qgb3V0cGF5bWVudDI6IE91dHB1dCA9IG5ldyBTRUNQVHJhbnNmZXJPdXRwdXQoXG4gICAgICAgIG5ldyBCTigxMDAwMSksXG4gICAgICAgIGFkZHJzLFxuICAgICAgICBsb2NrdGltZSxcbiAgICAgICAgM1xuICAgICAgKVxuICAgICAgY29uc3Qgb3V0cGF5bWVudDM6IE91dHB1dCA9IG5ldyBTRUNQVHJhbnNmZXJPdXRwdXQoXG4gICAgICAgIG5ldyBCTig5OTk5KSxcbiAgICAgICAgYWRkcnMsXG4gICAgICAgIGxvY2t0aW1lLFxuICAgICAgICAzXG4gICAgICApXG4gICAgICBjb25zdCBjbXAgPSBPdXRwdXQuY29tcGFyYXRvcigpXG4gICAgICBleHBlY3QoY21wKG91dHBheW1lbnQxLCBvdXRwYXltZW50MSkpLnRvQmUoMClcbiAgICAgIGV4cGVjdChjbXAob3V0cGF5bWVudDIsIG91dHBheW1lbnQyKSkudG9CZSgwKVxuICAgICAgZXhwZWN0KGNtcChvdXRwYXltZW50Mywgb3V0cGF5bWVudDMpKS50b0JlKDApXG4gICAgICBleHBlY3QoY21wKG91dHBheW1lbnQxLCBvdXRwYXltZW50MikpLnRvQmUoLTEpXG4gICAgICBleHBlY3QoY21wKG91dHBheW1lbnQxLCBvdXRwYXltZW50MykpLnRvQmUoMSlcbiAgICB9KVxuXG4gICAgdGVzdChcIlNFQ1BUcmFuc2Zlck91dHB1dFwiLCAoKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCBvdXQ6IFNFQ1BUcmFuc2Zlck91dHB1dCA9IG5ldyBTRUNQVHJhbnNmZXJPdXRwdXQoXG4gICAgICAgIG5ldyBCTigxMDAwMCksXG4gICAgICAgIGFkZHJzLFxuICAgICAgICBsb2NrdGltZSxcbiAgICAgICAgM1xuICAgICAgKVxuICAgICAgZXhwZWN0KG91dC5nZXRPdXRwdXRJRCgpKS50b0JlKDcpXG4gICAgICBleHBlY3QoSlNPTi5zdHJpbmdpZnkob3V0LmdldEFkZHJlc3NlcygpLnNvcnQoKSkpLnRvU3RyaWN0RXF1YWwoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGFkZHJzLnNvcnQoKSlcbiAgICAgIClcblxuICAgICAgZXhwZWN0KG91dC5nZXRUaHJlc2hvbGQoKSkudG9CZSgzKVxuICAgICAgZXhwZWN0KG91dC5nZXRMb2NrdGltZSgpLnRvTnVtYmVyKCkpLnRvQmUobG9ja3RpbWUudG9OdW1iZXIoKSlcblxuICAgICAgY29uc3QgcjogbnVtYmVyID0gb3V0LmdldEFkZHJlc3NJZHgoYWRkcnNbMl0pXG4gICAgICBleHBlY3Qob3V0LmdldEFkZHJlc3MocikpLnRvU3RyaWN0RXF1YWwoYWRkcnNbMl0pXG4gICAgICBleHBlY3QoKCk6IHZvaWQgPT4ge1xuICAgICAgICBvdXQuZ2V0QWRkcmVzcyg0MDApXG4gICAgICB9KS50b1Rocm93KClcblxuICAgICAgZXhwZWN0KG91dC5nZXRBbW91bnQoKS50b051bWJlcigpKS50b0JlKDEwMDAwKVxuXG4gICAgICBjb25zdCBiOiBCdWZmZXIgPSBvdXQudG9CdWZmZXIoKVxuICAgICAgZXhwZWN0KG91dC50b1N0cmluZygpKS50b0JlKGJpbnRvb2xzLmJ1ZmZlclRvQjU4KGIpKVxuXG4gICAgICBjb25zdCBzOiBCdWZmZXJbXSA9IG91dC5nZXRTcGVuZGVycyhhZGRycylcbiAgICAgIGV4cGVjdChKU09OLnN0cmluZ2lmeShzLnNvcnQoKSkpLnRvQmUoSlNPTi5zdHJpbmdpZnkoYWRkcnMuc29ydCgpKSlcblxuICAgICAgY29uc3QgbTE6IGJvb2xlYW4gPSBvdXQubWVldHNUaHJlc2hvbGQoW2FkZHJzWzBdXSlcbiAgICAgIGV4cGVjdChtMSkudG9CZShmYWxzZSlcbiAgICAgIGNvbnN0IG0yOiBib29sZWFuID0gb3V0Lm1lZXRzVGhyZXNob2xkKGFkZHJzLCBuZXcgQk4oMTAwKSlcbiAgICAgIGV4cGVjdChtMikudG9CZShmYWxzZSlcbiAgICAgIGNvbnN0IG0zOiBib29sZWFuID0gb3V0Lm1lZXRzVGhyZXNob2xkKGFkZHJzKVxuICAgICAgZXhwZWN0KG0zKS50b0JlKHRydWUpXG4gICAgICBjb25zdCBtNDogYm9vbGVhbiA9IG91dC5tZWV0c1RocmVzaG9sZChhZGRycywgbG9ja3RpbWUuYWRkKG5ldyBCTigxMDApKSlcbiAgICAgIGV4cGVjdChtNCkudG9CZSh0cnVlKVxuICAgIH0pXG4gIH0pXG59KVxuIl19Выполнить команду
Для локальной разработки. Не используйте в интернете!