14514f5e3Sopenharmony_ci/* 24514f5e3Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 34514f5e3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 44514f5e3Sopenharmony_ci * you may not use this file except in compliance with the License. 54514f5e3Sopenharmony_ci * You may obtain a copy of the License at 64514f5e3Sopenharmony_ci * 74514f5e3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 84514f5e3Sopenharmony_ci * 94514f5e3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 104514f5e3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 114514f5e3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124514f5e3Sopenharmony_ci * See the License for the specific language governing permissions and 134514f5e3Sopenharmony_ci * limitations under the License. 144514f5e3Sopenharmony_ci */ 154514f5e3Sopenharmony_ci 164514f5e3Sopenharmony_ci/* 174514f5e3Sopenharmony_ci * @tc.name:ecmastringtable 184514f5e3Sopenharmony_ci * @tc.desc:test string 194514f5e3Sopenharmony_ci * @tc.type: FUNC 204514f5e3Sopenharmony_ci * @tc.require: issueI5NO8G 214514f5e3Sopenharmony_ci */ 224514f5e3Sopenharmony_ci// Using to test the concat interface of EcmaStringTable about intern string and non-intern string 234514f5e3Sopenharmony_ci{ 244514f5e3Sopenharmony_ci let REGISTRY = Symbol(); 254514f5e3Sopenharmony_ci function System() { 264514f5e3Sopenharmony_ci this[REGISTRY] = {}; 274514f5e3Sopenharmony_ci } 284514f5e3Sopenharmony_ci function getOrCreateLoad(loader, id) { 294514f5e3Sopenharmony_ci let load = loader[REGISTRY][id]; 304514f5e3Sopenharmony_ci print("id: " + id + " - load: "+ load); 314514f5e3Sopenharmony_ci load = loader[REGISTRY][id] = {}; 324514f5e3Sopenharmony_ci return load; 334514f5e3Sopenharmony_ci } 344514f5e3Sopenharmony_ci 354514f5e3Sopenharmony_ci // non-intern + non-intern 364514f5e3Sopenharmony_ci let head1 = "no-".concat("schema:"); 374514f5e3Sopenharmony_ci let tail1 = "/src/".concat("xxx-js/instantiated-1af0bf5b.js"); 384514f5e3Sopenharmony_ci let key1 = head1 + tail1; 394514f5e3Sopenharmony_ci let key2 = head1 + tail1; 404514f5e3Sopenharmony_ci 414514f5e3Sopenharmony_ci // intern + intern 424514f5e3Sopenharmony_ci let key3 = "no-schema:/src/xxx-js/instantiation.js"; 434514f5e3Sopenharmony_ci let key4 = "no-schema:" + "/src/xxx-js/instantiation.js"; 444514f5e3Sopenharmony_ci 454514f5e3Sopenharmony_ci // non-intern + intern 464514f5e3Sopenharmony_ci let head2 = "no-".concat("schema:"); 474514f5e3Sopenharmony_ci let tail2 = "/src/xxx-js/cc.js"; 484514f5e3Sopenharmony_ci let key5 = "no-schema:" + "/src/xxx-js/cc.js"; 494514f5e3Sopenharmony_ci let key6 = head2 + tail2; 504514f5e3Sopenharmony_ci 514514f5e3Sopenharmony_ci // intern + non-intern 524514f5e3Sopenharmony_ci let head3 = "no-schema:"; 534514f5e3Sopenharmony_ci let tail3 = "/src".concat("/instantiated-1af0bf5b.js"); 544514f5e3Sopenharmony_ci let key7 = "no-schema:" + "/src/instantiated-1af0bf5b.js"; 554514f5e3Sopenharmony_ci let key8 = head3 + tail3; 564514f5e3Sopenharmony_ci 574514f5e3Sopenharmony_ci // non-intern + non-intern 584514f5e3Sopenharmony_ci let numhead1 = "12".concat("022"); 594514f5e3Sopenharmony_ci let numtail1 = "4".concat("21"); 604514f5e3Sopenharmony_ci let numkey1 = numhead1 + numtail1; 614514f5e3Sopenharmony_ci let numkey2 = numhead1 + numtail1; 624514f5e3Sopenharmony_ci 634514f5e3Sopenharmony_ci // intern + intern 644514f5e3Sopenharmony_ci let numkey3 = "123420002"; 654514f5e3Sopenharmony_ci let numkey4 = "12342" + "0002"; 664514f5e3Sopenharmony_ci 674514f5e3Sopenharmony_ci // non-intern + intern 684514f5e3Sopenharmony_ci let numhead2 = "90".concat("88"); 694514f5e3Sopenharmony_ci let numtail2 = "90"; 704514f5e3Sopenharmony_ci let numkey5 = "90" + "8890"; 714514f5e3Sopenharmony_ci let numkey6 = numhead2 + numtail2; 724514f5e3Sopenharmony_ci 734514f5e3Sopenharmony_ci // intern + non-intern 744514f5e3Sopenharmony_ci let numhead3 = "90880"; 754514f5e3Sopenharmony_ci let numtail3 = "0".concat("0"); 764514f5e3Sopenharmony_ci let numkey7 = "90880" + "00"; 774514f5e3Sopenharmony_ci let numkey8 = numhead3 + numtail3; 784514f5e3Sopenharmony_ci 794514f5e3Sopenharmony_ci // intern + intern 804514f5e3Sopenharmony_ci let numkey9 = "999999999"; 814514f5e3Sopenharmony_ci let numkey10 = "9999".concat("99999"); 824514f5e3Sopenharmony_ci 834514f5e3Sopenharmony_ci // intern + intern 844514f5e3Sopenharmony_ci let numkey11 = "1000000000"; 854514f5e3Sopenharmony_ci let numkey12 = "10".concat("00000000"); 864514f5e3Sopenharmony_ci 874514f5e3Sopenharmony_ci // intern + intern 884514f5e3Sopenharmony_ci let numkey13 = "0100000"; 894514f5e3Sopenharmony_ci let numkey14 = "010".concat("0000"); 904514f5e3Sopenharmony_ci 914514f5e3Sopenharmony_ci let keyArray = [key1, key3, key5, key7, numkey1, numkey3, numkey5, numkey7, numkey9, numkey11, numkey13]; 924514f5e3Sopenharmony_ci let system = new System(); 934514f5e3Sopenharmony_ci for (let i = 0; i < keyArray.length; i++) { 944514f5e3Sopenharmony_ci getOrCreateLoad(system, keyArray[i]); 954514f5e3Sopenharmony_ci } 964514f5e3Sopenharmony_ci 974514f5e3Sopenharmony_ci print("key1 === key2: ", key1 === key2); 984514f5e3Sopenharmony_ci print("key3 === key4: ", key3 === key4); 994514f5e3Sopenharmony_ci print("key5 === key6: ", key5 === key6); 1004514f5e3Sopenharmony_ci print("key7 === key8: ", key7 === key8); 1014514f5e3Sopenharmony_ci getOrCreateLoad(system, key2); 1024514f5e3Sopenharmony_ci getOrCreateLoad(system, key4); 1034514f5e3Sopenharmony_ci getOrCreateLoad(system, key6); 1044514f5e3Sopenharmony_ci getOrCreateLoad(system, key8); 1054514f5e3Sopenharmony_ci 1064514f5e3Sopenharmony_ci print("numkey1 === numkey2: ", numkey1 === numkey2); 1074514f5e3Sopenharmony_ci print("numkey3 === numkey4: ", numkey3 === numkey4); 1084514f5e3Sopenharmony_ci print("numkey5 === numkey6: ", numkey5 === numkey6); 1094514f5e3Sopenharmony_ci print("numkey7 === numkey8: ", numkey7 === numkey8); 1104514f5e3Sopenharmony_ci print("numkey9 === numkey10: ", numkey9 === numkey10); 1114514f5e3Sopenharmony_ci print("numkey11 === numkey12: ", numkey11 === numkey12); 1124514f5e3Sopenharmony_ci getOrCreateLoad(system, numkey2); 1134514f5e3Sopenharmony_ci getOrCreateLoad(system, numkey4); 1144514f5e3Sopenharmony_ci getOrCreateLoad(system, numkey6); 1154514f5e3Sopenharmony_ci getOrCreateLoad(system, numkey8); 1164514f5e3Sopenharmony_ci getOrCreateLoad(system, numkey10); 1174514f5e3Sopenharmony_ci getOrCreateLoad(system, numkey12); 1184514f5e3Sopenharmony_ci} 1194514f5e3Sopenharmony_ci 1204514f5e3Sopenharmony_ci{ 1214514f5e3Sopenharmony_ci let obj = { 1224514f5e3Sopenharmony_ci "123一二三": "value 123一二三", 1234514f5e3Sopenharmony_ci "1一2二3三": "value 1一2二3三", 1244514f5e3Sopenharmony_ci "123456": "value 123456", 1254514f5e3Sopenharmony_ci } 1264514f5e3Sopenharmony_ci { 1274514f5e3Sopenharmony_ci let key1 = "123一二三"; 1284514f5e3Sopenharmony_ci let tmp1 = "123"; 1294514f5e3Sopenharmony_ci let tmp2 = "一二三"; 1304514f5e3Sopenharmony_ci let key2 = tmp1 + tmp2; 1314514f5e3Sopenharmony_ci let res1 = obj[key1]; 1324514f5e3Sopenharmony_ci let res2 = obj[key2] 1334514f5e3Sopenharmony_ci print("res:", res1 === res2) 1344514f5e3Sopenharmony_ci } 1354514f5e3Sopenharmony_ci { 1364514f5e3Sopenharmony_ci let key1 = "1一2二3三"; 1374514f5e3Sopenharmony_ci let tmp1 = "1一2"; 1384514f5e3Sopenharmony_ci let tmp2 = "二3三"; 1394514f5e3Sopenharmony_ci let key2 = tmp1 + tmp2; 1404514f5e3Sopenharmony_ci let res1 = obj[key1]; 1414514f5e3Sopenharmony_ci let res2 = obj[key2] 1424514f5e3Sopenharmony_ci print("res:", res1 === res2) 1434514f5e3Sopenharmony_ci } 1444514f5e3Sopenharmony_ci { 1454514f5e3Sopenharmony_ci let key1 = "123一二三"; 1464514f5e3Sopenharmony_ci let tmp1 = "123"; 1474514f5e3Sopenharmony_ci let tmp2 = "123"; 1484514f5e3Sopenharmony_ci let key2 = tmp1 + tmp2; 1494514f5e3Sopenharmony_ci let res1 = obj[key1]; 1504514f5e3Sopenharmony_ci let res2 = obj[key2] 1514514f5e3Sopenharmony_ci print("res:", res1 !== res2) 1524514f5e3Sopenharmony_ci } 1534514f5e3Sopenharmony_ci { 1544514f5e3Sopenharmony_ci let key1 = "123456"; 1554514f5e3Sopenharmony_ci let tmp1 = "123"; 1564514f5e3Sopenharmony_ci let tmp2 = "456"; 1574514f5e3Sopenharmony_ci let key2 = tmp1 + tmp2; 1584514f5e3Sopenharmony_ci let res1 = obj[key1]; 1594514f5e3Sopenharmony_ci let res2 = obj[key2] 1604514f5e3Sopenharmony_ci print("res:", res1 === res2) 1614514f5e3Sopenharmony_ci } 1624514f5e3Sopenharmony_ci { 1634514f5e3Sopenharmony_ci let key1 = "123456"; 1644514f5e3Sopenharmony_ci let tmp1 = "一二三"; 1654514f5e3Sopenharmony_ci let tmp2 = "456"; 1664514f5e3Sopenharmony_ci let key2 = tmp1 + tmp2; 1674514f5e3Sopenharmony_ci let res1 = obj[key1]; 1684514f5e3Sopenharmony_ci let res2 = obj[key2] 1694514f5e3Sopenharmony_ci print("res:", res1 !== res2) 1704514f5e3Sopenharmony_ci } 1714514f5e3Sopenharmony_ci} 1724514f5e3Sopenharmony_ci 1734514f5e3Sopenharmony_ci{ 1744514f5e3Sopenharmony_ci var x = []; 1754514f5e3Sopenharmony_ci x[42949672964] = 1; // insert string to EcmaStringTable in ObjectOperator::HandleKey. 1764514f5e3Sopenharmony_ci print(x["42949672964"]); 1774514f5e3Sopenharmony_ci 1784514f5e3Sopenharmony_ci var x = []; 1794514f5e3Sopenharmony_ci x[12345.6789] = 2; // insert string to EcmaStringTable in ObjectOperator::HandleKey. 1804514f5e3Sopenharmony_ci print(x["12345.6789"]); 1814514f5e3Sopenharmony_ci 1824514f5e3Sopenharmony_ci let obj = { 1834514f5e3Sopenharmony_ci "123456234": "value 123456", 1844514f5e3Sopenharmony_ci } 1854514f5e3Sopenharmony_ci let key = "123456234"; 1864514f5e3Sopenharmony_ci print(obj[key]); 1874514f5e3Sopenharmony_ci 1884514f5e3Sopenharmony_ci} 189