mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-20 12:15:51 +00:00
* Polyfill with "buffer" and "assert" for browser environments * Instead of relying on webpack to make this library browser compatible, we now use a buffer library that provides a polyfill when used in the browser
84 lines
2.9 KiB
JavaScript
84 lines
2.9 KiB
JavaScript
const { coreTypes } = require("../dist/types");
|
|
const { Hash160, Hash256, AccountID, Currency } = coreTypes;
|
|
const { Buffer } = require("buffer/");
|
|
|
|
describe("Hash160", function () {
|
|
test("has a static width member", function () {
|
|
expect(Hash160.width).toBe(20);
|
|
});
|
|
test("inherited by subclasses", function () {
|
|
expect(AccountID.width).toBe(20);
|
|
expect(Currency.width).toBe(20);
|
|
});
|
|
test("can be compared against another", function () {
|
|
const h1 = Hash160.from("1000000000000000000000000000000000000000");
|
|
const h2 = Hash160.from("2000000000000000000000000000000000000000");
|
|
const h3 = Hash160.from("0000000000000000000000000000000000000003");
|
|
expect(h1.lt(h2)).toBe(true);
|
|
expect(h3.lt(h2)).toBe(true);
|
|
});
|
|
test("throws when constructed from invalid hash length", () => {
|
|
expect(() =>
|
|
Hash160.from("10000000000000000000000000000000000000")
|
|
).toThrow("Invalid Hash length 19");
|
|
expect(() =>
|
|
Hash160.from("100000000000000000000000000000000000000000")
|
|
).toThrow("Invalid Hash length 21");
|
|
});
|
|
});
|
|
|
|
describe("Hash256", function () {
|
|
test("has a static width member", function () {
|
|
expect(Hash256.width).toBe(32);
|
|
});
|
|
test("has a ZERO_256 member", function () {
|
|
expect(Hash256.ZERO_256.toJSON()).toBe(
|
|
"0000000000000000000000000000000000000000000000000000000000000000"
|
|
);
|
|
});
|
|
test("supports getting the nibblet values at given positions", function () {
|
|
const h = Hash256.from(
|
|
"1359BD0000000000000000000000000000000000000000000000000000000000"
|
|
);
|
|
expect(h.nibblet(0)).toBe(0x1);
|
|
expect(h.nibblet(1)).toBe(0x3);
|
|
expect(h.nibblet(2)).toBe(0x5);
|
|
expect(h.nibblet(3)).toBe(0x9);
|
|
expect(h.nibblet(4)).toBe(0x0b);
|
|
expect(h.nibblet(5)).toBe(0xd);
|
|
});
|
|
});
|
|
|
|
describe("Currency", function () {
|
|
test("Will have a null iso() for dodgy XRP ", function () {
|
|
const bad = Currency.from("0000000000000000000000005852500000000000");
|
|
expect(bad.iso()).toBeUndefined();
|
|
expect(bad.isNative()).toBe(false);
|
|
});
|
|
test("Currency with lowercase letters decode to hex", () => {
|
|
expect(Currency.from("xRp").toJSON()).toBe(
|
|
"0000000000000000000000007852700000000000"
|
|
);
|
|
});
|
|
test("Currency codes with symbols decode to hex", () => {
|
|
expect(Currency.from("x|p").toJSON()).toBe(
|
|
"000000000000000000000000787C700000000000"
|
|
);
|
|
});
|
|
test("Currency codes with uppercase and 0-9 decode to ISO codes", () => {
|
|
expect(Currency.from("X8P").toJSON()).toBe("X8P");
|
|
expect(Currency.from("USD").toJSON()).toBe("USD");
|
|
});
|
|
test("can be constructed from a Buffer", function () {
|
|
const xrp = new Currency(Buffer.alloc(20));
|
|
expect(xrp.iso()).toBe("XRP");
|
|
});
|
|
test("throws on invalid reprs", function () {
|
|
expect(() => Currency.from(Buffer.alloc(19))).toThrow();
|
|
expect(() => Currency.from(1)).toThrow();
|
|
expect(() =>
|
|
Currency.from("00000000000000000000000000000000000000m")
|
|
).toThrow();
|
|
});
|
|
});
|