60 lines
1.9 KiB
TypeScript
60 lines
1.9 KiB
TypeScript
/// <reference path="../../definitions/jasmine.d.ts"/>
|
|
/// <reference path="../Serializable.ts"/>
|
|
|
|
module SpaceTac.Game.Specs {
|
|
"use strict";
|
|
|
|
export class SerializableTestObj2 extends Serializable {
|
|
a: string;
|
|
|
|
constructor(a: string = "test") {
|
|
super();
|
|
this.a = a;
|
|
}
|
|
|
|
prepend(prefix: string): string {
|
|
return prefix + this.a;
|
|
}
|
|
}
|
|
|
|
export class SerializableTestObj1 extends Serializable {
|
|
a: number;
|
|
|
|
b: SerializableTestObj2;
|
|
|
|
constructor(a: number = 5, b: SerializableTestObj2 = null) {
|
|
super();
|
|
this.a = a;
|
|
this.b = b;
|
|
}
|
|
}
|
|
|
|
describe("Serializer", () => {
|
|
it("collects serializable classes", () => {
|
|
var serializer = new Serializer();
|
|
var classes = serializer.collectSerializableClasses();
|
|
|
|
expect(classes["SpaceTac.Game.Specs.SerializableTestObj1"]).toBe(SerializableTestObj1);
|
|
expect(classes["SpaceTac.Game.Specs.SerializableTestObj2"]).toBe(SerializableTestObj2);
|
|
expect(classes["SpaceTac.Game.Range"]).toBe(Range);
|
|
expect(classes["SpaceTac.Game.Equipments.GatlingGun"]).toBe(Equipments.GatlingGun);
|
|
});
|
|
|
|
it("gets an object's full path in namespace", () => {
|
|
var serializer = new Serializer();
|
|
|
|
expect(serializer.getClassPath(new SerializableTestObj1())).toBe("SpaceTac.Game.Specs.SerializableTestObj1");
|
|
});
|
|
|
|
it("serializes and deserializes simple typescript objects", () => {
|
|
var serializer = new Serializer();
|
|
var obj = new SerializableTestObj2("a string");
|
|
var dumped = serializer.serialize(obj);
|
|
var loaded = serializer.unserialize(dumped);
|
|
|
|
expect(loaded).toEqual(obj);
|
|
expect((<SerializableTestObj2>loaded).prepend("this is ")).toEqual("this is a string");
|
|
});
|
|
});
|
|
}
|