1/* 2 * Copyright (C) 2023 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17import {StringUtils} from './string_utils'; 18 19describe('StringUtils', () => { 20 it('parses bigint', () => { 21 expect(StringUtils.parseBigIntStrippingUnit('-10')).toEqual(-10n); 22 expect(StringUtils.parseBigIntStrippingUnit('-10 unit')).toEqual(-10n); 23 expect(StringUtils.parseBigIntStrippingUnit('-10unit')).toEqual(-10n); 24 expect(StringUtils.parseBigIntStrippingUnit(' -10 unit ')).toEqual(-10n); 25 26 expect(StringUtils.parseBigIntStrippingUnit('0')).toEqual(0n); 27 expect(StringUtils.parseBigIntStrippingUnit('0 unit')).toEqual(0n); 28 expect(StringUtils.parseBigIntStrippingUnit('0unit')).toEqual(0n); 29 expect(StringUtils.parseBigIntStrippingUnit(' 0 unit ')).toEqual(0n); 30 31 expect(StringUtils.parseBigIntStrippingUnit('10')).toEqual(10n); 32 expect(StringUtils.parseBigIntStrippingUnit('10 unit')).toEqual(10n); 33 expect(StringUtils.parseBigIntStrippingUnit('10unit')).toEqual(10n); 34 expect(StringUtils.parseBigIntStrippingUnit(' 10 unit ')).toEqual(10n); 35 36 expect(() => StringUtils.parseBigIntStrippingUnit('invalid')).toThrow(); 37 expect(() => 38 StringUtils.parseBigIntStrippingUnit('invalid 10 unit'), 39 ).toThrow(); 40 }); 41 42 it('convertCamelToSnakeCase()', () => { 43 expect(StringUtils.convertCamelToSnakeCase('aaa')).toEqual('aaa'); 44 expect(StringUtils.convertCamelToSnakeCase('Aaa')).toEqual('Aaa'); 45 expect(StringUtils.convertCamelToSnakeCase('_aaa')).toEqual('_aaa'); 46 expect(StringUtils.convertCamelToSnakeCase('_Aaa')).toEqual('_Aaa'); 47 48 expect(StringUtils.convertCamelToSnakeCase('aaaBbb')).toEqual('aaa_bbb'); 49 expect(StringUtils.convertCamelToSnakeCase('AaaBbb')).toEqual('Aaa_bbb'); 50 expect(StringUtils.convertCamelToSnakeCase('aaa_bbb')).toEqual('aaa_bbb'); 51 expect(StringUtils.convertCamelToSnakeCase('aaa_Bbb')).toEqual('aaa_Bbb'); 52 53 expect(StringUtils.convertCamelToSnakeCase('aaaBbbCcc')).toEqual( 54 'aaa_bbb_ccc', 55 ); 56 expect(StringUtils.convertCamelToSnakeCase('aaaBbb_ccc')).toEqual( 57 'aaa_bbb_ccc', 58 ); 59 expect(StringUtils.convertCamelToSnakeCase('aaaBbb_Ccc')).toEqual( 60 'aaa_bbb_Ccc', 61 ); 62 63 expect(StringUtils.convertCamelToSnakeCase('aaaBBBccc')).toEqual( 64 'aaa_bBBccc', 65 ); 66 expect(StringUtils.convertCamelToSnakeCase('aaaBBBcccDDD')).toEqual( 67 'aaa_bBBccc_dDD', 68 ); 69 expect(StringUtils.convertCamelToSnakeCase('aaaBBB_ccc')).toEqual( 70 'aaa_bBB_ccc', 71 ); 72 expect(StringUtils.convertCamelToSnakeCase('aaaBbb_CCC')).toEqual( 73 'aaa_bbb_CCC', 74 ); 75 76 expect(StringUtils.convertCamelToSnakeCase('_field_32')).toEqual( 77 '_field_32', 78 ); 79 expect(StringUtils.convertCamelToSnakeCase('field_32')).toEqual('field_32'); 80 expect(StringUtils.convertCamelToSnakeCase('field_32Bits')).toEqual( 81 'field_32_bits', 82 ); 83 expect(StringUtils.convertCamelToSnakeCase('field_32BitsLsb')).toEqual( 84 'field_32_bits_lsb', 85 ); 86 expect(StringUtils.convertCamelToSnakeCase('field_32bits')).toEqual( 87 'field_32bits', 88 ); 89 expect(StringUtils.convertCamelToSnakeCase('field_32bitsLsb')).toEqual( 90 'field_32bits_lsb', 91 ); 92 93 expect(StringUtils.convertCamelToSnakeCase('_aaaAaa.bbbBbb')).toEqual( 94 '_aaa_aaa.bbb_bbb', 95 ); 96 expect(StringUtils.convertCamelToSnakeCase('aaaAaa.bbbBbb')).toEqual( 97 'aaa_aaa.bbb_bbb', 98 ); 99 expect( 100 StringUtils.convertCamelToSnakeCase('aaaAaa.field_32bitsLsb.bbbBbb'), 101 ).toEqual('aaa_aaa.field_32bits_lsb.bbb_bbb'); 102 }); 103 104 it('convertSnakeToCamelCase()', () => { 105 expect(StringUtils.convertSnakeToCamelCase('_aaa')).toEqual('_aaa'); 106 expect(StringUtils.convertSnakeToCamelCase('aaa')).toEqual('aaa'); 107 108 expect(StringUtils.convertSnakeToCamelCase('aaa_bbb')).toEqual('aaaBbb'); 109 expect(StringUtils.convertSnakeToCamelCase('_aaa_bbb')).toEqual('_aaaBbb'); 110 111 expect(StringUtils.convertSnakeToCamelCase('aaa_bbb_ccc')).toEqual( 112 'aaaBbbCcc', 113 ); 114 expect(StringUtils.convertSnakeToCamelCase('_aaa_bbb_ccc')).toEqual( 115 '_aaaBbbCcc', 116 ); 117 118 expect(StringUtils.convertSnakeToCamelCase('_field_32')).toEqual( 119 '_field_32', 120 ); 121 expect(StringUtils.convertSnakeToCamelCase('field_32')).toEqual('field_32'); 122 expect(StringUtils.convertSnakeToCamelCase('field_32_bits')).toEqual( 123 'field_32Bits', 124 ); 125 expect(StringUtils.convertSnakeToCamelCase('field_32_bits_lsb')).toEqual( 126 'field_32BitsLsb', 127 ); 128 expect(StringUtils.convertSnakeToCamelCase('field_32bits')).toEqual( 129 'field_32bits', 130 ); 131 expect(StringUtils.convertSnakeToCamelCase('field_32bits_lsb')).toEqual( 132 'field_32bitsLsb', 133 ); 134 135 expect(StringUtils.convertSnakeToCamelCase('_aaa_aaa.bbb_bbb')).toEqual( 136 '_aaaAaa.bbbBbb', 137 ); 138 expect(StringUtils.convertSnakeToCamelCase('aaa_aaa.bbb_bbb')).toEqual( 139 'aaaAaa.bbbBbb', 140 ); 141 expect( 142 StringUtils.convertSnakeToCamelCase('aaa_aaa.field_32bits_lsb.bbb_bbb'), 143 ).toEqual('aaaAaa.field_32bitsLsb.bbbBbb'); 144 }); 145 146 it('isAlpha()', () => { 147 expect(StringUtils.isAlpha('a')).toBeTrue(); 148 expect(StringUtils.isAlpha('A')).toBeTrue(); 149 expect(StringUtils.isAlpha('_')).toBeFalse(); 150 expect(StringUtils.isAlpha('0')).toBeFalse(); 151 expect(StringUtils.isAlpha('9')).toBeFalse(); 152 }); 153 154 it('isDigit()', () => { 155 expect(StringUtils.isDigit('a')).toBeFalse(); 156 expect(StringUtils.isDigit('A')).toBeFalse(); 157 expect(StringUtils.isDigit('_')).toBeFalse(); 158 expect(StringUtils.isDigit('0')).toBeTrue(); 159 expect(StringUtils.isDigit('9')).toBeTrue(); 160 }); 161 162 it('isLowerCase()', () => { 163 expect(StringUtils.isLowerCase('a')).toBeTrue(); 164 expect(StringUtils.isLowerCase('z')).toBeTrue(); 165 expect(StringUtils.isLowerCase('A')).toBeFalse(); 166 expect(StringUtils.isLowerCase('Z')).toBeFalse(); 167 expect(StringUtils.isLowerCase('_')).toBeFalse(); 168 expect(StringUtils.isLowerCase('0')).toBeFalse(); 169 expect(StringUtils.isLowerCase('9')).toBeFalse(); 170 }); 171 172 it('isUpperCase()', () => { 173 expect(StringUtils.isUpperCase('A')).toBeTrue(); 174 expect(StringUtils.isUpperCase('Z')).toBeTrue(); 175 expect(StringUtils.isUpperCase('a')).toBeFalse(); 176 expect(StringUtils.isUpperCase('z')).toBeFalse(); 177 expect(StringUtils.isUpperCase('_')).toBeFalse(); 178 expect(StringUtils.isUpperCase('0')).toBeFalse(); 179 expect(StringUtils.isUpperCase('9')).toBeFalse(); 180 }); 181 182 it('isBlank()', () => { 183 expect(StringUtils.isBlank('')).toBeTrue(); 184 expect(StringUtils.isBlank(' ')).toBeTrue(); 185 expect(StringUtils.isBlank(' ')).toBeTrue(); 186 expect(StringUtils.isBlank(' a')).toBeFalse(); 187 expect(StringUtils.isBlank('a ')).toBeFalse(); 188 expect(StringUtils.isBlank(' a ')).toBeFalse(); 189 expect(StringUtils.isBlank('a a')).toBeFalse(); 190 }); 191 192 it('isNumeric()', () => { 193 expect(StringUtils.isNumeric('0')).toBeTrue(); 194 expect(StringUtils.isNumeric('1')).toBeTrue(); 195 expect(StringUtils.isNumeric('0.1')).toBeTrue(); 196 expect(StringUtils.isNumeric('')).toBeFalse(); 197 expect(StringUtils.isNumeric('a')).toBeFalse(); 198 expect(StringUtils.isNumeric('4n')).toBeFalse(); 199 }); 200}); 201