@selfage/message
Version:
Runtime lib for generated messages to parse, copy, serialize and deserialize messages.
42 lines • 5.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.eqMessage = eqMessage;
exports.eqMessageField = eqMessageField;
const test_matcher_1 = require("@selfage/test_matcher");
function eqMessage(expected, descriptor) {
return (actual) => {
if (expected === undefined) {
(0, test_matcher_1.assertThat)(actual, (0, test_matcher_1.eq)(undefined), "nullity");
return;
}
(0, test_matcher_1.assert)(Boolean(actual), `to not be null`, `null`);
let expectedAny = expected;
let actualAny = actual;
for (let fieldDescriptor of descriptor.fields) {
let fieldMatcher;
if (!fieldDescriptor.isArray) {
fieldMatcher = eqMessageField(expectedAny[fieldDescriptor.name], fieldDescriptor);
}
else {
let eqElements;
if (expectedAny[fieldDescriptor.name] !== undefined) {
eqElements = new Array();
for (let element of expectedAny[fieldDescriptor.name]) {
eqElements.push(eqMessageField(element, fieldDescriptor));
}
}
fieldMatcher = (0, test_matcher_1.isArray)(eqElements);
}
(0, test_matcher_1.assertThat)(actualAny[fieldDescriptor.name], fieldMatcher, `${fieldDescriptor.name} field`);
}
};
}
function eqMessageField(expectedField, fieldDescriptor) {
if (fieldDescriptor.primitiveType || fieldDescriptor.enumType) {
return (0, test_matcher_1.eq)(expectedField);
}
else {
return eqMessage(expectedField, fieldDescriptor.messageType);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9tYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVzdF9tYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0EsOEJBb0NDO0FBRUQsd0NBU0M7QUF2REQsd0RBTStCO0FBRS9CLFNBQWdCLFNBQVMsQ0FDdkIsUUFBdUIsRUFDdkIsVUFBZ0M7SUFFaEMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ2hCLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNCLElBQUEseUJBQVUsRUFBQyxNQUFNLEVBQUUsSUFBQSxpQkFBRSxFQUFDLFNBQVMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzdDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBQSxxQkFBTSxFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRCxJQUFJLFdBQVcsR0FBRyxRQUFlLENBQUM7UUFDbEMsSUFBSSxTQUFTLEdBQUcsTUFBYSxDQUFDO1FBQzlCLEtBQUssSUFBSSxlQUFlLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlDLElBQUksWUFBMEIsQ0FBQztZQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixZQUFZLEdBQUcsY0FBYyxDQUMzQixXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUNqQyxlQUFlLENBQ2hCLENBQUM7WUFDSixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxVQUErQixDQUFDO2dCQUNwQyxJQUFJLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ3BELFVBQVUsR0FBRyxJQUFJLEtBQUssRUFBZ0IsQ0FBQztvQkFDdkMsS0FBSyxJQUFJLE9BQU8sSUFBSSxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ3RELFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO29CQUM1RCxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsWUFBWSxHQUFHLElBQUEsc0JBQU8sRUFBQyxVQUFVLENBQUMsQ0FBQztZQUNyQyxDQUFDO1lBQ0QsSUFBQSx5QkFBVSxFQUNSLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQy9CLFlBQVksRUFDWixHQUFHLGVBQWUsQ0FBQyxJQUFJLFFBQVEsQ0FDaEMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsY0FBYyxDQUM1QixhQUFrQixFQUNsQixlQUE2QjtJQUU3QixJQUFJLGVBQWUsQ0FBQyxhQUFhLElBQUksZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlELE9BQU8sSUFBQSxpQkFBRSxFQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxTQUFTLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lc3NhZ2VEZXNjcmlwdG9yLCBNZXNzYWdlRmllbGQgfSBmcm9tIFwiLi9kZXNjcmlwdG9yXCI7XG5pbXBvcnQge1xuICBNYXRjaEZuLFxuICBhc3NlcnQsXG4gIGFzc2VydFRoYXQsXG4gIGVxLFxuICBpc0FycmF5LFxufSBmcm9tIFwiQHNlbGZhZ2UvdGVzdF9tYXRjaGVyXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBlcU1lc3NhZ2U8VD4oXG4gIGV4cGVjdGVkOiBUIHwgdW5kZWZpbmVkLFxuICBkZXNjcmlwdG9yOiBNZXNzYWdlRGVzY3JpcHRvcjxUPlxuKTogTWF0Y2hGbjxUPiB7XG4gIHJldHVybiAoYWN0dWFsKSA9PiB7XG4gICAgaWYgKGV4cGVjdGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGFzc2VydFRoYXQoYWN0dWFsLCBlcSh1bmRlZmluZWQpLCBcIm51bGxpdHlcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGFzc2VydChCb29sZWFuKGFjdHVhbCksIGB0byBub3QgYmUgbnVsbGAsIGBudWxsYCk7XG4gICAgbGV0IGV4cGVjdGVkQW55ID0gZXhwZWN0ZWQgYXMgYW55O1xuICAgIGxldCBhY3R1YWxBbnkgPSBhY3R1YWwgYXMgYW55O1xuICAgIGZvciAobGV0IGZpZWxkRGVzY3JpcHRvciBvZiBkZXNjcmlwdG9yLmZpZWxkcykge1xuICAgICAgbGV0IGZpZWxkTWF0Y2hlcjogTWF0Y2hGbjxhbnk+O1xuICAgICAgaWYgKCFmaWVsZERlc2NyaXB0b3IuaXNBcnJheSkge1xuICAgICAgICBmaWVsZE1hdGNoZXIgPSBlcU1lc3NhZ2VGaWVsZChcbiAgICAgICAgICBleHBlY3RlZEFueVtmaWVsZERlc2NyaXB0b3IubmFtZV0sXG4gICAgICAgICAgZmllbGREZXNjcmlwdG9yXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgZXFFbGVtZW50czogQXJyYXk8TWF0Y2hGbjxhbnk+PjtcbiAgICAgICAgaWYgKGV4cGVjdGVkQW55W2ZpZWxkRGVzY3JpcHRvci5uYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZXFFbGVtZW50cyA9IG5ldyBBcnJheTxNYXRjaEZuPGFueT4+KCk7XG4gICAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBleHBlY3RlZEFueVtmaWVsZERlc2NyaXB0b3IubmFtZV0pIHtcbiAgICAgICAgICAgIGVxRWxlbWVudHMucHVzaChlcU1lc3NhZ2VGaWVsZChlbGVtZW50LCBmaWVsZERlc2NyaXB0b3IpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZmllbGRNYXRjaGVyID0gaXNBcnJheShlcUVsZW1lbnRzKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydFRoYXQoXG4gICAgICAgIGFjdHVhbEFueVtmaWVsZERlc2NyaXB0b3IubmFtZV0sXG4gICAgICAgIGZpZWxkTWF0Y2hlcixcbiAgICAgICAgYCR7ZmllbGREZXNjcmlwdG9yLm5hbWV9IGZpZWxkYFxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcU1lc3NhZ2VGaWVsZChcbiAgZXhwZWN0ZWRGaWVsZDogYW55LFxuICBmaWVsZERlc2NyaXB0b3I6IE1lc3NhZ2VGaWVsZFxuKTogTWF0Y2hGbjxhbnk+IHtcbiAgaWYgKGZpZWxkRGVzY3JpcHRvci5wcmltaXRpdmVUeXBlIHx8IGZpZWxkRGVzY3JpcHRvci5lbnVtVHlwZSkge1xuICAgIHJldHVybiBlcShleHBlY3RlZEZpZWxkKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZXFNZXNzYWdlKGV4cGVjdGVkRmllbGQsIGZpZWxkRGVzY3JpcHRvci5tZXNzYWdlVHlwZSk7XG4gIH1cbn1cbiJdfQ==