Merge pull request #550 from cosmos/fix-zero-accountNumber

Fix omitDefaults/omitDefault for Long
This commit is contained in:
Simon Warta 2020-11-26 11:05:22 +01:00 committed by GitHub
commit 9580d2f895
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 0 deletions

View File

@ -1,4 +1,5 @@
import { fromHex } from "@cosmjs/encoding";
import Long from "long";
import { parse } from "protobufjs";
import { omitDefault, omitDefaults } from "./adr27";
@ -25,6 +26,16 @@ describe("adr27", () => {
expect(omitDefault(0.0)).toEqual(null);
});
it("works for Long", () => {
// unsigned
expect(omitDefault(Long.fromNumber(123, true))).toEqual(Long.fromNumber(123, true));
expect(omitDefault(Long.fromNumber(0, true))).toEqual(null);
// signed
expect(omitDefault(Long.fromNumber(123, false))).toEqual(Long.fromNumber(123, false));
expect(omitDefault(Long.fromNumber(0, false))).toEqual(null);
});
it("works for booleans", () => {
expect(omitDefault(true)).toEqual(true);
expect(omitDefault(false)).toEqual(null);
@ -73,6 +84,12 @@ describe("adr27", () => {
expect(omitDefaults(1.234)).toEqual(1.234);
expect(omitDefaults(0.0)).toEqual(null);
expect(omitDefaults(Long.fromNumber(123, true))).toEqual(Long.fromNumber(123, true));
expect(omitDefaults(Long.fromNumber(0, true))).toEqual(null);
expect(omitDefaults(Long.fromNumber(123, false))).toEqual(Long.fromNumber(123, false));
expect(omitDefaults(Long.fromNumber(0, false))).toEqual(null);
expect(omitDefaults(true)).toEqual(true);
expect(omitDefaults(false)).toEqual(null);
});

View File

@ -1,4 +1,5 @@
import { isNonNullObject, isUint8Array } from "@cosmjs/utils";
import Long from "long";
/**
* Converts default values to null in order to tell protobuf.js
@ -13,6 +14,10 @@ export function omitDefault<T>(input: T): T | null {
return input || null;
}
if (Long.isLong(input)) {
return !input.isZero() ? input : null;
}
if (Array.isArray(input) || isUint8Array(input)) {
return input.length ? input : null;
}
@ -33,6 +38,7 @@ export function omitDefaults(input: any): any {
typeof input === "number" ||
typeof input === "boolean" ||
typeof input === "string" ||
Long.isLong(input) ||
Array.isArray(input) ||
isUint8Array(input)
) {