/*
 * Copyright (c) 2024 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import assert from 'assert';
enum g {
    prop1 = 1,
    q = 2
}
assert(g.prop1 === 1);
assert(g.q === 2);
enum h {
    up = 1,
    u,
    left,
    right
}
const direction: h = h.up;
assert(direction === 1);
assert(h.up === 1);
assert(h.u === 2);
assert(h.left === 3);
assert(h.right === 4);
assert(h[1] === 'up');
assert(h[3] === 'left');
assert(h[4] === 'right');
var i;
(function (p) {
    p[p["prop1"] = 1] = "prop1";
    p[p["q"] = 2] = "prop2";
})(i || (i = {}));
assert(i.prop1 === 1);
assert(i.q === 2);
assert(i[1] === 'prop1');
assert(i[2] === 'prop2');
let j = 1;
enum k {
    prop1 = 1,
    q = prop1 + j + 1
}
assert(k.prop1 === 1);
assert(k.q === 3);
assert(k[1] === 'prop1');
enum l {
    a = 2,
    b = 3
}
assert(l.a === 2);
assert(l.b === 3);
assert(l[2] === 'a');
assert(l[3] === 'b');
enum m {
    a = (1).valueOf(),
    b = l.a,
    c = l.b.valueOf()
}
assert(m.a === 1);
assert(m.b === 2);
assert(m.c === 3);
assert(m[1] === 'a');
assert(m[2] === 'b');
assert(m[3] === 'c');
module o {
    export namespace N {
        export enum E1 {
            a = 1
        }
    }
}
assert(o.N.E1.a === 1);
assert(o.N.E1[1] === 'a');
module o {
    export namespace N {
        export enum E1 {
            b = o.N.E1.a + 1
        }
    }
}
assert(o.N.E1.b === 2);
assert(o.N.E1[2] === 'b');
export enum MouseButton {
    LEFT_BUTTON = 1,
    RIGHT_BUTTON = 2,
    MIDDLE_BUTTON = 4,
    XBUTTON1_BUTTON = 5,
    XBUTTON2_BUTTON = 6,
    NO_BUTTON = 0
}
export const DOMMouseButton = {
    '-1': MouseButton.NO_BUTTON,
    '0': MouseButton.LEFT_BUTTON,
    '1': MouseButton.MIDDLE_BUTTON,
    '2': MouseButton.RIGHT_BUTTON,
    '3': MouseButton.XBUTTON1_BUTTON,
    '4': MouseButton.XBUTTON2_BUTTON,
};
assert(DOMMouseButton['-1'] === 0);
assert(DOMMouseButton['0'] === 1);
assert(DOMMouseButton['1'] === 4);
assert(DOMMouseButton['2'] === 2);
assert(DOMMouseButton['3'] === 5);
assert(DOMMouseButton['4'] === 6);
export enum Foo2 {
    A = 1 << 1,
    B = 1 << 2
}
assert(Foo2.A === 2);
assert(Foo2.B === 4);
assert(Foo2[2] === 'A');
assert(Foo2[4] === 'B');
