[
{ "name": "an EAN-13, the standard retail barcode", "args": ["4006381333931"], "expect": { "valid": true, "normalised": "4006381333931", "kind": "ean-13", "gtin14": "04006381333931", "reason": null } },
{ "name": "a UPC-A: its first digit is weighted 3, not 1", "args": ["036000291452"], "expect": { "valid": true, "normalised": "036000291452", "kind": "upc-a", "gtin14": "00036000291452", "reason": null } },
{ "name": "an EAN-8, the other length a left-weighted check gets wrong", "args": ["96385074"], "expect": { "valid": true, "normalised": "96385074", "kind": "ean-8", "gtin14": "00000096385074", "reason": null } },
{ "name": "a GTIN-14 case code built from the UPC-A with indicator 1", "args": ["10036000291459"], "expect": { "valid": true, "normalised": "10036000291459", "kind": "gtin-14", "gtin14": "10036000291459", "reason": null } },
{ "name": "the UPC-A padded to GTIN-14 is the same number", "args": ["00036000291452"], "expect": { "valid": true, "normalised": "00036000291452", "kind": "gtin-14", "gtin14": "00036000291452", "reason": null } },
{ "name": "a Bookland EAN-13, which is an ISBN", "args": ["9780306406157"], "expect": { "valid": true, "normalised": "9780306406157", "kind": "ean-13", "gtin14": "09780306406157", "reason": null } },
{ "name": "printed groups with spaces and hyphens", "args": ["4 006381-333931"], "expect": { "valid": true, "normalised": "4006381333931", "kind": "ean-13", "gtin14": "04006381333931", "reason": null } },
{ "name": "last digit off by one", "args": ["4006381333932"], "expect": { "valid": false, "normalised": null, "kind": null, "gtin14": null, "reason": "bad-check-digit" } },
{ "name": "two adjacent digits transposed: a plain digit sum would miss it", "args": ["4006383133931"], "expect": { "valid": false, "normalised": null, "kind": null, "gtin14": null, "reason": "bad-check-digit" } },
{ "name": "eleven digits is no GTIN length", "args": ["03600029145"], "expect": { "valid": false, "normalised": null, "kind": null, "gtin14": null, "reason": "bad-length" } },
{ "name": "fifteen digits is too long", "args": ["100360002914590"], "expect": { "valid": false, "normalised": null, "kind": null, "gtin14": null, "reason": "bad-length" } },
{ "name": "a letter is a bad character, reported before the length", "args": ["40063813339A"], "expect": { "valid": false, "normalised": null, "kind": null, "gtin14": null, "reason": "bad-character" } },
{ "name": "a dot is not an accepted separator", "args": ["4006381.333931"], "expect": { "valid": false, "normalised": null, "kind": null, "gtin14": null, "reason": "bad-character" } },
{ "name": "all zeros satisfies the arithmetic but is refused", "args": ["00000000"], "expect": { "valid": false, "normalised": null, "kind": null, "gtin14": null, "reason": "all-zero" } },
{ "name": "the empty string", "args": [""], "expect": { "valid": false, "normalised": null, "kind": null, "gtin14": null, "reason": "empty" } },
{ "name": "separators only is empty", "args": [" - "], "expect": { "valid": false, "normalised": null, "kind": null, "gtin14": null, "reason": "empty" } },
{ "name": "a non-string is empty, not an exception", "args": [null], "expect": { "valid": false, "normalised": null, "kind": null, "gtin14": null, "reason": "empty" } },
{ "name": "GS1's check digit worked example, GTIN-13 6291041500213", "args": ["6291041500213"], "expect": { "valid": true, "normalised": "6291041500213", "kind": "ean-13", "gtin14": "06291041500213", "reason": null } },
{ "name": "an 18-digit SSCC has a good check digit but is no GTIN length", "args": ["376104250021234569"], "expect": { "valid": false, "normalised": null, "kind": null, "gtin14": null, "reason": "bad-length" } }
]