mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-20 12:15:51 +00:00
* feat(tickets): add TicketCount definition * feat(tickets): add TicketSequence definition * fix(tests): unit tests
98 lines
2.6 KiB
JavaScript
98 lines
2.6 KiB
JavaScript
const { encode, decode } = require("../dist");
|
|
|
|
// Notice: no Amount or Fee
|
|
const tx_json = {
|
|
Account: "r9LqNeG6qHxjeUocjvVki2XR35weJ9mZgQ",
|
|
// Amount: '1000',
|
|
Destination: "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
|
|
// Fee: '10',
|
|
|
|
// JavaScript converts operands to 32-bit signed ints after doing bitwise
|
|
// operations. We need to convert it back to an unsigned int with >>> 0.
|
|
Flags: (1 << 31) >>> 0, // tfFullyCanonicalSig
|
|
|
|
Sequence: 1,
|
|
TransactionType: "Payment",
|
|
// TxnSignature,
|
|
// Signature,
|
|
// SigningPubKey
|
|
};
|
|
|
|
describe("encoding and decoding tx_json", function () {
|
|
test("can encode tx_json without Amount or Fee", function () {
|
|
const encoded = encode(tx_json);
|
|
const decoded = decode(encoded);
|
|
expect(tx_json).toEqual(decoded);
|
|
});
|
|
test("can encode tx_json with Amount and Fee", function () {
|
|
const my_tx = Object.assign({}, tx_json, {
|
|
Amount: "1000",
|
|
Fee: "10",
|
|
});
|
|
const encoded = encode(my_tx);
|
|
const decoded = decode(encoded);
|
|
expect(my_tx).toEqual(decoded);
|
|
});
|
|
test("can encode tx_json with TicketCount", function () {
|
|
const my_tx = Object.assign({}, tx_json, {
|
|
TicketCount: 2,
|
|
});
|
|
const encoded = encode(my_tx);
|
|
const decoded = decode(encoded);
|
|
expect(my_tx).toEqual(decoded);
|
|
});
|
|
test("can encode tx_json with TicketSequence", function () {
|
|
const my_tx = Object.assign({}, tx_json, {
|
|
Sequence: 0,
|
|
TicketSequence: 2,
|
|
});
|
|
const encoded = encode(my_tx);
|
|
const decoded = decode(encoded);
|
|
expect(my_tx).toEqual(decoded);
|
|
});
|
|
test("throws when Amount is invalid", function () {
|
|
const my_tx = Object.assign({}, tx_json, {
|
|
Amount: "1000.001",
|
|
Fee: "10",
|
|
});
|
|
expect(() => {
|
|
encode(my_tx);
|
|
}).toThrow();
|
|
});
|
|
test("throws when Fee is invalid", function () {
|
|
const my_tx = Object.assign({}, tx_json, {
|
|
Amount: "1000",
|
|
Fee: "10.123",
|
|
});
|
|
expect(() => {
|
|
encode(my_tx);
|
|
}).toThrow();
|
|
});
|
|
test("throws when Amount and Fee are invalid", function () {
|
|
const my_tx = Object.assign({}, tx_json, {
|
|
Amount: "1000.789",
|
|
Fee: "10.123",
|
|
});
|
|
expect(() => {
|
|
encode(my_tx);
|
|
}).toThrow();
|
|
});
|
|
test("throws when Amount is a number instead of a string-encoded integer", function () {
|
|
const my_tx = Object.assign({}, tx_json, {
|
|
Amount: 1000.789,
|
|
});
|
|
expect(() => {
|
|
encode(my_tx);
|
|
}).toThrow();
|
|
});
|
|
|
|
test("throws when Fee is a number instead of a string-encoded integer", function () {
|
|
const my_tx = Object.assign({}, tx_json, {
|
|
Amount: 1234.56,
|
|
});
|
|
expect(() => {
|
|
encode(my_tx);
|
|
}).toThrow();
|
|
});
|
|
});
|