summaryrefslogtreecommitdiffstats
path: root/browser/extensions/formautofill/test/unit/test_addressComponent_name.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/extensions/formautofill/test/unit/test_addressComponent_name.js')
-rw-r--r--browser/extensions/formautofill/test/unit/test_addressComponent_name.js101
1 files changed, 101 insertions, 0 deletions
diff --git a/browser/extensions/formautofill/test/unit/test_addressComponent_name.js b/browser/extensions/formautofill/test/unit/test_addressComponent_name.js
new file mode 100644
index 0000000000..79fb1879d2
--- /dev/null
+++ b/browser/extensions/formautofill/test/unit/test_addressComponent_name.js
@@ -0,0 +1,101 @@
+"use strict";
+
+const VALID_TESTS = [
+ ["John Doe", true],
+ ["John O'Brian'", true],
+ ["John O-Brian'", true],
+ ["John Doe", true],
+];
+
+// prettier-ignore
+const COMPARE_TESTS = [
+ // Same
+ ["John", "John", SAME], // first name
+ ["John Doe", "John Doe", SAME], // first and last name
+ ["John Middle Doe", "John Middle Doe", SAME], // first, middle, and last name
+ ["John Mid1 Mid2 Doe", "John Mid1 Mid2 Doe", SAME],
+
+ // Same: case insenstive
+ ["John Doe", "john doe", SAME],
+
+ // Similar: whitespaces are merged
+ ["John Doe", "John Doe", SIMILAR],
+
+ // Similar: asscent and base
+ ["John Doe", "John Döe", SIMILAR], // asscent and base
+
+ // A Contains B
+ ["John Doe", "Doe", A_CONTAINS_B], // first + family name contains family name
+ ["John Doe", "John", A_CONTAINS_B], // first + family name contains first name
+ ["John Middle Doe", "Doe", A_CONTAINS_B], // [first, middle, last] contains [last]
+ ["John Middle Doe", "John", A_CONTAINS_B], // [first, middle, last] contains [first]
+ ["John Middle Doe", "Middle", A_CONTAINS_B], // [first, middle, last] contains [middle]
+ ["John Middle Doe", "Middle Doe", A_CONTAINS_B], // [first, middle, last] contains [middle, last]
+ ["John Middle Doe", "John Middle", A_CONTAINS_B], // [first, middle, last] contains [fisrt, middle]
+ ["John Middle Doe", "John Doe", A_CONTAINS_B], // [first, middle, last] contains [fisrt, last]
+ ["John Mary Jane Doe", "John Doe", A_CONTAINS_B], // [first, middle, last] contains [fisrt, last]
+
+ // Different
+ ["John Doe", "Jane Roe", DIFFERENT],
+ ["John Doe", "Doe John", DIFFERENT], // swap order
+ ["John Middle Doe", "Middle John", DIFFERENT],
+ ["John Middle Doe", "Doe Middle", DIFFERENT],
+ ["John Doe", "John Roe.", DIFFERENT], // different family name
+ ["John Doe", "Jane Doe", DIFFERENT], // different given name
+ ["John Middle Doe", "Jane Michael Doe", DIFFERENT], // different middle name
+
+ // Puncuation is either removed or replaced with white space
+ ["John O'Brian", "John OBrian", SIMILAR],
+ ["John O'Brian", "John O-Brian", SIMILAR],
+ ["John O'Brian", "John O Brian", SIMILAR],
+ ["John-Mary Doe", "JohnMary Doe", SIMILAR],
+ ["John-Mary Doe", "John'Mary Doe", SIMILAR],
+ ["John-Mary Doe", "John Mary Doe", SIMILAR],
+ ["John-Mary Doe", "John Mary", A_CONTAINS_B],
+
+ // Test Name Variants
+ ["John Doe", "J. Doe", A_CONTAINS_B], // first name to initial
+ ["John Doe", "J. doe", A_CONTAINS_B],
+ ["John Doe", "J. Doe", A_CONTAINS_B], // first name to initial without '.'
+
+ ["John Middle Doe", "J. Middle Doe", A_CONTAINS_B], // first name to initial, middle name unchanged
+ ["John Middle Doe", "J. Doe", A_CONTAINS_B], // first name to initial, no middle name
+
+ ["John Middle Doe", "John M. Doe", A_CONTAINS_B], // middle name to initial, first name unchanged
+ ["John Middle Doe", "J. M. Doe", A_CONTAINS_B], // first and middle name to initial
+ ["John Middle Doe", "J M Doe", A_CONTAINS_B], // first and middle name to initial without '.'
+ ["John Middle Doe", "John M. Doe", A_CONTAINS_B], // middle name with initial
+
+ // Test Name Variants: multiple middle name
+ ["John Mary Jane Doe", "J. MARY JANE Doe", A_CONTAINS_B], // first to initial
+ ["John Mary Jane Doe", "john. M. J. doe", A_CONTAINS_B], // middle name to initial
+ ["John Mary Jane Doe", "J. M. J. Doe", A_CONTAINS_B], // first & middle name to initial
+ ["John Mary Jane Doe", "J. M. Doe", A_CONTAINS_B], // first & part of the middle name to initial
+ ["John Mary Jane Doe", "John M. Doe", A_CONTAINS_B],
+ ["John Mary Jane Doe", "J. Doe", A_CONTAINS_B],
+
+ // Test Name Variants: merge initials
+ ["John Middle Doe", "JM Doe", A_CONTAINS_B],
+ ["John Mary Jane Doe", "JMJ. doe", A_CONTAINS_B],
+
+ // Different: Don't consider the cases when family name is abbreviated
+ ["John Middle Doe", "JMD", DIFFERENT],
+ ["John Middle Doe", "John Middle D.", DIFFERENT],
+ ["John Middle Doe", "J. M. D.", DIFFERENT],
+];
+
+const TEST_FIELD_NAME = "Name";
+
+add_setup(async () => {});
+
+add_task(async function test_isValid() {
+ runIsValidTest(VALID_TESTS, TEST_FIELD_NAME, value => {
+ return { name: value };
+ });
+});
+
+add_task(async function test_compare() {
+ runCompareTest(COMPARE_TESTS, TEST_FIELD_NAME, value => {
+ return { name: value };
+ });
+});