UNPKG

isaacscript-common

Version:

Helper functions and features for IsaacScript mods.

313 lines (312 loc) • 10.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.runMergeTests = runMergeTests; const DefaultMap_1 = require("../classes/DefaultMap"); const SerializationType_1 = require("../enums/SerializationType"); const deepCopy_1 = require("./deepCopy"); const log_1 = require("./log"); const merge_1 = require("./merge"); const rng_1 = require("./rng"); const serialization_1 = require("./serialization"); const vector_1 = require("./vector"); /** * Run the suite of tests that prove that the "merge" function works properly. * * This function is only useful if you are troubleshooting the save data manager. */ function runMergeTests() { oldTableHasUpdatedValue(); newTableHasSameValue(); oldTableHasUpdatedValueFromNull(); oldTableHasSerializedIsaacAPIClass(); oldTableHasFilledChildTable(); oldTableHasFilledMap(); oldTableHasFilledDefaultMap(); oldTableHasVector(); oldTableHasVectorSerialized(); oldTableHasRNG(); oldTableHasRNGSerialized(); const successText = "All merge tests passed!"; (0, log_1.logAndPrint)(successText); } function oldTableHasUpdatedValue() { const key = "foo"; const oldValue = "bar"; const newValue = "baz"; const oldTable = { foo: oldValue, }; const newTable = { foo: newValue, }; (0, merge_1.merge)(oldTable, newTable, "oldTableHasUpdatedValue"); const oldTableValue = oldTable.get(key); if (oldTableValue !== newValue) { error(`The old table does not have a value of: ${newValue}`); } } function newTableHasSameValue() { const key = "foo"; const oldValue = "bar"; const newValue = "baz"; const oldTable = { foo: oldValue, }; const newTable = { foo: newValue, }; (0, merge_1.merge)(oldTable, newTable, "newTableHasSameValue"); const newTableValue = newTable.get(key); if (newTableValue !== newValue) { error(`The new table does not have a value of: ${newValue}`); } } function oldTableHasUpdatedValueFromNull() { const key = "foo"; const newValue = "baz"; const oldTable = { foo: null, }; const newTable = { foo: newValue, }; (0, merge_1.merge)(oldTable, newTable, "oldTableHasUpdatedValueFromNull"); const oldTableValue = oldTable.get(key); if (oldTableValue !== newValue) { error(`The old table does not have a value of: ${newValue}`); } } function oldTableHasSerializedIsaacAPIClass() { const x = 50; const y = 60; const vector = Vector(x, y); const vectorSerialized = (0, vector_1.serializeVector)(vector); if (!(0, serialization_1.isSerializedIsaacAPIClass)(vectorSerialized)) { error('The "isSerializedIsaacAPIClass" function says that a serialized vector is not serialized.'); } } function oldTableHasFilledChildTable() { const key = "foo"; const newValue = "baz"; const oldTable = { foo: null, }; const foo = { bar: newValue, }; const newTable = { foo, }; (0, merge_1.merge)(oldTable, newTable, "oldTableHasFilledChildTable"); const oldTableValue = oldTable.get(key); if (oldTableValue === undefined) { error(`The old table's key of "${key}" was not filled.`); } if (oldTableValue.bar !== newValue) { error('The old table\'s key of "bar" was not filled.'); } } function oldTableHasFilledMap() { const fakeV = { run: { myMap: new Map(), }, }; const saveData = { run: { myMap: new Map([ ["foo1", "bar1"], ["foo2", "bar2"], ["foo3", "bar3"], ]), }, }; const serializedSaveData = (0, deepCopy_1.deepCopy)(saveData, SerializationType_1.SerializationType.SERIALIZE); (0, merge_1.merge)(fakeV, serializedSaveData, "oldTableHasFilledMap"); const expectedSize = 3; if (fakeV.run.myMap.size !== expectedSize) { error(`The size of the merged map was equal to ${fakeV.run.myMap.size}, but it should be equal to: ${expectedSize}`); } { const key = "foo1"; const expectedValue = "bar1"; const value = fakeV.run.myMap.get(key); if (value !== expectedValue) { error(`The old table's map key of "${key}" was not equal to "${expectedValue}" and was instead equal to: ${value}`); } } { const key = "foo2"; const expectedValue = "bar2"; const value = fakeV.run.myMap.get(key); if (value !== expectedValue) { error(`The old table's map key of "${key}" was not equal to "${expectedValue}" and was instead equal to: ${value}`); } } { const key = "foo3"; const expectedValue = "bar3"; const value = fakeV.run.myMap.get(key); if (value !== expectedValue) { error(`The old table's map key of "${key}" was not equal to "${expectedValue}" and was instead equal to: ${value}`); } } } function oldTableHasFilledDefaultMap() { const fakeV = { run: { myDefaultMap: new DefaultMap_1.DefaultMap("default"), }, }; const saveData = { run: { myDefaultMap: new DefaultMap_1.DefaultMap("default", [ ["foo1", "bar1"], ["foo2", "bar2"], ["foo3", "bar3"], ]), }, }; const serializedSaveData = (0, deepCopy_1.deepCopy)(saveData, SerializationType_1.SerializationType.SERIALIZE); (0, merge_1.merge)(fakeV, serializedSaveData, "oldTableHasFilledDefaultMap"); const expectedSize = 3; if (fakeV.run.myDefaultMap.size !== expectedSize) { error(`The size of the merged default map was equal to ${fakeV.run.myDefaultMap.size}, but it should be equal to: ${expectedSize}`); } { const key = "foo1"; const expectedValue = "bar1"; const value = fakeV.run.myDefaultMap.get(key); if (value !== expectedValue) { error(`The old table's default map key of "${key}" was not equal to "${expectedValue}" and was instead equal to: ${value}`); } } { const key = "foo2"; const expectedValue = "bar2"; const value = fakeV.run.myDefaultMap.get(key); if (value !== expectedValue) { error(`The old table's default map key of "${key}" was not equal to "${expectedValue}" and was instead equal to: ${value}`); } } { const key = "foo3"; const expectedValue = "bar3"; const value = fakeV.run.myDefaultMap.get(key); if (value !== expectedValue) { error(`The old table's default map key of "${key}" was not equal to "${expectedValue}" and was instead equal to: ${value}`); } } } function oldTableHasVector() { const key = "foo"; const x = 50; const y = 60; const newValue = Vector(x, y); const oldTable = { foo: null, }; const foo = { bar: newValue, }; const newTable = { foo, }; (0, merge_1.merge)(oldTable, newTable, "oldTableHasVector"); const oldTableValue = oldTable.get(key); if (oldTableValue === undefined) { error(`The old table's key of "${key}" was not filled.`); } if (oldTableValue.bar.X !== x) { error(`The old table's value for "x" does not match: ${x}`); } if (oldTableValue.bar.Y !== y) { error(`The old table's value for "y" does not match: ${y}`); } if (!(0, vector_1.isVector)(oldTableValue.bar)) { error("The old table's value is not a Vector object."); } } function oldTableHasVectorSerialized() { const key = "foo"; const x = 50; const y = 60; const newValue = Vector(x, y); const oldTable = { foo: null, }; const foo = { bar: newValue, }; const newTable = { foo, }; const newTableSerialized = (0, deepCopy_1.deepCopy)(newTable, SerializationType_1.SerializationType.SERIALIZE, "oldTableHasVectorSerialized"); (0, merge_1.merge)(oldTable, newTableSerialized, "oldTableHasVectorSerialized"); const oldTableValue = oldTable.get(key); if (oldTableValue === undefined) { error(`The old table's key of "${key}" was not filled.`); } if (oldTableValue.bar.X !== x) { error(`The old table's value for "x" does not match: ${x}`); } if (oldTableValue.bar.Y !== y) { error(`The old table's value for "y" does not match: ${y}`); } if (!(0, vector_1.isVector)(oldTableValue.bar)) { error("The old table's value is not a Vector object (during the serialized test)."); } } function oldTableHasRNG() { const key = "foo"; const seed = 50; const newValue = (0, rng_1.newRNG)(seed); const oldTable = { foo: null, }; const foo = { bar: newValue, }; const newTable = { foo, }; (0, merge_1.merge)(oldTable, newTable, "oldTableHasRNG"); const oldTableValue = oldTable.get(key); if (oldTableValue === undefined) { error(`The old table's key of "${key}" was not filled.`); } if (!(0, rng_1.isRNG)(oldTableValue.bar)) { error("The old table's value is not an RNG object."); } const newSeed = oldTableValue.bar.GetSeed(); if (newSeed !== seed) { error(`The old table's seed not match: ${seed}`); } } function oldTableHasRNGSerialized() { const key = "foo"; const seed = 50; const newValue = (0, rng_1.newRNG)(seed); const oldTable = { foo: null, }; const foo = { bar: newValue, }; const newTable = { foo, }; const newTableSerialized = (0, deepCopy_1.deepCopy)(newTable, SerializationType_1.SerializationType.SERIALIZE, "oldTableHasRNGSerialized"); (0, merge_1.merge)(oldTable, newTableSerialized, "oldTableHasRNGSerialized"); const oldTableValue = oldTable.get(key); if (oldTableValue === undefined) { error(`The old table's key of "${key}" was not filled.`); } if (!(0, rng_1.isRNG)(oldTableValue.bar)) { error("The old table's value is not an RNG object (during the serialized test)."); } const newSeed = oldTableValue.bar.GetSeed(); if (newSeed !== seed) { error(`The old table's seed not match: ${seed}`); } }