Functional Weave
Code in Rust

validation.gs1-check-digit@1.0.0

vectors.json

3,916 bytes · view raw

[
  { "fn": "gs1CheckDigit", "name": "GS1's worked example: GTIN-13 629104150021 takes check digit 3", "args": ["629104150021"], "expect": 3 },
  { "fn": "gs1CheckDigit", "name": "GS1's worked example: SSCC 37610425002123456 takes check digit 9", "args": ["37610425002123456"], "expect": 9 },
  { "fn": "gs1CheckDigit", "name": "GS1's SSCC label example (00) 1 0614141 123456789 7", "args": ["10614141123456789"], "expect": 7 },
  { "fn": "gs1CheckDigit", "name": "seven digits, a GTIN-8: its first digit is weighted 3", "args": ["9638507"], "expect": 4 },
  { "fn": "gs1CheckDigit", "name": "eleven digits, a UPC-A", "args": ["03600029145"], "expect": 2 },
  { "fn": "gs1CheckDigit", "name": "thirteen digits, a GTIN-14 case code", "args": ["1003600029145"], "expect": 9 },
  { "fn": "gs1CheckDigit", "name": "a sum that is already a multiple of ten gives 0, not 10", "args": ["35012345678000042"], "expect": 0 },
  { "fn": "gs1CheckDigit", "name": "all zeros gives 0: the arithmetic has no opinion on it", "args": ["000000000000"], "expect": 0 },
  { "fn": "gs1CheckDigit", "name": "a single data digit is weighted 3", "args": ["1"], "expect": 7 },
  { "fn": "gs1CheckDigit", "name": "a longer key than any GTIN, thirty data digits", "args": ["123456789012345678901234567890"], "expect": 5 },
  { "fn": "gs1CheckDigit", "name": "the empty string has no check digit", "args": [""], "expectError": "GS1 data must be one or more ASCII digits" },
  { "fn": "gs1CheckDigit", "name": "a letter is refused, not skipped", "args": ["62910415002A"], "expectError": "GS1 data must be one or more ASCII digits" },
  { "fn": "gs1CheckDigit", "name": "spaces are not tidied: strip print groups before calling", "args": ["6291041 50021"], "expectError": "GS1 data must be one or more ASCII digits" },
  { "fn": "gs1CheckDigit", "name": "an Arabic-Indic digit is not an ASCII digit", "args": ["62910415002١"], "expectError": "GS1 data must be one or more ASCII digits" },
  { "fn": "gs1CheckDigit", "name": "a non-string is refused", "args": [null], "expectError": "GS1 data must be one or more ASCII digits" },

  { "fn": "isGs1CheckDigitValid", "name": "GS1's worked example GTIN-13 6291041500213", "args": ["6291041500213"], "expect": true },
  { "fn": "isGs1CheckDigitValid", "name": "GS1's worked example SSCC 376104250021234569", "args": ["376104250021234569"], "expect": true },
  { "fn": "isGs1CheckDigitValid", "name": "the GTIN-13 example with its check digit one off", "args": ["6291041500214"], "expect": false },
  { "fn": "isGs1CheckDigitValid", "name": "a GTIN-8", "args": ["96385074"], "expect": true },
  { "fn": "isGs1CheckDigitValid", "name": "a UPC-A, twelve digits", "args": ["036000291452"], "expect": true },
  { "fn": "isGs1CheckDigitValid", "name": "a GTIN-14", "args": ["10036000291459"], "expect": true },
  { "fn": "isGs1CheckDigitValid", "name": "an SSCC whose check digit is 0", "args": ["350123456780000420"], "expect": true },
  { "fn": "isGs1CheckDigitValid", "name": "two adjacent digits transposed", "args": ["4006383133931"], "expect": false },
  { "fn": "isGs1CheckDigitValid", "name": "all zeros passes the arithmetic; refusing it is the key's own rule", "args": ["0000000000000"], "expect": true },
  { "fn": "isGs1CheckDigitValid", "name": "the shortest key, one data digit and its check digit", "args": ["17"], "expect": true },
  { "fn": "isGs1CheckDigitValid", "name": "a lone digit is not a key", "args": ["0"], "expect": false },
  { "fn": "isGs1CheckDigitValid", "name": "the empty string", "args": [""], "expect": false },
  { "fn": "isGs1CheckDigitValid", "name": "a letter makes it false rather than an error", "args": ["629104150021X"], "expect": false },
  { "fn": "isGs1CheckDigitValid", "name": "print groups are not tidied", "args": ["629104 1500213"], "expect": false },
  { "fn": "isGs1CheckDigitValid", "name": "a non-string is false", "args": [null], "expect": false }
]