test_parseAddressFormat.js (1931B)
1 "use strict"; 2 3 var FormAutofillUtils; 4 add_setup(async () => { 5 ({ FormAutofillUtils } = ChromeUtils.importESModule( 6 "resource://gre/modules/shared/FormAutofillUtils.sys.mjs" 7 )); 8 }); 9 10 add_task(async function test_parseAddressFormat() { 11 const TEST_CASES = [ 12 { 13 fmt: "%N%n%O%n%A%n%C, %S %Z", // US 14 parsed: [ 15 { fieldId: "name", newLine: true }, 16 { fieldId: "organization", newLine: true }, 17 { fieldId: "street-address", newLine: true }, 18 { fieldId: "address-level2" }, 19 { fieldId: "address-level1" }, 20 { fieldId: "postal-code" }, 21 ], 22 }, 23 { 24 fmt: "%N%n%O%n%A%n%C %S %Z", // CA 25 parsed: [ 26 { fieldId: "name", newLine: true }, 27 { fieldId: "organization", newLine: true }, 28 { fieldId: "street-address", newLine: true }, 29 { fieldId: "address-level2" }, 30 { fieldId: "address-level1" }, 31 { fieldId: "postal-code" }, 32 ], 33 }, 34 { 35 fmt: "%N%n%O%n%A%n%Z %C", // DE 36 parsed: [ 37 { fieldId: "name", newLine: true }, 38 { fieldId: "organization", newLine: true }, 39 { fieldId: "street-address", newLine: true }, 40 { fieldId: "postal-code" }, 41 { fieldId: "address-level2" }, 42 ], 43 }, 44 { 45 fmt: "%N%n%O%n%A%n%D%n%C%n%S %Z", // IE 46 parsed: [ 47 { fieldId: "name", newLine: true }, 48 { fieldId: "organization", newLine: true }, 49 { fieldId: "street-address", newLine: true }, 50 { fieldId: "address-level3", newLine: true }, 51 { fieldId: "address-level2", newLine: true }, 52 { fieldId: "address-level1" }, 53 { fieldId: "postal-code" }, 54 ], 55 }, 56 ]; 57 58 Assert.throws( 59 () => FormAutofillUtils.parseAddressFormat(), 60 /fmt string is missing./, 61 "Should throw if fmt is empty" 62 ); 63 for (let tc of TEST_CASES) { 64 Assert.deepEqual(FormAutofillUtils.parseAddressFormat(tc.fmt), tc.parsed); 65 } 66 });