@selfage/observable
Version:
Runtime lib for generated observables.
53 lines • 7.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.eqObservableField = exports.eqObservable = void 0;
const descriptor_1 = require("./descriptor");
const test_matcher_1 = require("@selfage/test_matcher");
const test_matcher_2 = require("@selfage/message/test_matcher");
const test_matcher_3 = require("@selfage/observable_array/test_matcher");
function eqObservable(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.asArray) {
fieldMatcher = eqObservableField(expectedAny[fieldDescriptor.name], fieldDescriptor);
}
else {
let eqElements;
if (expectedAny[fieldDescriptor.name] !== undefined) {
eqElements = new Array();
for (let element of expectedAny[fieldDescriptor.name]) {
eqElements.push(eqObservableField(element, fieldDescriptor));
}
}
switch (fieldDescriptor.asArray) {
case descriptor_1.ArrayType.NORMAL:
fieldMatcher = (0, test_matcher_1.eqArray)(eqElements);
break;
case descriptor_1.ArrayType.OBSERVABLE:
fieldMatcher = (0, test_matcher_3.eqObservableArray)(eqElements);
break;
}
}
(0, test_matcher_1.assertThat)(actualAny[fieldDescriptor.name], fieldMatcher, `${fieldDescriptor.name} field`);
}
};
}
exports.eqObservable = eqObservable;
function eqObservableField(expectedField, fieldDescriptor) {
if (fieldDescriptor.observableType) {
return eqObservable(expectedField, fieldDescriptor.observableType);
}
else {
return (0, test_matcher_2.eqMessageField)(expectedField, fieldDescriptor);
}
}
exports.eqObservableField = eqObservableField;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9tYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVzdF9tYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFnRjtBQUNoRix3REFNK0I7QUFDL0IsZ0VBQStEO0FBQy9ELHlFQUEyRTtBQUUzRSxTQUFnQixZQUFZLENBQzFCLFFBQXVCLEVBQ3ZCLFVBQW1DO0lBRW5DLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNoQixJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDMUIsSUFBQSx5QkFBVSxFQUFDLE1BQU0sRUFBRSxJQUFBLGlCQUFFLEVBQUMsU0FBUyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDN0MsT0FBTztTQUNSO1FBQ0QsSUFBQSxxQkFBTSxFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRCxJQUFJLFdBQVcsR0FBRyxRQUFlLENBQUM7UUFDbEMsSUFBSSxTQUFTLEdBQUcsTUFBYSxDQUFDO1FBQzlCLEtBQUssSUFBSSxlQUFlLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUM3QyxJQUFJLFlBQTBCLENBQUM7WUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUU7Z0JBQzVCLFlBQVksR0FBRyxpQkFBaUIsQ0FDOUIsV0FBVyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFDakMsZUFBZSxDQUNoQixDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxVQUErQixDQUFDO2dCQUNwQyxJQUFJLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO29CQUNuRCxVQUFVLEdBQUcsSUFBSSxLQUFLLEVBQWdCLENBQUM7b0JBQ3ZDLEtBQUssSUFBSSxPQUFPLElBQUksV0FBVyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDckQsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztxQkFDOUQ7aUJBQ0Y7Z0JBQ0QsUUFBUSxlQUFlLENBQUMsT0FBTyxFQUFFO29CQUMvQixLQUFLLHNCQUFTLENBQUMsTUFBTTt3QkFDbkIsWUFBWSxHQUFHLElBQUEsc0JBQU8sRUFBQyxVQUFVLENBQUMsQ0FBQzt3QkFDbkMsTUFBTTtvQkFDUixLQUFLLHNCQUFTLENBQUMsVUFBVTt3QkFDdkIsWUFBWSxHQUFHLElBQUEsZ0NBQWlCLEVBQUMsVUFBVSxDQUFDLENBQUM7d0JBQzdDLE1BQU07aUJBQ1Q7YUFDRjtZQUNELElBQUEseUJBQVUsRUFDUixTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUMvQixZQUFZLEVBQ1osR0FBRyxlQUFlLENBQUMsSUFBSSxRQUFRLENBQ2hDLENBQUM7U0FDSDtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUEzQ0Qsb0NBMkNDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQy9CLGFBQWtCLEVBQ2xCLGVBQWdDO0lBRWhDLElBQUksZUFBZSxDQUFDLGNBQWMsRUFBRTtRQUNsQyxPQUFPLFlBQVksQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQ3BFO1NBQU07UUFDTCxPQUFPLElBQUEsNkJBQWMsRUFBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7S0FDdkQ7QUFDSCxDQUFDO0FBVEQsOENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlRGVzY3JpcHRvciwgT2JzZXJ2YWJsZUZpZWxkLCBBcnJheVR5cGUgfSBmcm9tIFwiLi9kZXNjcmlwdG9yXCI7XG5pbXBvcnQge1xuICBNYXRjaEZuLFxuICBhc3NlcnRUaGF0LFxuICBlcSxcbiAgYXNzZXJ0LFxuICBlcUFycmF5LFxufSBmcm9tIFwiQHNlbGZhZ2UvdGVzdF9tYXRjaGVyXCI7XG5pbXBvcnQgeyBlcU1lc3NhZ2VGaWVsZCB9IGZyb20gXCJAc2VsZmFnZS9tZXNzYWdlL3Rlc3RfbWF0Y2hlclwiO1xuaW1wb3J0IHsgZXFPYnNlcnZhYmxlQXJyYXkgfSBmcm9tIFwiQHNlbGZhZ2Uvb2JzZXJ2YWJsZV9hcnJheS90ZXN0X21hdGNoZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGVxT2JzZXJ2YWJsZTxUPihcbiAgZXhwZWN0ZWQ6IFQgfCB1bmRlZmluZWQsXG4gIGRlc2NyaXB0b3I6IE9ic2VydmFibGVEZXNjcmlwdG9yPFQ+XG4pOiBNYXRjaEZuPFQ+IHtcbiAgcmV0dXJuIChhY3R1YWwpID0+IHtcbiAgICBpZiAoZXhwZWN0ZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYXNzZXJ0VGhhdChhY3R1YWwsIGVxKHVuZGVmaW5lZCksIFwibnVsbGl0eVwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXNzZXJ0KEJvb2xlYW4oYWN0dWFsKSwgYHRvIG5vdCBiZSBudWxsYCwgYG51bGxgKTtcbiAgICBsZXQgZXhwZWN0ZWRBbnkgPSBleHBlY3RlZCBhcyBhbnk7XG4gICAgbGV0IGFjdHVhbEFueSA9IGFjdHVhbCBhcyBhbnk7XG4gICAgZm9yIChsZXQgZmllbGREZXNjcmlwdG9yIG9mIGRlc2NyaXB0b3IuZmllbGRzKSB7XG4gICAgICBsZXQgZmllbGRNYXRjaGVyOiBNYXRjaEZuPGFueT47XG4gICAgICBpZiAoIWZpZWxkRGVzY3JpcHRvci5hc0FycmF5KSB7XG4gICAgICAgIGZpZWxkTWF0Y2hlciA9IGVxT2JzZXJ2YWJsZUZpZWxkKFxuICAgICAgICAgIGV4cGVjdGVkQW55W2ZpZWxkRGVzY3JpcHRvci5uYW1lXSxcbiAgICAgICAgICBmaWVsZERlc2NyaXB0b3JcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBlcUVsZW1lbnRzOiBBcnJheTxNYXRjaEZuPGFueT4+O1xuICAgICAgICBpZiAoZXhwZWN0ZWRBbnlbZmllbGREZXNjcmlwdG9yLm5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBlcUVsZW1lbnRzID0gbmV3IEFycmF5PE1hdGNoRm48YW55Pj4oKTtcbiAgICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGV4cGVjdGVkQW55W2ZpZWxkRGVzY3JpcHRvci5uYW1lXSkge1xuICAgICAgICAgICAgZXFFbGVtZW50cy5wdXNoKGVxT2JzZXJ2YWJsZUZpZWxkKGVsZW1lbnQsIGZpZWxkRGVzY3JpcHRvcikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGZpZWxkRGVzY3JpcHRvci5hc0FycmF5KSB7XG4gICAgICAgICAgY2FzZSBBcnJheVR5cGUuTk9STUFMOlxuICAgICAgICAgICAgZmllbGRNYXRjaGVyID0gZXFBcnJheShlcUVsZW1lbnRzKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgQXJyYXlUeXBlLk9CU0VSVkFCTEU6XG4gICAgICAgICAgICBmaWVsZE1hdGNoZXIgPSBlcU9ic2VydmFibGVBcnJheShlcUVsZW1lbnRzKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhc3NlcnRUaGF0KFxuICAgICAgICBhY3R1YWxBbnlbZmllbGREZXNjcmlwdG9yLm5hbWVdLFxuICAgICAgICBmaWVsZE1hdGNoZXIsXG4gICAgICAgIGAke2ZpZWxkRGVzY3JpcHRvci5uYW1lfSBmaWVsZGBcbiAgICAgICk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXFPYnNlcnZhYmxlRmllbGQoXG4gIGV4cGVjdGVkRmllbGQ6IGFueSxcbiAgZmllbGREZXNjcmlwdG9yOiBPYnNlcnZhYmxlRmllbGRcbik6IE1hdGNoRm48YW55PiB7XG4gIGlmIChmaWVsZERlc2NyaXB0b3Iub2JzZXJ2YWJsZVR5cGUpIHtcbiAgICByZXR1cm4gZXFPYnNlcnZhYmxlKGV4cGVjdGVkRmllbGQsIGZpZWxkRGVzY3JpcHRvci5vYnNlcnZhYmxlVHlwZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGVxTWVzc2FnZUZpZWxkKGV4cGVjdGVkRmllbGQsIGZpZWxkRGVzY3JpcHRvcik7XG4gIH1cbn1cbiJdfQ==