test_isCJKName.js (2040B)
1 /** 2 * Tests the "isCJKName" function of FormAutofillNameUtils object. 3 */ 4 5 "use strict"; 6 7 var FormAutofillNameUtils; 8 add_setup(async () => { 9 ({ FormAutofillNameUtils } = ChromeUtils.importESModule( 10 "resource://gre/modules/shared/FormAutofillNameUtils.sys.mjs" 11 )); 12 }); 13 14 // Test cases is initially copied from 15 // https://cs.chromium.org/chromium/src/components/autofill/core/browser/autofill_data_util_unittest.cc 16 const TESTCASES = [ 17 { 18 // Non-CJK language with only ASCII characters. 19 fullName: "Homer Jay Simpson", 20 expectedResult: false, 21 }, 22 { 23 // Non-CJK language with some ASCII characters. 24 fullName: "Éloïse Paré", 25 expectedResult: false, 26 }, 27 { 28 // Non-CJK language with no ASCII characters. 29 fullName: "Σωκράτης", 30 expectedResult: false, 31 }, 32 { 33 // (Simplified) Chinese name, Unihan. 34 fullName: "刘翔", 35 expectedResult: true, 36 }, 37 { 38 // (Simplified) Chinese name, Unihan, with an ASCII space. 39 fullName: "成 龙", 40 expectedResult: true, 41 }, 42 { 43 // Korean name, Hangul. 44 fullName: "송지효", 45 expectedResult: true, 46 }, 47 { 48 // Korean name, Hangul, with an 'IDEOGRAPHIC SPACE' (U+3000). 49 fullName: "김 종국", 50 expectedResult: true, 51 }, 52 { 53 // Japanese name, Unihan. 54 fullName: "山田貴洋", 55 expectedResult: true, 56 }, 57 { 58 // Japanese name, Katakana, with a 'KATAKANA MIDDLE DOT' (U+30FB). 59 fullName: "ビル・ゲイツ", 60 expectedResult: true, 61 }, 62 { 63 // Japanese name, Katakana, with a 'MIDDLE DOT' (U+00B7) (likely a typo). 64 fullName: "ビル·ゲイツ", 65 expectedResult: true, 66 }, 67 { 68 // CJK names don't have a middle name, so a 3-part name is bogus to us. 69 fullName: "반 기 문", 70 expectedResult: false, 71 }, 72 ]; 73 74 add_task(async function test_isCJKName() { 75 TESTCASES.forEach(testcase => { 76 info("Starting testcase: " + testcase.fullName); 77 let result = FormAutofillNameUtils._isCJKName(testcase.fullName); 78 Assert.equal(result, testcase.expectedResult); 79 }); 80 });