import { __extends, __awaiter, __generator } from 'tslib';
import { HarnessPredicate, ComponentHarness } from '@angular/cdk/testing';

/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
/**
 * Harness for interacting with a standard Material badge in tests.
 * @dynamic
 */
var MatBadgeHarness = /** @class */ (function (_super) {
    __extends(MatBadgeHarness, _super);
    function MatBadgeHarness() {
        var _this = _super !== null && _super.apply(this, arguments) || this;
        _this._badgeElement = _this.locatorFor('.mat-badge-content');
        return _this;
    }
    /**
     * Gets a `HarnessPredicate` that can be used to search for a badge with specific attributes.
     * @param options Options for narrowing the search:
     *   - `text` finds a badge host with a particular text.
     * @return a `HarnessPredicate` configured with the given options.
     */
    MatBadgeHarness.with = function (options) {
        if (options === void 0) { options = {}; }
        return new HarnessPredicate(MatBadgeHarness, options)
            .addOption('text', options.text, function (harness, text) { return HarnessPredicate.stringMatches(harness.getText(), text); });
    };
    /** Gets a promise for the badge text. */
    MatBadgeHarness.prototype.getText = function () {
        return __awaiter(this, void 0, void 0, function () {
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0: return [4 /*yield*/, this._badgeElement()];
                    case 1: return [2 /*return*/, (_a.sent()).text()];
                }
            });
        });
    };
    /** Gets whether the badge is overlapping the content. */
    MatBadgeHarness.prototype.isOverlapping = function () {
        return __awaiter(this, void 0, void 0, function () {
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0: return [4 /*yield*/, this.host()];
                    case 1: return [2 /*return*/, (_a.sent()).hasClass('mat-badge-overlap')];
                }
            });
        });
    };
    /** Gets the position of the badge. */
    MatBadgeHarness.prototype.getPosition = function () {
        return __awaiter(this, void 0, void 0, function () {
            var host, result;
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0: return [4 /*yield*/, this.host()];
                    case 1:
                        host = _a.sent();
                        result = '';
                        return [4 /*yield*/, host.hasClass('mat-badge-above')];
                    case 2:
                        if (!_a.sent()) return [3 /*break*/, 3];
                        result += 'above';
                        return [3 /*break*/, 5];
                    case 3: return [4 /*yield*/, host.hasClass('mat-badge-below')];
                    case 4:
                        if (_a.sent()) {
                            result += 'below';
                        }
                        _a.label = 5;
                    case 5: return [4 /*yield*/, host.hasClass('mat-badge-before')];
                    case 6:
                        if (!_a.sent()) return [3 /*break*/, 7];
                        result += ' before';
                        return [3 /*break*/, 9];
                    case 7: return [4 /*yield*/, host.hasClass('mat-badge-after')];
                    case 8:
                        if (_a.sent()) {
                            result += ' after';
                        }
                        _a.label = 9;
                    case 9: return [2 /*return*/, result.trim()];
                }
            });
        });
    };
    /** Gets the size of the badge. */
    MatBadgeHarness.prototype.getSize = function () {
        return __awaiter(this, void 0, void 0, function () {
            var host;
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0: return [4 /*yield*/, this.host()];
                    case 1:
                        host = _a.sent();
                        return [4 /*yield*/, host.hasClass('mat-badge-small')];
                    case 2:
                        if (!_a.sent()) return [3 /*break*/, 3];
                        return [2 /*return*/, 'small'];
                    case 3: return [4 /*yield*/, host.hasClass('mat-badge-large')];
                    case 4:
                        if (_a.sent()) {
                            return [2 /*return*/, 'large'];
                        }
                        _a.label = 5;
                    case 5: return [2 /*return*/, 'medium'];
                }
            });
        });
    };
    /** Gets whether the badge is hidden. */
    MatBadgeHarness.prototype.isHidden = function () {
        return __awaiter(this, void 0, void 0, function () {
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0: return [4 /*yield*/, this.host()];
                    case 1: return [2 /*return*/, (_a.sent()).hasClass('mat-badge-hidden')];
                }
            });
        });
    };
    /** Gets whether the badge is disabled. */
    MatBadgeHarness.prototype.isDisabled = function () {
        return __awaiter(this, void 0, void 0, function () {
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0: return [4 /*yield*/, this.host()];
                    case 1: return [2 /*return*/, (_a.sent()).hasClass('mat-badge-disabled')];
                }
            });
        });
    };
    MatBadgeHarness.hostSelector = '.mat-badge';
    return MatBadgeHarness;
}(ComponentHarness));

/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */

/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */

export { MatBadgeHarness };
//# sourceMappingURL=testing.js.map