mirror of
https://github.com/barsdeveloper/ueblueprint.git
synced 2026-03-13 11:47:30 +08:00
Small refactoring and fixes
This commit is contained in:
52
dist/ueblueprint.js
vendored
52
dist/ueblueprint.js
vendored
@@ -136,6 +136,7 @@ class Configuration {
|
|||||||
doN: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:Do N",
|
doN: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:Do N",
|
||||||
doOnce: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:DoOnce",
|
doOnce: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:DoOnce",
|
||||||
dynamicCast: "/Script/BlueprintGraph.K2Node_DynamicCast",
|
dynamicCast: "/Script/BlueprintGraph.K2Node_DynamicCast",
|
||||||
|
eAttachmentRule: "/Script/Engine.EAttachmentRule",
|
||||||
edGraph: "/Script/Engine.EdGraph",
|
edGraph: "/Script/Engine.EdGraph",
|
||||||
edGraphPinDeprecated: "/Script/Engine.EdGraphPin_Deprecated",
|
edGraphPinDeprecated: "/Script/Engine.EdGraphPin_Deprecated",
|
||||||
eDrawDebugTrace: "/Script/Engine.EDrawDebugTrace",
|
eDrawDebugTrace: "/Script/Engine.EDrawDebugTrace",
|
||||||
@@ -302,6 +303,11 @@ class Configuration {
|
|||||||
static windowCancelButtonText = "Cancel"
|
static windowCancelButtonText = "Cancel"
|
||||||
static windowCloseEventName = "ueb-window-close"
|
static windowCloseEventName = "ueb-window-close"
|
||||||
static CommonEnums = {
|
static CommonEnums = {
|
||||||
|
[this.paths.eAttachmentRule]: [
|
||||||
|
"KeepRelative",
|
||||||
|
"KeepWorld",
|
||||||
|
"SnapToTarget",
|
||||||
|
],
|
||||||
[this.paths.eMaterialSamplerType]: [
|
[this.paths.eMaterialSamplerType]: [
|
||||||
"Color",
|
"Color",
|
||||||
"Grayscale",
|
"Grayscale",
|
||||||
@@ -1946,9 +1952,9 @@ class Utility {
|
|||||||
* @returns {Boolean}
|
* @returns {Boolean}
|
||||||
*/
|
*/
|
||||||
static isSerialized(entity, key) {
|
static isSerialized(entity, key) {
|
||||||
// @ts-expect-error
|
return entity["attributes"]?.[key]?.serialized
|
||||||
const attribute = (entity.attributes ?? entity.constructor?.attributes)?.[key];
|
?? entity.constructor["attributes"]?.[key]?.serialized
|
||||||
return attribute ? attribute.serialized : false
|
?? false
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @param {String[]} keys */
|
/** @param {String[]} keys */
|
||||||
@@ -1970,23 +1976,22 @@ class Utility {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {String[]} keys
|
* @param {String[]} keys
|
||||||
* @param {Boolean} create
|
|
||||||
* @returns {Boolean}
|
* @returns {Boolean}
|
||||||
*/
|
*/
|
||||||
static objectSet(target, keys, value, create = false, defaultDictType = Object) {
|
static objectSet(target, keys, value, defaultDictType = Object) {
|
||||||
if (!(keys instanceof Array)) {
|
if (!(keys instanceof Array)) {
|
||||||
throw new TypeError("Expected keys to be an array.")
|
throw new TypeError("Expected keys to be an array.")
|
||||||
}
|
}
|
||||||
if (keys.length == 1) {
|
if (keys.length == 1) {
|
||||||
if (create || keys[0] in target || target[keys[0]] === undefined) {
|
if (keys[0] in target || target[keys[0]] === undefined) {
|
||||||
target[keys[0]] = value;
|
target[keys[0]] = value;
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
} else if (keys.length > 0) {
|
} else if (keys.length > 0) {
|
||||||
if (create && !(target[keys[0]] instanceof Object)) {
|
if (!(target[keys[0]] instanceof Object)) {
|
||||||
target[keys[0]] = new defaultDictType();
|
target[keys[0]] = new defaultDictType();
|
||||||
}
|
}
|
||||||
return Utility.objectSet(target[keys[0]], keys.slice(1), value, create, defaultDictType)
|
return Utility.objectSet(target[keys[0]], keys.slice(1), value, defaultDictType)
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@@ -2702,7 +2707,7 @@ class Grammar {
|
|||||||
.map(attributeValue =>
|
.map(attributeValue =>
|
||||||
values => {
|
values => {
|
||||||
handleObjectSet(values, attributeKey, attributeValue);
|
handleObjectSet(values, attributeKey, attributeValue);
|
||||||
Utility.objectSet(values, attributeKey, attributeValue, true);
|
Utility.objectSet(values, attributeKey, attributeValue);
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
@@ -2814,9 +2819,11 @@ class ObjectReferenceEntity extends IEntity {
|
|||||||
...super.attributes,
|
...super.attributes,
|
||||||
type: {
|
type: {
|
||||||
default: "",
|
default: "",
|
||||||
|
serialized: true,
|
||||||
},
|
},
|
||||||
path: {
|
path: {
|
||||||
default: "",
|
default: "",
|
||||||
|
serialized: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
static {
|
static {
|
||||||
@@ -2858,8 +2865,8 @@ class ObjectReferenceEntity extends IEntity {
|
|||||||
),
|
),
|
||||||
Parsernostrum.str('"'),
|
Parsernostrum.str('"'),
|
||||||
).map(([_0, objectReference, _1]) => objectReference),
|
).map(([_0, objectReference, _1]) => objectReference),
|
||||||
this.fullReferenceGrammar,
|
this.fullReferenceGrammar.map(v => (Utility.objectSet(v, ["attributes", "type", "serialized"], false), v)),
|
||||||
this.typeReferenceGrammar,
|
this.typeReferenceGrammar.map(v => (Utility.objectSet(v, ["attributes", "type", "serialized"], false), v)),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5003,12 +5010,12 @@ class ObjectEntity extends IEntity {
|
|||||||
.map(currentValue =>
|
.map(currentValue =>
|
||||||
values => {
|
values => {
|
||||||
(values[symbol] ??= [])[index] = currentValue;
|
(values[symbol] ??= [])[index] = currentValue;
|
||||||
Utility.objectSet(values, ["attributes", symbol, "quoted"], quoted, true);
|
Utility.objectSet(values, ["attributes", symbol, "quoted"], quoted);
|
||||||
if (!this.attributes[symbol]?.inlined) {
|
if (!this.attributes[symbol]?.inlined) {
|
||||||
if (!values.attributes) {
|
if (!values.attributes) {
|
||||||
IEntity.defineAttributes(values, {});
|
IEntity.defineAttributes(values, {});
|
||||||
}
|
}
|
||||||
Utility.objectSet(values, ["attributes", symbol, "inlined"], true, true);
|
Utility.objectSet(values, ["attributes", symbol, "inlined"], true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -5031,7 +5038,7 @@ class ObjectEntity extends IEntity {
|
|||||||
this.customPropertyGrammar,
|
this.customPropertyGrammar,
|
||||||
Grammar.createAttributeGrammar(this),
|
Grammar.createAttributeGrammar(this),
|
||||||
Grammar.createAttributeGrammar(this, Grammar.attributeNameQuoted, undefined, (obj, k, v) =>
|
Grammar.createAttributeGrammar(this, Grammar.attributeNameQuoted, undefined, (obj, k, v) =>
|
||||||
Utility.objectSet(obj, ["attributes", ...k, "quoted"], true, true)
|
Utility.objectSet(obj, ["attributes", ...k, "quoted"], true)
|
||||||
),
|
),
|
||||||
this.inlinedArrayEntryGrammar,
|
this.inlinedArrayEntryGrammar,
|
||||||
this.createSubObjectGrammar()
|
this.createSubObjectGrammar()
|
||||||
@@ -13005,11 +13012,18 @@ function initializeSerializerFactory() {
|
|||||||
SerializerFactory.registerSerializer(
|
SerializerFactory.registerSerializer(
|
||||||
ObjectReferenceEntity,
|
ObjectReferenceEntity,
|
||||||
new CustomSerializer(
|
new CustomSerializer(
|
||||||
objectReference => (objectReference.type ?? "") + (
|
objectReference => {
|
||||||
objectReference.path
|
let type = objectReference.type ?? "";
|
||||||
? objectReference.type ? `'"${objectReference.path}"'` : `"${objectReference.path}"`
|
let name = objectReference.path ?? "";
|
||||||
: ""
|
if (type && name && Utility.isSerialized(objectReference, "path")) {
|
||||||
),
|
name = `'${name}'`;
|
||||||
|
}
|
||||||
|
let result = type + name;
|
||||||
|
if (Utility.isSerialized(objectReference, "type")) {
|
||||||
|
result = `"${result}"`;
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
},
|
||||||
ObjectReferenceEntity
|
ObjectReferenceEntity
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|||||||
4
dist/ueblueprint.min.js
vendored
4
dist/ueblueprint.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -112,6 +112,7 @@ export default class Configuration {
|
|||||||
doN: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:Do N",
|
doN: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:Do N",
|
||||||
doOnce: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:DoOnce",
|
doOnce: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:DoOnce",
|
||||||
dynamicCast: "/Script/BlueprintGraph.K2Node_DynamicCast",
|
dynamicCast: "/Script/BlueprintGraph.K2Node_DynamicCast",
|
||||||
|
eAttachmentRule: "/Script/Engine.EAttachmentRule",
|
||||||
edGraph: "/Script/Engine.EdGraph",
|
edGraph: "/Script/Engine.EdGraph",
|
||||||
edGraphPinDeprecated: "/Script/Engine.EdGraphPin_Deprecated",
|
edGraphPinDeprecated: "/Script/Engine.EdGraphPin_Deprecated",
|
||||||
eDrawDebugTrace: "/Script/Engine.EDrawDebugTrace",
|
eDrawDebugTrace: "/Script/Engine.EDrawDebugTrace",
|
||||||
@@ -278,6 +279,11 @@ export default class Configuration {
|
|||||||
static windowCancelButtonText = "Cancel"
|
static windowCancelButtonText = "Cancel"
|
||||||
static windowCloseEventName = "ueb-window-close"
|
static windowCloseEventName = "ueb-window-close"
|
||||||
static CommonEnums = {
|
static CommonEnums = {
|
||||||
|
[this.paths.eAttachmentRule]: [
|
||||||
|
"KeepRelative",
|
||||||
|
"KeepWorld",
|
||||||
|
"SnapToTarget",
|
||||||
|
],
|
||||||
[this.paths.eMaterialSamplerType]: [
|
[this.paths.eMaterialSamplerType]: [
|
||||||
"Color",
|
"Color",
|
||||||
"Grayscale",
|
"Grayscale",
|
||||||
|
|||||||
@@ -140,9 +140,9 @@ export default class Utility {
|
|||||||
* @returns {Boolean}
|
* @returns {Boolean}
|
||||||
*/
|
*/
|
||||||
static isSerialized(entity, key) {
|
static isSerialized(entity, key) {
|
||||||
// @ts-expect-error
|
return entity["attributes"]?.[key]?.serialized
|
||||||
const attribute = (entity.attributes ?? entity.constructor?.attributes)?.[key]
|
?? entity.constructor["attributes"]?.[key]?.serialized
|
||||||
return attribute ? attribute.serialized : false
|
?? false
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @param {String[]} keys */
|
/** @param {String[]} keys */
|
||||||
@@ -164,23 +164,22 @@ export default class Utility {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {String[]} keys
|
* @param {String[]} keys
|
||||||
* @param {Boolean} create
|
|
||||||
* @returns {Boolean}
|
* @returns {Boolean}
|
||||||
*/
|
*/
|
||||||
static objectSet(target, keys, value, create = false, defaultDictType = Object) {
|
static objectSet(target, keys, value, defaultDictType = Object) {
|
||||||
if (!(keys instanceof Array)) {
|
if (!(keys instanceof Array)) {
|
||||||
throw new TypeError("Expected keys to be an array.")
|
throw new TypeError("Expected keys to be an array.")
|
||||||
}
|
}
|
||||||
if (keys.length == 1) {
|
if (keys.length == 1) {
|
||||||
if (create || keys[0] in target || target[keys[0]] === undefined) {
|
if (keys[0] in target || target[keys[0]] === undefined) {
|
||||||
target[keys[0]] = value
|
target[keys[0]] = value
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
} else if (keys.length > 0) {
|
} else if (keys.length > 0) {
|
||||||
if (create && !(target[keys[0]] instanceof Object)) {
|
if (!(target[keys[0]] instanceof Object)) {
|
||||||
target[keys[0]] = new defaultDictType()
|
target[keys[0]] = new defaultDictType()
|
||||||
}
|
}
|
||||||
return Utility.objectSet(target[keys[0]], keys.slice(1), value, create, defaultDictType)
|
return Utility.objectSet(target[keys[0]], keys.slice(1), value, defaultDictType)
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -188,12 +188,12 @@ export default class ObjectEntity extends IEntity {
|
|||||||
.map(currentValue =>
|
.map(currentValue =>
|
||||||
values => {
|
values => {
|
||||||
(values[symbol] ??= [])[index] = currentValue
|
(values[symbol] ??= [])[index] = currentValue
|
||||||
Utility.objectSet(values, ["attributes", symbol, "quoted"], quoted, true)
|
Utility.objectSet(values, ["attributes", symbol, "quoted"], quoted)
|
||||||
if (!this.attributes[symbol]?.inlined) {
|
if (!this.attributes[symbol]?.inlined) {
|
||||||
if (!values.attributes) {
|
if (!values.attributes) {
|
||||||
IEntity.defineAttributes(values, {})
|
IEntity.defineAttributes(values, {})
|
||||||
}
|
}
|
||||||
Utility.objectSet(values, ["attributes", symbol, "inlined"], true, true)
|
Utility.objectSet(values, ["attributes", symbol, "inlined"], true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -216,7 +216,7 @@ export default class ObjectEntity extends IEntity {
|
|||||||
this.customPropertyGrammar,
|
this.customPropertyGrammar,
|
||||||
Grammar.createAttributeGrammar(this),
|
Grammar.createAttributeGrammar(this),
|
||||||
Grammar.createAttributeGrammar(this, Grammar.attributeNameQuoted, undefined, (obj, k, v) =>
|
Grammar.createAttributeGrammar(this, Grammar.attributeNameQuoted, undefined, (obj, k, v) =>
|
||||||
Utility.objectSet(obj, ["attributes", ...k, "quoted"], true, true)
|
Utility.objectSet(obj, ["attributes", ...k, "quoted"], true)
|
||||||
),
|
),
|
||||||
this.inlinedArrayEntryGrammar,
|
this.inlinedArrayEntryGrammar,
|
||||||
this.createSubObjectGrammar()
|
this.createSubObjectGrammar()
|
||||||
|
|||||||
@@ -10,9 +10,11 @@ export default class ObjectReferenceEntity extends IEntity {
|
|||||||
...super.attributes,
|
...super.attributes,
|
||||||
type: {
|
type: {
|
||||||
default: "",
|
default: "",
|
||||||
|
serialized: true,
|
||||||
},
|
},
|
||||||
path: {
|
path: {
|
||||||
default: "",
|
default: "",
|
||||||
|
serialized: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
static {
|
static {
|
||||||
@@ -54,8 +56,8 @@ export default class ObjectReferenceEntity extends IEntity {
|
|||||||
),
|
),
|
||||||
Parsernostrum.str('"'),
|
Parsernostrum.str('"'),
|
||||||
).map(([_0, objectReference, _1]) => objectReference),
|
).map(([_0, objectReference, _1]) => objectReference),
|
||||||
this.fullReferenceGrammar,
|
this.fullReferenceGrammar.map(v => (Utility.objectSet(v, ["attributes", "type", "serialized"], false), v)),
|
||||||
this.typeReferenceGrammar,
|
this.typeReferenceGrammar.map(v => (Utility.objectSet(v, ["attributes", "type", "serialized"], false), v)),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ export default class Grammar {
|
|||||||
.map(attributeValue =>
|
.map(attributeValue =>
|
||||||
values => {
|
values => {
|
||||||
handleObjectSet(values, attributeKey, attributeValue)
|
handleObjectSet(values, attributeKey, attributeValue)
|
||||||
Utility.objectSet(values, attributeKey, attributeValue, true)
|
Utility.objectSet(values, attributeKey, attributeValue)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -213,11 +213,18 @@ export default function initializeSerializerFactory() {
|
|||||||
SerializerFactory.registerSerializer(
|
SerializerFactory.registerSerializer(
|
||||||
ObjectReferenceEntity,
|
ObjectReferenceEntity,
|
||||||
new CustomSerializer(
|
new CustomSerializer(
|
||||||
objectReference => (objectReference.type ?? "") + (
|
objectReference => {
|
||||||
objectReference.path
|
let type = objectReference.type ?? ""
|
||||||
? objectReference.type ? `'"${objectReference.path}"'` : `"${objectReference.path}"`
|
let name = objectReference.path ?? ""
|
||||||
: ""
|
if (type && name && Utility.isSerialized(objectReference, "path")) {
|
||||||
),
|
name = `'${name}'`
|
||||||
|
}
|
||||||
|
let result = type + name
|
||||||
|
if (Utility.isSerialized(objectReference, "type")) {
|
||||||
|
result = `"${result}"`
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
},
|
||||||
ObjectReferenceEntity
|
ObjectReferenceEntity
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
// @ts-nocheck
|
// @ts-nocheck
|
||||||
|
|
||||||
|
import { test, expect } from "./fixtures/test.js"
|
||||||
import Entity1 from "./resources/Entity1.js"
|
import Entity1 from "./resources/Entity1.js"
|
||||||
import Entity2 from "./resources/Entity2.js"
|
import Entity2 from "./resources/Entity2.js"
|
||||||
import entity2Value from "./resources/serializedEntity2.js"
|
import entity2Value from "./resources/serializedEntity2.js"
|
||||||
@@ -15,9 +16,10 @@ import initializeSerializerFactory from "../js/serialization/initializeSerialize
|
|||||||
import ObjectSerializer from "../js/serialization/ObjectSerializer.js"
|
import ObjectSerializer from "../js/serialization/ObjectSerializer.js"
|
||||||
import Serializer from "../js/serialization/Serializer.js"
|
import Serializer from "../js/serialization/Serializer.js"
|
||||||
import SerializerFactory from "../js/serialization/SerializerFactory.js"
|
import SerializerFactory from "../js/serialization/SerializerFactory.js"
|
||||||
import { test, expect } from "./fixtures/test.js"
|
|
||||||
import UnknownKeysEntity from "../js/entity/UnknownKeysEntity.js"
|
import UnknownKeysEntity from "../js/entity/UnknownKeysEntity.js"
|
||||||
|
|
||||||
|
test.describe.configure({ mode: "parallel" })
|
||||||
|
|
||||||
test("Entity2", () => {
|
test("Entity2", () => {
|
||||||
const entity = new Entity2()
|
const entity = new Entity2()
|
||||||
initializeSerializerFactory()
|
initializeSerializerFactory()
|
||||||
|
|||||||
@@ -17,28 +17,28 @@ import VectorEntity from "../js/entity/VectorEntity.js"
|
|||||||
|
|
||||||
initializeSerializerFactory()
|
initializeSerializerFactory()
|
||||||
|
|
||||||
test.describe("Serializer", () => {
|
test.describe.configure({ mode: "parallel" })
|
||||||
|
|
||||||
test("Boolean", () => {
|
test("Boolean", () => {
|
||||||
let serializer = SerializerFactory.getSerializer(Boolean)
|
let serializer = SerializerFactory.getSerializer(Boolean)
|
||||||
expect(serializer.read("true")).toStrictEqual(true)
|
expect(serializer.read("true")).toStrictEqual(true)
|
||||||
expect(serializer.read("True")).toStrictEqual(true)
|
expect(serializer.read("True")).toStrictEqual(true)
|
||||||
expect(serializer.read("false")).toStrictEqual(false)
|
expect(serializer.read("false")).toStrictEqual(false)
|
||||||
expect(serializer.read("False")).toStrictEqual(false)
|
expect(serializer.read("False")).toStrictEqual(false)
|
||||||
})
|
})
|
||||||
|
|
||||||
test("FormatTextEntity", () => {
|
test("FormatTextEntity", () => {
|
||||||
let serializer = SerializerFactory.getSerializer(FormatTextEntity)
|
let serializer = SerializerFactory.getSerializer(FormatTextEntity)
|
||||||
expect(
|
expect(
|
||||||
serializer.read(`LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Blocking Hit")`)
|
serializer.read(`LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Blocking Hit")`)
|
||||||
.toString()
|
.toString()
|
||||||
).toBe("Out Hit Blocking Hit")
|
).toBe("Out Hit Blocking Hit")
|
||||||
expect(
|
expect(
|
||||||
serializer.read(`LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Hit Bone Name")`)
|
serializer.read(`LOCGEN_FORMAT_NAMED(NSLOCTEXT("KismetSchema", "SplitPinFriendlyNameFormat", "{PinDisplayName} {ProtoPinDisplayName}"), "PinDisplayName", "Out Hit", "ProtoPinDisplayName", "Hit Bone Name")`)
|
||||||
.toString()
|
.toString()
|
||||||
).toBe("Out Hit Hit Bone Name")
|
).toBe("Out Hit Hit Bone Name")
|
||||||
expect(
|
expect(
|
||||||
serializer.read(String.raw`LOCGEN_FORMAT_ORDERED(
|
serializer.read(String.raw`LOCGEN_FORMAT_ORDERED(
|
||||||
NSLOCTEXT(
|
NSLOCTEXT(
|
||||||
"PCGSettings",
|
"PCGSettings",
|
||||||
"OverridableParamPinTooltip",
|
"OverridableParamPinTooltip",
|
||||||
@@ -48,311 +48,317 @@ test.describe("Serializer", () => {
|
|||||||
"float",
|
"float",
|
||||||
"InRangeMin"
|
"InRangeMin"
|
||||||
)`)
|
)`)
|
||||||
.toString()
|
.toString()
|
||||||
|
|
||||||
).toBe(`If InRangeMin = InRangeMax, then that density value is mapped to the average of OutRangeMin and OutRangeMax\nAttribute type is "float" and its exact name is "InRangeMin"`)
|
).toBe(`If InRangeMin = InRangeMax, then that density value is mapped to the average of OutRangeMin and OutRangeMax\nAttribute type is "float" and its exact name is "InRangeMin"`)
|
||||||
})
|
})
|
||||||
|
|
||||||
test("GuidEntity", () => {
|
test("GuidEntity", () => {
|
||||||
let serializer = SerializerFactory.getSerializer(GuidEntity)
|
let serializer = SerializerFactory.getSerializer(GuidEntity)
|
||||||
|
|
||||||
let guid = serializer.read("0556a3ecabf648d0a5c07b2478e9dd32")
|
let guid = serializer.read("0556a3ecabf648d0a5c07b2478e9dd32")
|
||||||
expect(guid).toBeInstanceOf(GuidEntity)
|
expect(guid).toBeInstanceOf(GuidEntity)
|
||||||
expect(guid.value).toBe("0556a3ecabf648d0a5c07b2478e9dd32")
|
expect(guid.value).toBe("0556a3ecabf648d0a5c07b2478e9dd32")
|
||||||
|
|
||||||
guid = serializer.read("64023BC344E0453DBB583FAC411489BC")
|
guid = serializer.read("64023BC344E0453DBB583FAC411489BC")
|
||||||
expect(guid).toBeInstanceOf(GuidEntity)
|
expect(guid).toBeInstanceOf(GuidEntity)
|
||||||
expect(guid.value).toBe("64023BC344E0453DBB583FAC411489BC")
|
expect(guid.value).toBe("64023BC344E0453DBB583FAC411489BC")
|
||||||
|
|
||||||
guid = serializer.read("6edC4a425ca948da8bC78bA52DED6C6C")
|
guid = serializer.read("6edC4a425ca948da8bC78bA52DED6C6C")
|
||||||
expect(guid).toBeInstanceOf(GuidEntity)
|
expect(guid).toBeInstanceOf(GuidEntity)
|
||||||
expect(guid.value).toBe("6edC4a425ca948da8bC78bA52DED6C6C")
|
expect(guid.value).toBe("6edC4a425ca948da8bC78bA52DED6C6C")
|
||||||
|
|
||||||
expect(() => serializer.read("172087193 9B04362973544B3564FDB2C")).toThrow()
|
expect(() => serializer.read("172087193 9B04362973544B3564FDB2C")).toThrow()
|
||||||
expect(() => serializer.read("E25F14F8F3E9441AB07153E7DA2BA2B")).toThrow()
|
expect(() => serializer.read("E25F14F8F3E9441AB07153E7DA2BA2B")).toThrow()
|
||||||
expect(() => serializer.read("A78988B0097E48418C8CB87EC5A67ABF7")).toThrow()
|
expect(() => serializer.read("A78988B0097E48418C8CB87EC5A67ABF7")).toThrow()
|
||||||
})
|
})
|
||||||
|
|
||||||
test("IntegerEntity", () => {
|
test("IntegerEntity", () => {
|
||||||
let serializer = SerializerFactory.getSerializer(IntegerEntity)
|
let serializer = SerializerFactory.getSerializer(IntegerEntity)
|
||||||
|
|
||||||
let integer = serializer.read("0")
|
let integer = serializer.read("0")
|
||||||
expect(integer).toBeInstanceOf(IntegerEntity)
|
expect(integer).toBeInstanceOf(IntegerEntity)
|
||||||
expect(integer.value).toStrictEqual(0)
|
expect(integer.value).toStrictEqual(0)
|
||||||
|
|
||||||
integer = serializer.read("+0")
|
integer = serializer.read("+0")
|
||||||
expect(integer).toBeInstanceOf(IntegerEntity)
|
expect(integer).toBeInstanceOf(IntegerEntity)
|
||||||
expect(integer.value).toStrictEqual(0)
|
expect(integer.value).toStrictEqual(0)
|
||||||
|
|
||||||
integer = serializer.read("-0")
|
integer = serializer.read("-0")
|
||||||
expect(integer).toBeInstanceOf(IntegerEntity)
|
expect(integer).toBeInstanceOf(IntegerEntity)
|
||||||
expect(integer.value).toStrictEqual(0)
|
expect(integer.value).toStrictEqual(0)
|
||||||
|
|
||||||
integer = serializer.read("99")
|
integer = serializer.read("99")
|
||||||
expect(integer).toBeInstanceOf(IntegerEntity)
|
expect(integer).toBeInstanceOf(IntegerEntity)
|
||||||
expect(integer.value).toStrictEqual(99)
|
expect(integer.value).toStrictEqual(99)
|
||||||
|
|
||||||
integer = serializer.read("-8685")
|
integer = serializer.read("-8685")
|
||||||
expect(integer).toBeInstanceOf(IntegerEntity)
|
expect(integer).toBeInstanceOf(IntegerEntity)
|
||||||
expect(integer.value).toStrictEqual(-8685)
|
expect(integer.value).toStrictEqual(-8685)
|
||||||
|
|
||||||
integer = serializer.read("+555")
|
integer = serializer.read("+555")
|
||||||
expect(integer).toBeInstanceOf(IntegerEntity)
|
expect(integer).toBeInstanceOf(IntegerEntity)
|
||||||
expect(integer.value).toStrictEqual(555)
|
expect(integer.value).toStrictEqual(555)
|
||||||
|
|
||||||
integer = serializer.read("1000000000")
|
integer = serializer.read("1000000000")
|
||||||
expect(integer).toBeInstanceOf(IntegerEntity)
|
expect(integer).toBeInstanceOf(IntegerEntity)
|
||||||
expect(integer.value).toStrictEqual(1000000000)
|
expect(integer.value).toStrictEqual(1000000000)
|
||||||
|
|
||||||
expect(() => serializer.read("1.2").value).toThrow()
|
expect(() => serializer.read("1.2").value).toThrow()
|
||||||
})
|
})
|
||||||
|
|
||||||
test("KeyBindingEntity", () => {
|
test("KeyBindingEntity", () => {
|
||||||
let serializer = SerializerFactory.getSerializer(KeyBindingEntity)
|
let serializer = SerializerFactory.getSerializer(KeyBindingEntity)
|
||||||
|
|
||||||
let binding = serializer.read("A")
|
let binding = serializer.read("A")
|
||||||
expect(binding).toBeInstanceOf(KeyBindingEntity)
|
expect(binding).toBeInstanceOf(KeyBindingEntity)
|
||||||
expect(binding).toMatchObject({ Key: { value: "A" } })
|
expect(binding).toMatchObject({ Key: { value: "A" } })
|
||||||
|
|
||||||
binding = serializer.read("(bCtrl=True,Key=A)")
|
binding = serializer.read("(bCtrl=True,Key=A)")
|
||||||
expect(binding).toBeInstanceOf(KeyBindingEntity)
|
expect(binding).toBeInstanceOf(KeyBindingEntity)
|
||||||
expect(binding).toMatchObject({ Key: { value: "A" }, bCtrl: true })
|
expect(binding).toMatchObject({ Key: { value: "A" }, bCtrl: true })
|
||||||
|
|
||||||
binding = serializer.read("(bCtrl=false,bShift=false,bCmd=true,bAlt=false,Key=X)")
|
binding = serializer.read("(bCtrl=false,bShift=false,bCmd=true,bAlt=false,Key=X)")
|
||||||
expect(binding).toBeInstanceOf(KeyBindingEntity)
|
expect(binding).toBeInstanceOf(KeyBindingEntity)
|
||||||
expect(binding).toMatchObject({ Key: { value: "X" }, bAlt: false, bCtrl: false, bCmd: true })
|
expect(binding).toMatchObject({ Key: { value: "X" }, bAlt: false, bCtrl: false, bCmd: true })
|
||||||
|
|
||||||
binding = serializer.read("( bCtrl= false \n, Key \n\n\n =Y ,bAlt=true )")
|
binding = serializer.read("( bCtrl= false \n, Key \n\n\n =Y ,bAlt=true )")
|
||||||
expect(binding).toBeInstanceOf(KeyBindingEntity)
|
expect(binding).toBeInstanceOf(KeyBindingEntity)
|
||||||
expect(binding).toMatchObject({ Key: { value: "Y" }, bAlt: true, bCtrl: false })
|
expect(binding).toMatchObject({ Key: { value: "Y" }, bAlt: true, bCtrl: false })
|
||||||
})
|
})
|
||||||
|
|
||||||
test("LinearColorEntity", () => {
|
test("LinearColorEntity", () => {
|
||||||
const serializer = SerializerFactory.getSerializer(LinearColorEntity)
|
const serializer = SerializerFactory.getSerializer(LinearColorEntity)
|
||||||
|
|
||||||
let color = LinearColorEntity.getWhite()
|
let color = LinearColorEntity.getWhite()
|
||||||
expect(color.toRGBA()).toStrictEqual([255, 255, 255, 255])
|
expect(color.toRGBA()).toStrictEqual([255, 255, 255, 255])
|
||||||
expect(color.toRGBAString()).toStrictEqual("FFFFFFFF")
|
expect(color.toRGBAString()).toStrictEqual("FFFFFFFF")
|
||||||
expect(color.toNumber()).toStrictEqual(-1)
|
expect(color.toNumber()).toStrictEqual(-1)
|
||||||
expect(color.toHSVA()).toStrictEqual([0, 0, 1, 1])
|
expect(color.toHSVA()).toStrictEqual([0, 0, 1, 1])
|
||||||
|
|
||||||
color = serializer.read("(R=1,G=0,B=0)")
|
color = serializer.read("(R=1,G=0,B=0)")
|
||||||
expect(color.toRGBA()).toStrictEqual([255, 0, 0, 255])
|
expect(color.toRGBA()).toStrictEqual([255, 0, 0, 255])
|
||||||
expect(color.toRGBAString()).toStrictEqual("FF0000FF")
|
expect(color.toRGBAString()).toStrictEqual("FF0000FF")
|
||||||
expect(color.toNumber()).toStrictEqual(-16776961)
|
expect(color.toNumber()).toStrictEqual(-16776961)
|
||||||
expect(color.toHSVA()).toStrictEqual([0, 1, 1, 1])
|
expect(color.toHSVA()).toStrictEqual([0, 1, 1, 1])
|
||||||
|
|
||||||
color = serializer.read("(R=0.000000,G=0.660000,B=1.000000,A=1.000000)")
|
color = serializer.read("(R=0.000000,G=0.660000,B=1.000000,A=1.000000)")
|
||||||
expect(color.toRGBA()).toStrictEqual([0, 168, 255, 255])
|
expect(color.toRGBA()).toStrictEqual([0, 168, 255, 255])
|
||||||
expect(color.toRGBAString()).toStrictEqual("00A8FFFF")
|
expect(color.toRGBAString()).toStrictEqual("00A8FFFF")
|
||||||
expect(color.toNumber()).toStrictEqual(11075583)
|
expect(color.toNumber()).toStrictEqual(11075583)
|
||||||
expect(color.toHSVA()).toStrictEqual([0.55666666666666666666, 1, 1, 1])
|
expect(color.toHSVA()).toStrictEqual([0.55666666666666666666, 1, 1, 1])
|
||||||
|
|
||||||
color = serializer.read("(B=0.04394509003266556,G=0.026789300067696642,A=0.83663232408635,R=0.6884158028074934,)")
|
color = serializer.read("(B=0.04394509003266556,G=0.026789300067696642,A=0.83663232408635,R=0.6884158028074934,)")
|
||||||
expect(color.toRGBA()).toStrictEqual([176, 7, 11, 213])
|
expect(color.toRGBA()).toStrictEqual([176, 7, 11, 213])
|
||||||
expect(color.toRGBAString()).toStrictEqual("B0070BD5")
|
expect(color.toRGBAString()).toStrictEqual("B0070BD5")
|
||||||
expect(color.toNumber()).toStrictEqual(-1341715499)
|
expect(color.toNumber()).toStrictEqual(-1341715499)
|
||||||
expect(color.toHSVA().map(v => Utility.roundDecimals(v, 3))).toStrictEqual([0.996, 0.961, 0.688, 0.837])
|
expect(color.toHSVA().map(v => Utility.roundDecimals(v, 3))).toStrictEqual([0.996, 0.961, 0.688, 0.837])
|
||||||
|
|
||||||
color = serializer.read(`(
|
color = serializer.read(`(
|
||||||
A = 0.327 ,
|
A = 0.327 ,
|
||||||
R=0.530 , G = 0.685
|
R=0.530 , G = 0.685
|
||||||
,B
|
,B
|
||||||
= 0.9 ,)`)
|
= 0.9 ,)`)
|
||||||
expect(color.toRGBA()).toStrictEqual([135, 175, 230, 83])
|
expect(color.toRGBA()).toStrictEqual([135, 175, 230, 83])
|
||||||
expect(color.toRGBAString()).toStrictEqual("87AFE653")
|
expect(color.toRGBAString()).toStrictEqual("87AFE653")
|
||||||
expect(color.toNumber()).toStrictEqual(-2018515373)
|
expect(color.toNumber()).toStrictEqual(-2018515373)
|
||||||
expect(color.toHSVA().map(v => Utility.roundDecimals(v, 3))).toStrictEqual([0.597, 0.411, 0.9, 0.327])
|
expect(color.toHSVA().map(v => Utility.roundDecimals(v, 3))).toStrictEqual([0.597, 0.411, 0.9, 0.327])
|
||||||
|
|
||||||
expect(() => serializer.read("(R=0.000000,G=0.660000,A=1.000000)")).toThrow()
|
expect(() => serializer.read("(R=0.000000,G=0.660000,A=1.000000)")).toThrow()
|
||||||
expect(() => serializer.read("(R=0.000000,G=\"hello\",A=1.000000)")).toThrow()
|
expect(() => serializer.read("(R=0.000000,G=\"hello\",A=1.000000)")).toThrow()
|
||||||
|
})
|
||||||
|
|
||||||
|
test("Number", () => {
|
||||||
|
const serializer = SerializerFactory.getSerializer(Number)
|
||||||
|
|
||||||
|
expect(serializer.read("0")).toBeCloseTo(0, 0.00001)
|
||||||
|
expect(serializer.read("+0")).toBeCloseTo(0, 0.00001)
|
||||||
|
expect(serializer.read("-0")).toBeCloseTo(0, 0.00001)
|
||||||
|
expect(serializer.read("5")).toBeCloseTo(5, 0.00001)
|
||||||
|
expect(serializer.read("0.05")).toBeCloseTo(0.05, 0.00001)
|
||||||
|
expect(serializer.read("-999.666")).toBeCloseTo(-999.666, 0.001)
|
||||||
|
expect(serializer.read("+45.4545")).toBeCloseTo(45.4545, 0.001)
|
||||||
|
expect(serializer.read("+1000000000")).toBeCloseTo(1E9, 0.1)
|
||||||
|
expect(serializer.read("inf")).toBe(Number.POSITIVE_INFINITY)
|
||||||
|
expect(serializer.read("+inf")).toBe(Number.POSITIVE_INFINITY)
|
||||||
|
expect(serializer.read("-inf")).toBe(Number.NEGATIVE_INFINITY)
|
||||||
|
expect(() => serializer.read("alpha")).toThrow()
|
||||||
|
})
|
||||||
|
|
||||||
|
test("ObjectReferenceEntity", () => {
|
||||||
|
const serializer = SerializerFactory.getSerializer(ObjectReferenceEntity)
|
||||||
|
|
||||||
|
let reference = serializer.read("Class")
|
||||||
|
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
||||||
|
expect(reference).toMatchObject({ type: "Class", path: "" })
|
||||||
|
expect(serializer.write(reference)).toBe("Class")
|
||||||
|
|
||||||
|
reference = serializer.read(`Class'/Script/ShooterGame.ShooterGameMode'`)
|
||||||
|
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
||||||
|
expect(reference).toMatchObject({ type: "Class", path: "/Script/ShooterGame.ShooterGameMode" })
|
||||||
|
expect(serializer.write(reference)).toBe(`Class'/Script/ShooterGame.ShooterGameMode'`)
|
||||||
|
|
||||||
|
reference = serializer.read(`EdGraphPin'EdGraphPin_45417'`)
|
||||||
|
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
||||||
|
expect(reference).toMatchObject({ type: "EdGraphPin", path: "EdGraphPin_45417" })
|
||||||
|
expect(serializer.write(reference)).toBe(`EdGraphPin'EdGraphPin_45417'`)
|
||||||
|
|
||||||
|
reference = serializer.read(`EdGraphPin'"K2Node_DynamicCast_2126.EdGraphPin_3990988"'`)
|
||||||
|
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
||||||
|
expect(reference).toMatchObject({ type: "EdGraphPin", path: "K2Node_DynamicCast_2126.EdGraphPin_3990988" })
|
||||||
|
|
||||||
|
reference = serializer.read(
|
||||||
|
`"/Script/Engine.MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_0'"`
|
||||||
|
)
|
||||||
|
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
||||||
|
expect(reference).toMatchObject({
|
||||||
|
type: "/Script/Engine.MaterialExpressionMaterialFunctionCall",
|
||||||
|
path: "MaterialExpressionMaterialFunctionCall_0",
|
||||||
|
})
|
||||||
|
expect(serializer.write(reference)).toBe(
|
||||||
|
`"/Script/Engine.MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_0'"`
|
||||||
|
)
|
||||||
|
|
||||||
|
reference = serializer.read(
|
||||||
|
`/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:Do N"'`
|
||||||
|
)
|
||||||
|
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
||||||
|
expect(reference).toMatchObject({
|
||||||
|
type: "/Script/Engine.EdGraph",
|
||||||
|
path: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:Do N",
|
||||||
})
|
})
|
||||||
|
|
||||||
test("Number", () => {
|
reference = serializer.read(
|
||||||
const serializer = SerializerFactory.getSerializer(Number)
|
`EdGraphPin'"K2Node_CommutativeAssociativeBinaryOperator_152.EdGraphPin_4045"'`
|
||||||
|
)
|
||||||
expect(serializer.read("0")).toBeCloseTo(0, 0.00001)
|
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
||||||
expect(serializer.read("+0")).toBeCloseTo(0, 0.00001)
|
expect(reference).toMatchObject({
|
||||||
expect(serializer.read("-0")).toBeCloseTo(0, 0.00001)
|
type: "EdGraphPin",
|
||||||
expect(serializer.read("5")).toBeCloseTo(5, 0.00001)
|
path: "K2Node_CommutativeAssociativeBinaryOperator_152.EdGraphPin_4045",
|
||||||
expect(serializer.read("0.05")).toBeCloseTo(0.05, 0.00001)
|
|
||||||
expect(serializer.read("-999.666")).toBeCloseTo(-999.666, 0.001)
|
|
||||||
expect(serializer.read("+45.4545")).toBeCloseTo(45.4545, 0.001)
|
|
||||||
expect(serializer.read("+1000000000")).toBeCloseTo(1E9, 0.1)
|
|
||||||
expect(serializer.read("inf")).toBe(Number.POSITIVE_INFINITY)
|
|
||||||
expect(serializer.read("+inf")).toBe(Number.POSITIVE_INFINITY)
|
|
||||||
expect(serializer.read("-inf")).toBe(Number.NEGATIVE_INFINITY)
|
|
||||||
expect(() => serializer.read("alpha")).toThrow()
|
|
||||||
})
|
})
|
||||||
|
|
||||||
test("ObjectReferenceEntity", () => {
|
reference = serializer.read(
|
||||||
const serializer = SerializerFactory.getSerializer(ObjectReferenceEntity)
|
`Function'"/Game/Mods/CrazyDinos/ElementalDragon/CDElementalDragon_Character_BP.SKEL_CDElementalDragon_Character_BP_C:ROS Change Element"'`
|
||||||
|
)
|
||||||
let reference = serializer.read("Class")
|
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
||||||
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
expect(reference).toMatchObject({
|
||||||
expect(reference).toMatchObject({ type: "Class", path: "" })
|
type: "Function",
|
||||||
|
path: "/Game/Mods/CrazyDinos/ElementalDragon/CDElementalDragon_Character_BP.SKEL_CDElementalDragon_Character_BP_C:ROS Change Element",
|
||||||
reference = serializer.read(`Class'/Script/ShooterGame.ShooterGameMode'`)
|
|
||||||
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
|
||||||
expect(reference).toMatchObject({ type: "Class", path: "/Script/ShooterGame.ShooterGameMode" })
|
|
||||||
|
|
||||||
reference = serializer.read(`EdGraphPin'EdGraphPin_45417'`)
|
|
||||||
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
|
||||||
expect(reference).toMatchObject({ type: "EdGraphPin", path: "EdGraphPin_45417" })
|
|
||||||
|
|
||||||
reference = serializer.read(`EdGraphPin'"K2Node_DynamicCast_2126.EdGraphPin_3990988"'`)
|
|
||||||
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
|
||||||
expect(reference).toMatchObject({ type: "EdGraphPin", path: "K2Node_DynamicCast_2126.EdGraphPin_3990988" })
|
|
||||||
|
|
||||||
reference = serializer.read(
|
|
||||||
`"/Script/Engine.MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_0'"`
|
|
||||||
)
|
|
||||||
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
|
||||||
expect(reference).toMatchObject({
|
|
||||||
type: "/Script/Engine.MaterialExpressionMaterialFunctionCall",
|
|
||||||
path: "MaterialExpressionMaterialFunctionCall_0",
|
|
||||||
})
|
|
||||||
|
|
||||||
reference = serializer.read(
|
|
||||||
`/Script/Engine.EdGraph'"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:Do N"'`
|
|
||||||
)
|
|
||||||
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
|
||||||
expect(reference).toMatchObject({
|
|
||||||
type: "/Script/Engine.EdGraph",
|
|
||||||
path: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:Do N",
|
|
||||||
})
|
|
||||||
|
|
||||||
reference = serializer.read(
|
|
||||||
`EdGraphPin'"K2Node_CommutativeAssociativeBinaryOperator_152.EdGraphPin_4045"'`
|
|
||||||
)
|
|
||||||
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
|
||||||
expect(reference).toMatchObject({
|
|
||||||
type: "EdGraphPin",
|
|
||||||
path: "K2Node_CommutativeAssociativeBinaryOperator_152.EdGraphPin_4045",
|
|
||||||
})
|
|
||||||
|
|
||||||
reference = serializer.read(
|
|
||||||
`Function'"/Game/Mods/CrazyDinos/ElementalDragon/CDElementalDragon_Character_BP.SKEL_CDElementalDragon_Character_BP_C:ROS Change Element"'`
|
|
||||||
)
|
|
||||||
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
|
||||||
expect(reference).toMatchObject({
|
|
||||||
type: "Function",
|
|
||||||
path: "/Game/Mods/CrazyDinos/ElementalDragon/CDElementalDragon_Character_BP.SKEL_CDElementalDragon_Character_BP_C:ROS Change Element",
|
|
||||||
})
|
|
||||||
|
|
||||||
reference = serializer.read(`EdGraph'/Game/Systems/BP_MacroGlobal.BP_MacroGlobal:Or+Branch'`)
|
|
||||||
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
|
||||||
expect(reference).toMatchObject({
|
|
||||||
type: "EdGraph",
|
|
||||||
path: "/Game/Systems/BP_MacroGlobal.BP_MacroGlobal:Or+Branch",
|
|
||||||
})
|
|
||||||
|
|
||||||
reference = serializer.read(`/Script/Engine.EdGraph'"+-Weird/2,Macro"'`)
|
|
||||||
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
|
||||||
expect(reference).toMatchObject({ type: "/Script/Engine.EdGraph", path: "+-Weird/2,Macro" })
|
|
||||||
|
|
||||||
reference = serializer.read(`/Script/BlueprintGraph.K2Node_VariableGet`)
|
|
||||||
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
|
||||||
expect(reference).toMatchObject({ type: "/Script/BlueprintGraph.K2Node_VariableGet", path: "" })
|
|
||||||
|
|
||||||
reference = serializer.read(
|
|
||||||
`/Script/Engine.MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_0'`
|
|
||||||
)
|
|
||||||
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
|
||||||
expect(reference).toMatchObject({
|
|
||||||
type: "/Script/Engine.MaterialExpressionMaterialFunctionCall",
|
|
||||||
path: "MaterialExpressionMaterialFunctionCall_0",
|
|
||||||
})
|
|
||||||
|
|
||||||
reference = serializer.read(
|
|
||||||
`/Script/Engine.MaterialExpressionMaterialFunctionCall'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_3.MaterialExpressionMaterialFunctionCall_0'`
|
|
||||||
)
|
|
||||||
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
|
||||||
expect(reference).toMatchObject({
|
|
||||||
type: "/Script/Engine.MaterialExpressionMaterialFunctionCall",
|
|
||||||
path: "/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_3.MaterialExpressionMaterialFunctionCall_0",
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
test("String", () => {
|
reference = serializer.read(`EdGraph'/Game/Systems/BP_MacroGlobal.BP_MacroGlobal:Or+Branch'`)
|
||||||
const serializer = SerializerFactory.getSerializer(String)
|
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
||||||
|
expect(reference).toMatchObject({
|
||||||
expect(serializer.read('""')).toStrictEqual("")
|
type: "EdGraph",
|
||||||
expect(serializer.read('"hello"')).toStrictEqual("hello")
|
path: "/Game/Systems/BP_MacroGlobal.BP_MacroGlobal:Or+Branch",
|
||||||
expect(serializer.read('"hello world 123 - éèàò@ç ^ ^^^"')).toStrictEqual("hello world 123 - éèàò@ç ^ ^^^")
|
|
||||||
expect(serializer.read('"\\""')).toStrictEqual('"')
|
|
||||||
expect(() => serializer.read("Hello")).toThrow()
|
|
||||||
})
|
})
|
||||||
|
|
||||||
test("UnknownKeysValue", () => {
|
reference = serializer.read(`/Script/Engine.EdGraph'"+-Weird/2,Macro"'`)
|
||||||
const parser = Grammar.unknownValue
|
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
||||||
|
expect(reference).toMatchObject({ type: "/Script/Engine.EdGraph", path: "+-Weird/2,Macro" })
|
||||||
|
|
||||||
expect(parser.parse('"Hello"').constructor).toStrictEqual(String)
|
reference = serializer.read(`/Script/BlueprintGraph.K2Node_VariableGet`)
|
||||||
expect(parser.parse("()")).toBeNull()
|
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
||||||
expect(parser.parse("8345").constructor).toStrictEqual(Number)
|
expect(reference).toMatchObject({ type: "/Script/BlueprintGraph.K2Node_VariableGet", path: "" })
|
||||||
expect(parser.parse("True").constructor).toStrictEqual(Boolean)
|
|
||||||
expect(parser.parse("False").constructor).toStrictEqual(Boolean)
|
reference = serializer.read(
|
||||||
expect(parser.parse("F0223D3742E67C0D9FEFB2A64946B7F0").constructor).toStrictEqual(GuidEntity)
|
`/Script/Engine.MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_0'`
|
||||||
expect(parser.parse("SYMBOL1").constructor).toStrictEqual(SymbolEntity)
|
)
|
||||||
expect(parser.parse("Symbol_2_3_4").constructor).toStrictEqual(SymbolEntity)
|
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
||||||
expect(parser.parse("(X=-0.495, Y=0, )").constructor).toStrictEqual(Vector2DEntity)
|
expect(reference).toMatchObject({
|
||||||
expect(parser.parse("(X=-0.495,Y=+765.0,Z=7)").constructor).toStrictEqual(VectorEntity)
|
type: "/Script/Engine.MaterialExpressionMaterialFunctionCall",
|
||||||
expect(parser.parse("(R=1.000000,P=7.6,Y=+88.99)").constructor).toStrictEqual(RotatorEntity)
|
path: "MaterialExpressionMaterialFunctionCall_0",
|
||||||
expect(parser.parse("(R=0.000000,G=0.660000,B=1.000000,A=1.000000)").constructor)
|
|
||||||
.toStrictEqual(LinearColorEntity)
|
|
||||||
expect(parser.parse(`Class'"/Script/Engine.KismetSystemLibrary"'`).constructor)
|
|
||||||
.toStrictEqual(ObjectReferenceEntity)
|
|
||||||
expect(parser.parse("(1,2,3,4,5,6,7,8,9)")).toStrictEqual([1, 2, 3, 4, 5, 6, 7, 8, 9])
|
|
||||||
expect(parser.parse(`( "Hello", "World", )`)).toStrictEqual(["Hello", "World"])
|
|
||||||
expect(parser.parse(`( "Alpha", 123, Beta, "Gamma", "Delta", 99 )`))
|
|
||||||
.toStrictEqual(["Alpha", 123, new SymbolEntity({ value: "Beta" }), "Gamma", "Delta", 99])
|
|
||||||
})
|
})
|
||||||
|
|
||||||
test("UnknownKeysEntity", () => {
|
reference = serializer.read(
|
||||||
const serializer = SerializerFactory.getSerializer(UnknownKeysEntity)
|
`/Script/Engine.MaterialExpressionMaterialFunctionCall'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_3.MaterialExpressionMaterialFunctionCall_0'`
|
||||||
|
)
|
||||||
|
expect(reference).toBeInstanceOf(ObjectReferenceEntity)
|
||||||
|
expect(reference).toMatchObject({
|
||||||
|
type: "/Script/Engine.MaterialExpressionMaterialFunctionCall",
|
||||||
|
path: "/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_3.MaterialExpressionMaterialFunctionCall_0",
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
let unknown = serializer.read('LookbehindValue(FirstKey=1,SecondKey=SOME_SYMBOL2,ThirdKey="Hello")')
|
test("String", () => {
|
||||||
expect(unknown).toBeInstanceOf(UnknownKeysEntity)
|
const serializer = SerializerFactory.getSerializer(String)
|
||||||
expect(unknown).toMatchObject({
|
|
||||||
lookbehind: "LookbehindValue",
|
|
||||||
FirstKey: 1,
|
|
||||||
SecondKey: new SymbolEntity("SOME_SYMBOL2"),
|
|
||||||
ThirdKey: "Hello",
|
|
||||||
})
|
|
||||||
|
|
||||||
unknown = serializer.read('(A = (-1,-2,-3), B = SomeFunction(B1 = "b1", B2 = (X=101,Y=102,Z=103)))')
|
expect(serializer.read('""')).toStrictEqual("")
|
||||||
expect(unknown).toBeInstanceOf(UnknownKeysEntity)
|
expect(serializer.read('"hello"')).toStrictEqual("hello")
|
||||||
expect(unknown).toMatchObject({
|
expect(serializer.read('"hello world 123 - éèàò@ç ^ ^^^"')).toStrictEqual("hello world 123 - éèàò@ç ^ ^^^")
|
||||||
lookbehind: "",
|
expect(serializer.read('"\\""')).toStrictEqual('"')
|
||||||
A: [-1, -2, -3],
|
expect(() => serializer.read("Hello")).toThrow()
|
||||||
B: new UnknownKeysEntity({
|
})
|
||||||
lookbehind: "SomeFunction",
|
|
||||||
B1: "b1",
|
test("UnknownKeysValue", () => {
|
||||||
B2: new VectorEntity({ X: 101, Y: 102, Z: 103 }),
|
const parser = Grammar.unknownValue
|
||||||
}),
|
|
||||||
})
|
expect(parser.parse('"Hello"').constructor).toStrictEqual(String)
|
||||||
|
expect(parser.parse("()")).toBeNull()
|
||||||
|
expect(parser.parse("8345").constructor).toStrictEqual(Number)
|
||||||
|
expect(parser.parse("True").constructor).toStrictEqual(Boolean)
|
||||||
|
expect(parser.parse("False").constructor).toStrictEqual(Boolean)
|
||||||
|
expect(parser.parse("F0223D3742E67C0D9FEFB2A64946B7F0").constructor).toStrictEqual(GuidEntity)
|
||||||
|
expect(parser.parse("SYMBOL1").constructor).toStrictEqual(SymbolEntity)
|
||||||
|
expect(parser.parse("Symbol_2_3_4").constructor).toStrictEqual(SymbolEntity)
|
||||||
|
expect(parser.parse("(X=-0.495, Y=0, )").constructor).toStrictEqual(Vector2DEntity)
|
||||||
|
expect(parser.parse("(X=-0.495,Y=+765.0,Z=7)").constructor).toStrictEqual(VectorEntity)
|
||||||
|
expect(parser.parse("(R=1.000000,P=7.6,Y=+88.99)").constructor).toStrictEqual(RotatorEntity)
|
||||||
|
expect(parser.parse("(R=0.000000,G=0.660000,B=1.000000,A=1.000000)").constructor)
|
||||||
|
.toStrictEqual(LinearColorEntity)
|
||||||
|
expect(parser.parse(`Class'"/Script/Engine.KismetSystemLibrary"'`).constructor)
|
||||||
|
.toStrictEqual(ObjectReferenceEntity)
|
||||||
|
expect(parser.parse("(1,2,3,4,5,6,7,8,9)")).toStrictEqual([1, 2, 3, 4, 5, 6, 7, 8, 9])
|
||||||
|
expect(parser.parse(`( "Hello", "World", )`)).toStrictEqual(["Hello", "World"])
|
||||||
|
expect(parser.parse(`( "Alpha", 123, Beta, "Gamma", "Delta", 99 )`))
|
||||||
|
.toStrictEqual(["Alpha", 123, new SymbolEntity({ value: "Beta" }), "Gamma", "Delta", 99])
|
||||||
|
})
|
||||||
|
|
||||||
|
test("UnknownKeysEntity", () => {
|
||||||
|
const serializer = SerializerFactory.getSerializer(UnknownKeysEntity)
|
||||||
|
|
||||||
|
let unknown = serializer.read('LookbehindValue(FirstKey=1,SecondKey=SOME_SYMBOL2,ThirdKey="Hello")')
|
||||||
|
expect(unknown).toBeInstanceOf(UnknownKeysEntity)
|
||||||
|
expect(unknown).toMatchObject({
|
||||||
|
lookbehind: "LookbehindValue",
|
||||||
|
FirstKey: 1,
|
||||||
|
SecondKey: new SymbolEntity("SOME_SYMBOL2"),
|
||||||
|
ThirdKey: "Hello",
|
||||||
})
|
})
|
||||||
|
|
||||||
test("VectorEntity", () => {
|
unknown = serializer.read('(A = (-1,-2,-3), B = SomeFunction(B1 = "b1", B2 = (X=101,Y=102,Z=103)))')
|
||||||
const serializer = SerializerFactory.getSerializer(VectorEntity)
|
expect(unknown).toBeInstanceOf(UnknownKeysEntity)
|
||||||
|
expect(unknown).toMatchObject({
|
||||||
|
lookbehind: "",
|
||||||
|
A: [-1, -2, -3],
|
||||||
|
B: new UnknownKeysEntity({
|
||||||
|
lookbehind: "SomeFunction",
|
||||||
|
B1: "b1",
|
||||||
|
B2: new VectorEntity({ X: 101, Y: 102, Z: 103 }),
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
let vector = serializer.read("(X=1,Y=2,Z=3.5)")
|
test("VectorEntity", () => {
|
||||||
expect(vector).toBeInstanceOf(VectorEntity)
|
const serializer = SerializerFactory.getSerializer(VectorEntity)
|
||||||
expect(vector).toStrictEqual(new VectorEntity({
|
|
||||||
X: 1,
|
|
||||||
Y: 2,
|
|
||||||
Z: 3.5,
|
|
||||||
}))
|
|
||||||
|
|
||||||
vector = serializer.read("(X=10,Y=+20.88,Z=-30.54,)")
|
let vector = serializer.read("(X=1,Y=2,Z=3.5)")
|
||||||
expect(vector).toBeInstanceOf(VectorEntity)
|
expect(vector).toBeInstanceOf(VectorEntity)
|
||||||
expect(vector).toStrictEqual(new VectorEntity({
|
expect(vector).toStrictEqual(new VectorEntity({
|
||||||
X: 10,
|
X: 1,
|
||||||
Y: 20.88,
|
Y: 2,
|
||||||
Z: -30.54,
|
Z: 3.5,
|
||||||
}))
|
}))
|
||||||
|
|
||||||
vector = serializer.read(`(
|
vector = serializer.read("(X=10,Y=+20.88,Z=-30.54,)")
|
||||||
|
expect(vector).toBeInstanceOf(VectorEntity)
|
||||||
|
expect(vector).toStrictEqual(new VectorEntity({
|
||||||
|
X: 10,
|
||||||
|
Y: 20.88,
|
||||||
|
Z: -30.54,
|
||||||
|
}))
|
||||||
|
|
||||||
|
vector = serializer.read(`(
|
||||||
Z = -3.66 ,
|
Z = -3.66 ,
|
||||||
|
|
||||||
X
|
X
|
||||||
@@ -362,49 +368,48 @@ test.describe("Serializer", () => {
|
|||||||
-2
|
-2
|
||||||
,
|
,
|
||||||
)`)
|
)`)
|
||||||
expect(vector).toBeInstanceOf(VectorEntity)
|
expect(vector).toBeInstanceOf(VectorEntity)
|
||||||
expect(vector).toStrictEqual(new VectorEntity({
|
expect(vector).toStrictEqual(new VectorEntity({
|
||||||
X: -1,
|
X: -1,
|
||||||
Y: -2,
|
Y: -2,
|
||||||
Z: -3.66,
|
Z: -3.66,
|
||||||
}))
|
}))
|
||||||
|
|
||||||
expect(() => serializer.read("(X=1,Y=\"2\",Z=3)")).toThrow()
|
expect(() => serializer.read("(X=1,Y=\"2\",Z=3)")).toThrow()
|
||||||
expect(() => serializer.read("(X=1,Z=3)")).toThrow()
|
expect(() => serializer.read("(X=1,Z=3)")).toThrow()
|
||||||
expect(() => serializer.read("(X=1,Y=2,Unexpected=6,Z=3.5)")).toThrow()
|
expect(() => serializer.read("(X=1,Y=2,Unexpected=6,Z=3.5)")).toThrow()
|
||||||
})
|
})
|
||||||
|
|
||||||
test("Vector2DEntity", () => {
|
test("Vector2DEntity", () => {
|
||||||
let serializer = SerializerFactory.getSerializer(Vector2DEntity)
|
let serializer = SerializerFactory.getSerializer(Vector2DEntity)
|
||||||
|
|
||||||
let vector = serializer.read("(X=78,Y=56.3)")
|
let vector = serializer.read("(X=78,Y=56.3)")
|
||||||
expect(vector).toBeInstanceOf(Vector2DEntity)
|
expect(vector).toBeInstanceOf(Vector2DEntity)
|
||||||
expect(vector).toStrictEqual(new Vector2DEntity({
|
expect(vector).toStrictEqual(new Vector2DEntity({
|
||||||
X: 78,
|
X: 78,
|
||||||
Y: 56.3,
|
Y: 56.3,
|
||||||
}))
|
}))
|
||||||
|
|
||||||
vector = serializer.read("(X=+4.5,Y=-8.88,)")
|
vector = serializer.read("(X=+4.5,Y=-8.88,)")
|
||||||
expect(vector).toBeInstanceOf(Vector2DEntity)
|
expect(vector).toBeInstanceOf(Vector2DEntity)
|
||||||
expect(vector).toStrictEqual(new Vector2DEntity({
|
expect(vector).toStrictEqual(new Vector2DEntity({
|
||||||
X: 4.5,
|
X: 4.5,
|
||||||
Y: -8.88,
|
Y: -8.88,
|
||||||
}))
|
}))
|
||||||
|
|
||||||
vector = serializer.read(`(
|
vector = serializer.read(`(
|
||||||
Y = +93.004 ,
|
Y = +93.004 ,
|
||||||
|
|
||||||
X
|
X
|
||||||
= 0 ,
|
= 0 ,
|
||||||
)`)
|
)`)
|
||||||
expect(vector).toBeInstanceOf(Vector2DEntity)
|
expect(vector).toBeInstanceOf(Vector2DEntity)
|
||||||
expect(vector).toStrictEqual(new Vector2DEntity({
|
expect(vector).toStrictEqual(new Vector2DEntity({
|
||||||
X: 0,
|
X: 0,
|
||||||
Y: 93.004,
|
Y: 93.004,
|
||||||
}))
|
}))
|
||||||
|
|
||||||
expect(() => serializer.read("(X=1,Y=\"2\")")).toThrow()
|
expect(() => serializer.read("(X=1,Y=\"2\")")).toThrow()
|
||||||
expect(() => serializer.read("(X=1)")).toThrow()
|
expect(() => serializer.read("(X=1)")).toThrow()
|
||||||
expect(() => serializer.read("(X=777, Y=555, Unexpected=6, HH=2)")).toThrow()
|
expect(() => serializer.read("(X=777, Y=555, Unexpected=6, HH=2)")).toThrow()
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
import Utility from "../js/Utility.js"
|
|
||||||
import { expect, test } from "./fixtures/test.js"
|
import { expect, test } from "./fixtures/test.js"
|
||||||
|
import Utility from "../js/Utility.js"
|
||||||
|
|
||||||
|
test.describe.configure({ mode: "parallel" })
|
||||||
|
|
||||||
test("clamp method test", () => {
|
test("clamp method test", () => {
|
||||||
expect(Utility.clamp(5, 1, 11)).toBe(5)
|
expect(Utility.clamp(5, 1, 11)).toBe(5)
|
||||||
|
|||||||
Reference in New Issue
Block a user