import { _testTextMessage, roundtrip } from "../util"; import { TextMessage } from "../model"; import { util } from "near-runtime-ts"; import { Box } from "../generic"; describe("Round Trip", () => { it("should return the same TextMessage", () => { const message = _testTextMessage(); //@ts-ignore const messageFromStorage = util.parseFromBytes(message.serialize()); expect(messageFromStorage.sender).toStrictEqual("mysteriousStranger", "Incorrect data value (sender) for retrieved object"); expect(messageFromStorage.text).toStrictEqual("Hello world", "Incorrect data value (text) for retrieved object"); expect(messageFromStorage.number).toBe(415, "Incorrect data value (number) for retrieved object"); }); it("should handle empty Message", () => { const message = new TextMessage(); //@ts-ignore const messageFromStorage = util.parseFromBytes(message.serialize()); expect(messageFromStorage.sender).toStrictEqual(message.sender, "Incorrect data value (sender) for retrieved object"); expect(messageFromStorage.text).toStrictEqual(message.text, "Incorrect data value (text) for retrieved object"); expect(messageFromStorage.number).toBe(message.number, "Incorrect data value (number) for retrieved object"); }); it("should handle generics", () => { const u32 = new Box(); u32.t = 42; //@ts-ignore const u32_2 = util.parseFromBytes>(u32.serialize()); expect(u32.t).toBe(u32_2.t); }); it("should handle non-empty arrays", () => { const arr: Array = [42, 84]; expect(roundtrip(arr)).toStrictEqual(arr); }); it("should handle empty arrays", () => { const arr: Array = []; expect(roundtrip(arr)).toStrictEqual(arr); }); it("should handle integers", () => { expect(roundtrip(42)).toBe(42); expect(roundtrip(42)).toBe(42); }); it("should handle strings", () => { expect(roundtrip("hello world!")).toBe("hello world!"); }); it("sholud handle null", () => { expect(roundtrip(null)).toBeNull(); }) }) class Generic { constructor(public value: T){} } class Foo{} export const Foo_ID = idof(); export const Generic_i32_ID = idof>(); export const Generic_Foo_ID = idof>(); function foo(): string { return nameof(); } function makeArray(): T { let t = instantiate(); if (isArray()){ //@ts-ignore t.push(42); } return t; } describe("Instantiated array", ()=> { it("starts with a length of zero", () => { let arr = instantiate>(); expect(arr.length).toBe(0); }) it("can have an item added to it", () => { let arr = makeArray(); expect(arr[0]).toBe(42) }) }) function isBox(): bool { return nameof().startsWith("Box") } describe("Generic classes",() => { it("can use instanceof", () => { let genericFoo = new Generic(new Foo()); //@ts-ignore expect(genericFoo instanceof Generic).toBe(true); }); });