UNPKG

reliable-zeromq

Version:

A collection of reliable zeromq messaging constructs

179 lines (160 loc) 6.18 kB
/* tslint:disable: no-string-literal */ import anyTest, { ExecutionContext } from "ava"; import type { TestInterface } from "ava"; import JSONBigInt from "../../../Src/Utils/JSONBigInt"; type TTestContext = { DummyData: TDummyData[]; DummyString: string; }; const test: TestInterface<TTestContext> = anyTest as TestInterface<TTestContext> ; type TDummyObject = { a: bigint; b: string; c: bigint[]; }; type TDummyData = { service_id: bigint; service_name: string; uptime: bigint; donations: string; ip_address: string; currency: string; test_array: TDummyObject[]; }; test.before((t: ExecutionContext<TTestContext>): void => { t.context.DummyData = [ { service_id: 1n, service_name: "Green, Gottlieb and Huel", uptime: 99n, donations: "1GvqDK1Sjp6eZmVUVq7fxDxp8CghmPG9rD", ip_address: "4.72.61.51", currency: "Euro", test_array: [ { a: 743671n, b: "() => {}", c: [23194673219n, 50n, 123n], }, { a: 1234512487n, b: "myString()", c: [23194673219n], }, ], }, { service_id: 2n, service_name: "Russel-Fritsch", uptime: 8n, donations: "1PMtLuNNM2k3byMG6ZBJnbGo1eLWsVHq1c", ip_address: "122.207.215.79", currency: "Euro", test_array: [ { a: 1234512487n, b: "myString()", c: [23194673219n], }, ], }, { service_id: 3n, service_name: "Goodwin LLC", uptime: -49n, donations: "1G4f2cb47vjSwzmAStQqrZQRbfvZqzpvoU", ip_address: "171.166.74.208", currency: "Rupee", test_array: [ { a: 743671n, b: "() => {}", c: [23194673219n], }, { a: 1234512487n, b: "123451asd2487n", c: [23194673219n], }, { a: 1234512487n, b: "zoo_cage()", c: [23194673219n], }, ], }, { service_id: 4n, service_name: "Deckow LLC", uptime: 43393n, donations: "17iCaQAmDVkospeAoDxBXK3hE6HyRwbHXw", ip_address: "251.236.238.241", currency: "Zloty", test_array: [ { a: 1234512487n, b: "zoo_cage()", c: [23194673219n], }, ], }, ]; t.context.DummyString = "[{\"service_id\":\"1n\",\"service_name\":\"Green, Gottlieb and Huel\",\"uptime\":\"99n\",\"donations\":\"1GvqDK1Sjp6eZmVUVq7fxDxp8CghmPG9rD\",\"ip_address\":\"4.72.61.51\",\"currency\":\"Euro\",\"test_array\":[{\"a\":\"743671n\",\"b\":\"() => {}\",\"c\":[\"23194673219n\",\"50n\",\"123n\"]},{\"a\":\"1234512487n\",\"b\":\"myString()\",\"c\":[\"23194673219n\"]}]},{\"service_id\":\"2n\",\"service_name\":\"Russel-Fritsch\",\"uptime\":\"8n\",\"donations\":\"1PMtLuNNM2k3byMG6ZBJnbGo1eLWsVHq1c\",\"ip_address\":\"122.207.215.79\",\"currency\":\"Euro\",\"test_array\":[{\"a\":\"1234512487n\",\"b\":\"myString()\",\"c\":[\"23194673219n\"]}]},{\"service_id\":\"3n\",\"service_name\":\"Goodwin LLC\",\"uptime\":\"-49n\",\"donations\":\"1G4f2cb47vjSwzmAStQqrZQRbfvZqzpvoU\",\"ip_address\":\"171.166.74.208\",\"currency\":\"Rupee\",\"test_array\":[{\"a\":\"743671n\",\"b\":\"() => {}\",\"c\":[\"23194673219n\"]},{\"a\":\"1234512487n\",\"b\":\"123451asd2487n\",\"c\":[\"23194673219n\"]},{\"a\":\"1234512487n\",\"b\":\"zoo_cage()\",\"c\":[\"23194673219n\"]}]},{\"service_id\":\"4n\",\"service_name\":\"Deckow LLC\",\"uptime\":\"43393n\",\"donations\":\"17iCaQAmDVkospeAoDxBXK3hE6HyRwbHXw\",\"ip_address\":\"251.236.238.241\",\"currency\":\"Zloty\",\"test_array\":[{\"a\":\"1234512487n\",\"b\":\"zoo_cage()\",\"c\":[\"23194673219n\"]}]}]"; }); test("Stringify", (t: ExecutionContext<TTestContext>): void => { const lObjectWithBigInt: TDummyData[] = t.context.DummyData; const lTargetObject: string = t.context.DummyString; const lStringifiedObject: string = JSONBigInt.Stringify(lObjectWithBigInt); t.is(lStringifiedObject, lTargetObject); }); test("Parse", (t: ExecutionContext<TTestContext>): void => { t.is(JSONBigInt.Stringify(5n), "\"5n\""); t.is(JSONBigInt.Parse("\"5n\""), 5n); t.is(JSONBigInt.Stringify(-21n), "\"-21n\""); t.is(JSONBigInt.Parse("\"-21n\""), -21n); t.is(JSONBigInt.Parse("\"-21an\""), "-21an"); t.is(JSONBigInt.Parse("\"2137646512-634n\""), "2137646512-634n"); t.is(JSONBigInt.Parse("\"76854678n%\""), "76854678n%"); t.is(JSONBigInt.Parse("\"768[]54678n\""), "768[]54678n"); const lStartingString: string = t.context.DummyString; const lTargetObject: TDummyData[] = t.context.DummyData; const lParsedObject: TDummyData[] = JSONBigInt.Parse(lStartingString); t.deepEqual(lParsedObject, lTargetObject); const lStartingStringWithNegative: string = `{ "data": "-1n", "another_data":{"positive":"1n", "negative":"-1n"}}`; const lExpected: {data: bigint; another_data: { positive: bigint; negative: bigint }} = { data: -1n, another_data: { positive: 1n, negative: -1n, }, }; t.deepEqual(JSONBigInt.Parse(lStartingStringWithNegative), lExpected); }); test("Stringify & Parse", (t: ExecutionContext<TTestContext>): void => { const lTargetObject: TDummyData[] = t.context.DummyData; const lStringified: string = JSONBigInt.Stringify(t.context.DummyData); const lParsed: TDummyData[] = JSONBigInt.Parse(lStringified); t.deepEqual(lParsed, lTargetObject); t.deepEqual(lStringified, t.context.DummyString); function StringifyThenParse(aInput: any): any { return JSONBigInt.Parse(JSONBigInt.Stringify(aInput)); } t.is(StringifyThenParse(undefined), undefined); t.is(StringifyThenParse(null), null); t.is(StringifyThenParse(void(0)), void(0)); t.deepEqual(StringifyThenParse({}), {}); t.is(StringifyThenParse(""), ""); t.is(StringifyThenParse(0n), 0n); t.is(StringifyThenParse(-1n), -1n); });