1/* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import { 17 expect 18} from 'chai'; 19import 'mocha'; 20import { CmdOptions } from '../../src/cmdOptions'; 21import { 22 Returnundefined, 23 Stglobalvar, 24 Tryldglobalbyname, 25 Imm, 26 Lda, 27 Mov, 28 Sta, 29 Defineclasswithbuffer, 30 Sttoglobalrecord, 31 Newobjrange, 32 VReg, 33 IRNode 34} from "../../src/irnodes"; 35import { checkInstructions, SnippetCompiler } from "../utils/base"; 36import { creatAstFromSnippet } from "../utils/asthelper" 37import { PandaGen } from '../../src/pandagen'; 38 39describe("CommaListExpression", function () { 40 it("computedPropertyName", function () { 41 CmdOptions.parseUserCmd([""]); 42 let snippetCompiler = new SnippetCompiler(); 43 snippetCompiler.compileAfter(" \ 44 class Test { \ 45 #filed1; \ 46 #filed2; \ 47 #filed3; \ 48 #filed4; \ 49 #filed5; \ 50 #filed6; \ 51 #filed7; \ 52 #filed8; \ 53 #filed9; \ 54 #filed10; \ 55 #filed11; \ 56 } \ 57 ", 58 "test.ts"); 59 IRNode.pg = new PandaGen("foo", creatAstFromSnippet(" \ 60 class Test { \ 61 #filed1; \ 62 #filed2; \ 63 #filed3; \ 64 #filed4; \ 65 #filed5; \ 66 #filed6; \ 67 #filed7; \ 68 #filed8; \ 69 #filed9; \ 70 #filed10; \ 71 #filed11; \ 72 } \ 73 "), 0, undefined); 74 let insns = snippetCompiler.getGlobalInsns(); 75 let expected = [ 76 new Mov(new VReg(), new VReg()), 77 new Defineclasswithbuffer(new Imm(0), "UnitTest.#1#Test", "test_1", new Imm(0), new VReg()), 78 new Sta(new VReg()), 79 new Lda(new VReg()), 80 new Sttoglobalrecord(new Imm(1), "Test"), 81 new Tryldglobalbyname(new Imm(2), 'WeakMap'), 82 new Sta(new VReg()), 83 new Newobjrange(new Imm(3), new Imm(1), [new VReg()]), 84 new Stglobalvar(new Imm(5), '_filed1#a'), 85 new Tryldglobalbyname(new Imm(6), 'WeakMap'), 86 new Sta(new VReg()), 87 new Newobjrange(new Imm(7), new Imm(1), [new VReg()]), 88 new Stglobalvar(new Imm(9), '_filed2#b'), 89 new Tryldglobalbyname(new Imm(10), 'WeakMap'), 90 new Sta(new VReg()), 91 new Newobjrange(new Imm(11), new Imm(1), [new VReg()]), 92 new Stglobalvar(new Imm(13), '_filed3#c'), 93 new Tryldglobalbyname(new Imm(14), 'WeakMap'), 94 new Sta(new VReg()), 95 new Newobjrange(new Imm(15), new Imm(1), [new VReg()]), 96 new Stglobalvar(new Imm(17), '_filed4#d'), 97 new Tryldglobalbyname(new Imm(18), 'WeakMap'), 98 new Sta(new VReg()), 99 new Newobjrange(new Imm(19), new Imm(1), [new VReg()]), 100 new Stglobalvar(new Imm(21), '_filed5#e'), 101 new Tryldglobalbyname(new Imm(22), 'WeakMap'), 102 new Sta(new VReg()), 103 new Newobjrange(new Imm(23), new Imm(1), [new VReg()]), 104 new Stglobalvar(new Imm(25), '_filed6#f'), 105 new Tryldglobalbyname(new Imm(26), 'WeakMap'), 106 new Sta(new VReg()), 107 new Newobjrange(new Imm(27), new Imm(1), [new VReg()]), 108 new Stglobalvar(new Imm(29), '_filed7#g'), 109 new Tryldglobalbyname(new Imm(30), 'WeakMap'), 110 new Sta(new VReg()), 111 new Newobjrange(new Imm(31), new Imm(1), [new VReg()]), 112 new Stglobalvar(new Imm(33), '_filed8#h'), 113 new Tryldglobalbyname(new Imm(34), 'WeakMap'), 114 new Sta(new VReg()), 115 new Newobjrange(new Imm(35), new Imm(1), [new VReg()]), 116 new Stglobalvar(new Imm(37), '_filed9#i'), 117 new Tryldglobalbyname(new Imm(38), 'WeakMap'), 118 new Sta(new VReg()), 119 new Newobjrange(new Imm(39), new Imm(1), [new VReg()]), 120 new Stglobalvar(new Imm(41), '_filed10#j'), 121 new Tryldglobalbyname(new Imm(42), 'WeakMap'), 122 new Sta(new VReg()), 123 new Newobjrange(new Imm(43), new Imm(1), [new VReg()]), 124 new Stglobalvar(new Imm(45), '_filed11#k'), 125 new Returnundefined() 126 ] 127 expect(checkInstructions(insns, expected)).to.be.true; 128 }); 129 130}); 131