From 98a771fcfc5fed61e006135c9c618f7ae20044cc Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 15 Dec 2020 11:29:14 +0000 Subject: [PATCH] tendermint-rpc: Add tests for DateTime --- packages/tendermint-rpc/src/encodings.spec.ts | 48 ++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/packages/tendermint-rpc/src/encodings.spec.ts b/packages/tendermint-rpc/src/encodings.spec.ts index afea0600..e64c517a 100644 --- a/packages/tendermint-rpc/src/encodings.spec.ts +++ b/packages/tendermint-rpc/src/encodings.spec.ts @@ -1,8 +1,54 @@ import { ReadonlyDate } from "readonly-date"; -import { encodeBlockId, encodeBytes, encodeInt, encodeString, encodeTime, encodeVersion } from "./encodings"; +import { + DateTime, + DateTimeString, + encodeBlockId, + encodeBytes, + encodeInt, + encodeString, + encodeTime, + encodeVersion, +} from "./encodings"; +import { ReadonlyDateWithNanoseconds } from "./responses"; describe("encodings", () => { + describe("DateTime", () => { + it("decodes a string", () => { + expect(DateTime.decode("2020-12-15T10:57:26.778Z" as DateTimeString).nanoseconds).toEqual(0); + expect(DateTime.decode("2020-12-15T10:57:26.7789Z" as DateTimeString).nanoseconds).toEqual(900000); + expect(DateTime.decode("2020-12-15T10:57:26.77809Z" as DateTimeString).nanoseconds).toEqual(90000); + expect(DateTime.decode("2020-12-15T10:57:26.778009Z" as DateTimeString).nanoseconds).toEqual(9000); + expect(DateTime.decode("2020-12-15T10:57:26.7780009Z" as DateTimeString).nanoseconds).toEqual(900); + expect(DateTime.decode("2020-12-15T10:57:26.77800009Z" as DateTimeString).nanoseconds).toEqual(90); + expect(DateTime.decode("2020-12-15T10:57:26.778000009Z" as DateTimeString).nanoseconds).toEqual(9); + }); + + it("encodes a string", () => { + const date1 = new ReadonlyDate("2020-12-15T10:57:26.778Z") as ReadonlyDateWithNanoseconds; + (date1 as any).nanoseconds = 0; + expect(DateTime.encode(date1)).toEqual("2020-12-15T10:57:26.778000000Z"); + const date2 = new ReadonlyDate("2020-12-15T10:57:26.778Z") as ReadonlyDateWithNanoseconds; + (date2 as any).nanoseconds = 900000; + expect(DateTime.encode(date2)).toEqual("2020-12-15T10:57:26.778900000Z"); + const date3 = new ReadonlyDate("2020-12-15T10:57:26.778Z") as ReadonlyDateWithNanoseconds; + (date3 as any).nanoseconds = 90000; + expect(DateTime.encode(date3)).toEqual("2020-12-15T10:57:26.778090000Z"); + const date4 = new ReadonlyDate("2020-12-15T10:57:26.778Z") as ReadonlyDateWithNanoseconds; + (date4 as any).nanoseconds = 9000; + expect(DateTime.encode(date4)).toEqual("2020-12-15T10:57:26.778009000Z"); + const date5 = new ReadonlyDate("2020-12-15T10:57:26.778Z") as ReadonlyDateWithNanoseconds; + (date5 as any).nanoseconds = 900; + expect(DateTime.encode(date5)).toEqual("2020-12-15T10:57:26.778000900Z"); + const date6 = new ReadonlyDate("2020-12-15T10:57:26.778Z") as ReadonlyDateWithNanoseconds; + (date6 as any).nanoseconds = 90; + expect(DateTime.encode(date6)).toEqual("2020-12-15T10:57:26.778000090Z"); + const date7 = new ReadonlyDate("2020-12-15T10:57:26.778Z") as ReadonlyDateWithNanoseconds; + (date7 as any).nanoseconds = 9; + expect(DateTime.encode(date7)).toEqual("2020-12-15T10:57:26.778000009Z"); + }); + }); + describe("encodeString", () => { it("works", () => { expect(encodeString("")).toEqual(Uint8Array.from([0]));