14514f5e3Sopenharmony_ci/* 24514f5e3Sopenharmony_ci * Copyright (c) 2023 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:stringSlice 184514f5e3Sopenharmony_ci * @tc.desc:test String.slice 194514f5e3Sopenharmony_ci * @tc.type: FUNC 204514f5e3Sopenharmony_ci * @tc.require: issueI5NO8G 214514f5e3Sopenharmony_ci */ 224514f5e3Sopenharmony_ci 234514f5e3Sopenharmony_cifunction testLocaleCompare() { 244514f5e3Sopenharmony_ci const testCases = [ 254514f5e3Sopenharmony_ci // LineOrConstant v.s. LineOrConstant 264514f5e3Sopenharmony_ci { str1: 'apple', str2: 'apple' }, 274514f5e3Sopenharmony_ci { str1: 'apple', str2: 'banana' }, 284514f5e3Sopenharmony_ci { str1: 'banana', str2: 'apple' }, 294514f5e3Sopenharmony_ci { str1: 'app', str2: 'apple' }, 304514f5e3Sopenharmony_ci { str1: 'application', str2: 'apple' }, 314514f5e3Sopenharmony_ci { str1: 'Apple', str2: 'apple' }, 324514f5e3Sopenharmony_ci { str1: '123', str2: '1234' }, 334514f5e3Sopenharmony_ci { str1: '1234', str2: '123' }, 344514f5e3Sopenharmony_ci { str1: 'Zebra', str2: 'apple' }, 354514f5e3Sopenharmony_ci { str1: 'appleappleappleappleappleapple', str2: 'appleappleappleappleappleapple' }, 364514f5e3Sopenharmony_ci { str1: 'appleappleappleappleappleapple', str2: 'appleappleapplebppleappleapple' }, 374514f5e3Sopenharmony_ci { str1: 'appleappleappleAppleappleapple', str2: 'appleappleappleappleappleapple' }, 384514f5e3Sopenharmony_ci // SliceString v.s. SliceString 394514f5e3Sopenharmony_ci { str1: 'appleappleapple'.substring(0, 5), str2: 'appleappleapple'.substring(5, 10) }, 404514f5e3Sopenharmony_ci { str1: 'appleappleapple'.substring(1, 6), str2: 'appleappleapple'.substring(6, 11) }, 414514f5e3Sopenharmony_ci { str1: 'appleappleapple'.substring(0, 5), str2: 'appleappleapple'.substring(10, 15) }, 424514f5e3Sopenharmony_ci { str1: 'appleappleapple'.substring(0, 5), str2: 'appleappleapple'.substring(5, 11) }, 434514f5e3Sopenharmony_ci // LineOrConstant v.s. TreeString 444514f5e3Sopenharmony_ci { str1: 'HelloWorld', str2: 'Hello'.concat('World') }, 454514f5e3Sopenharmony_ci { str1: 'Ni'.concat('Hao', 'Ya'), str2: 'NiHaoYa' }, 464514f5e3Sopenharmony_ci { str1: 'HelloWorld', str2: 'Hello'.concat('World ') }, 474514f5e3Sopenharmony_ci { str1: 'Ni'.concat('Hao', 'Ya', '1'), str2: 'NiHaoYa' }, 484514f5e3Sopenharmony_ci // TreeString v.s. TreeString 494514f5e3Sopenharmony_ci { str1: 'Hell'.concat('oWorld'), str2: 'Hello'.concat('World') }, 504514f5e3Sopenharmony_ci { str1: 'Ni'.concat('Hao', 'Ya'), str2: 'NiHao'.concat('Ya') }, 514514f5e3Sopenharmony_ci { str1: 'Hello'.concat('a'), str2: 'Hello'.concat('b') }, 524514f5e3Sopenharmony_ci { str1: 'Ni'.concat('Hao', '8'), str2: 'NiHao'.concat('7') }, 534514f5e3Sopenharmony_ci // TreeString v.s. SliceString 544514f5e3Sopenharmony_ci { str1: 'appleappleapple'.substring(5, 10), str2: 'app'.concat('le') }, 554514f5e3Sopenharmony_ci { str1: 'hello'.concat('world'), str2: 'ohelloworld'.substring(1) }, 564514f5e3Sopenharmony_ci { str1: 'hello'.concat('world'), str2: 'ohelloworld'.substring(2) }, 574514f5e3Sopenharmony_ci { str1: 'appleappleapple'.substring(5, 11), str2: 'app'.concat('le') }, 584514f5e3Sopenharmony_ci // LineOrConstant v.s. SliceString 594514f5e3Sopenharmony_ci { str1: 'apple', str2: 'appleappleapple'.substring(5, 10) }, 604514f5e3Sopenharmony_ci { str1: 'appleappleapple'.substring(0, 5), str2: 'apple' }, 614514f5e3Sopenharmony_ci // Complex string compare 624514f5e3Sopenharmony_ci { str1: 'hello'.concat('world').substring(2, 4), str2: 'hello'.substring(2, 3).concat('l') }, 634514f5e3Sopenharmony_ci ]; 644514f5e3Sopenharmony_ci testCases.forEach(testCase => { 654514f5e3Sopenharmony_ci // default locale is en-US 664514f5e3Sopenharmony_ci const result = testCase.str1.localeCompare(testCase.str2); 674514f5e3Sopenharmony_ci print(result); 684514f5e3Sopenharmony_ci }); 694514f5e3Sopenharmony_ci const testCasesUni = [ 704514f5e3Sopenharmony_ci // UTF8 v.s. UTF16 714514f5e3Sopenharmony_ci { str1: 'café', str2: 'cafe' }, 724514f5e3Sopenharmony_ci { str1: 'café', str2: 'café' }, 734514f5e3Sopenharmony_ci { str1: 'resumé', str2: 'resume' }, 744514f5e3Sopenharmony_ci { str1: 'resume', str2: 'resumé' }, 754514f5e3Sopenharmony_ci { str1: ' naïve', str2: 'naïve' }, 764514f5e3Sopenharmony_ci { str1: 'naïve', str2: ' naïve' }, 774514f5e3Sopenharmony_ci { str1: 'élan', str2: 'elan' }, 784514f5e3Sopenharmony_ci { str1: 'élan', str2: 'e' + String.fromCharCode(0x0301) + 'lan' } 794514f5e3Sopenharmony_ci ]; 804514f5e3Sopenharmony_ci testCasesUni.forEach(testCase => { 814514f5e3Sopenharmony_ci const result = testCase.str1.localeCompare(testCase.str2, 'en-US'); 824514f5e3Sopenharmony_ci print(result); 834514f5e3Sopenharmony_ci }); 844514f5e3Sopenharmony_ci } 854514f5e3Sopenharmony_ci testLocaleCompare(); 864514f5e3Sopenharmony_ci 87