Add bytes formatting

This commit is contained in:
Simon Warta 2022-07-13 17:42:10 +02:00
parent 67f41d7611
commit fc6a954717
3 changed files with 39 additions and 1 deletions

View File

@ -0,0 +1,10 @@
[
[[], ""],
[[0], "AA=="],
[[0,0], "AAA="],
[[0,0,0], "AAAA"],
[[0,0,0,0], "AAAAAA=="],
[[0,0,0,0,0], "AAAAAAA="],
[[255,255,255], "////"],
[[1,2,3], "AQID"]
]

View File

@ -1,13 +1,24 @@
import { toAscii } from "@cosmjs/encoding";
import { Coin } from "cosmjs-types/cosmos/base/v1beta1/coin"; import { Coin } from "cosmjs-types/cosmos/base/v1beta1/coin";
import bytesData from "../testdata/bytes.json";
import coinData from "../testdata/coin.json"; import coinData from "../testdata/coin.json";
import coinsData from "../testdata/coins.json"; import coinsData from "../testdata/coins.json";
import decimals from "../testdata/decimals.json"; import decimals from "../testdata/decimals.json";
import integers from "../testdata/integers.json"; import integers from "../testdata/integers.json";
import { DisplayUnit, formatCoin, formatCoins, formatDecimal, formatInteger } from "./valuerenderers"; import {
DisplayUnit,
formatBytes,
formatCoin,
formatCoins,
formatDecimal,
formatInteger,
} from "./valuerenderers";
type TestDataCoin = Array<[Coin, DisplayUnit, string]>; type TestDataCoin = Array<[Coin, DisplayUnit, string]>;
type TestDataCoins = Array<[Coin[], Record<string, DisplayUnit>, string]>; type TestDataCoins = Array<[Coin[], Record<string, DisplayUnit>, string]>;
/** First argument is an array of bytes (0-255), second argument is the expected string */
type TestDataBytes = Array<[number[], string]>;
describe("valuerenderers", () => { describe("valuerenderers", () => {
describe("formatInteger", () => { describe("formatInteger", () => {
@ -67,4 +78,16 @@ describe("valuerenderers", () => {
} }
}); });
}); });
describe("formatBytes", () => {
it("works", () => {
expect(formatBytes(toAscii("foo"))).toEqual("Zm9v");
for (const [data, expected] of bytesData as TestDataBytes) {
expect(formatBytes(Uint8Array.from(data)))
.withContext(`Input '${JSON.stringify(data)}'`)
.toEqual(expected);
}
});
});
}); });

View File

@ -1,3 +1,4 @@
import { toBase64 } from "@cosmjs/encoding";
import { Decimal } from "@cosmjs/math"; import { Decimal } from "@cosmjs/math";
import { DenomUnit } from "cosmjs-types/cosmos/bank/v1beta1/bank"; import { DenomUnit } from "cosmjs-types/cosmos/bank/v1beta1/bank";
import { Coin } from "cosmjs-types/cosmos/base/v1beta1/coin"; import { Coin } from "cosmjs-types/cosmos/base/v1beta1/coin";
@ -35,3 +36,7 @@ export function formatCoins(input: Coin[], units: Record<string, DisplayUnit>):
pairs.sort((a, b) => compareAscii(a[1], b[1])); pairs.sort((a, b) => compareAscii(a[1], b[1]));
return pairs.map((pair) => pair.join(" ")).join(", "); return pairs.map((pair) => pair.join(" ")).join(", ");
} }
export function formatBytes(data: Uint8Array): string {
return toBase64(data);
}