| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- /*
- * Copyright 2022 gitlost
- */
- // SPDX-License-Identifier: Apache-2.0
- #include "GTIN.h"
- #include "gtest/gtest.h"
- using namespace ZXing;
- using namespace ZXing::GTIN;
- TEST(GTINTest, CountryIdentifierEAN13)
- {
- // From test/samples/ean13-*/
- EXPECT_EQ(LookupCountryIdentifier("8413000065504"), "ES");
- EXPECT_EQ(LookupCountryIdentifier("8413000065504 12"), "ES");
- EXPECT_EQ(LookupCountryIdentifier("8413000065504 51299"), "ES");
- EXPECT_EQ(LookupCountryIdentifier("5449000039231"), "BE");
- EXPECT_TRUE(LookupCountryIdentifier("9788430532674").empty()); // Bookland (ISBN)
- EXPECT_EQ(LookupCountryIdentifier("8480017507990"), "ES");
- EXPECT_EQ(LookupCountryIdentifier("3166298099809"), "FR");
- EXPECT_EQ(LookupCountryIdentifier("5201815331227"), "GR");
- EXPECT_EQ(LookupCountryIdentifier("3560070169443"), "FR");
- EXPECT_EQ(LookupCountryIdentifier("4045787034318"), "DE");
- EXPECT_EQ(LookupCountryIdentifier("3086126100326"), "FR");
- EXPECT_EQ(LookupCountryIdentifier("4820024790635"), "UA");
- EXPECT_EQ(LookupCountryIdentifier("7622200008018"), "CH");
- EXPECT_EQ(LookupCountryIdentifier("5603667020517"), "PT");
- EXPECT_EQ(LookupCountryIdentifier("5709262942503"), "DK");
- EXPECT_EQ(LookupCountryIdentifier("4901780188352"), "JP");
- EXPECT_EQ(LookupCountryIdentifier("4007817327098"), "DE");
- EXPECT_EQ(LookupCountryIdentifier("5025121072311"), "GB");
- EXPECT_EQ(LookupCountryIdentifier("5025121072311 12"), "GB");
- EXPECT_EQ(LookupCountryIdentifier("5025121072311 51299"), "GB");
- EXPECT_EQ(LookupCountryIdentifier("5030159003930"), "GB");
- EXPECT_EQ(LookupCountryIdentifier("5000213002834"), "GB");
- EXPECT_TRUE(LookupCountryIdentifier("1920081045006").empty()); // 140-199 unassigned
- EXPECT_TRUE(LookupCountryIdentifier("9780735200449 51299").empty()); // Bookland (ISBN)
- // Other
- EXPECT_TRUE(LookupCountryIdentifier("0000000001465").empty()); // 0000000 Restricted Circulation Numbers
- EXPECT_TRUE(LookupCountryIdentifier("0000000111461 12").empty());
- EXPECT_TRUE(LookupCountryIdentifier("0000001991469").empty()); // 0000001-0000099 unused to avoid GTIN-8 collision
- EXPECT_TRUE(LookupCountryIdentifier("0000099991463").empty());
- EXPECT_EQ(LookupCountryIdentifier("0000102301463"), "US"); // 00001-00009 US
- EXPECT_EQ(LookupCountryIdentifier("0000102301463 51299"), "US");
- EXPECT_EQ(LookupCountryIdentifier("0000902301465"), "US");
- EXPECT_EQ(LookupCountryIdentifier("0001602301465"), "US"); // 0001-0009 US
- EXPECT_EQ(LookupCountryIdentifier("0009602301461 12"), "US");
- EXPECT_EQ(LookupCountryIdentifier("0016602301469"), "US"); // 001-019 US
- EXPECT_EQ(LookupCountryIdentifier("0036602301467"), "US");
- EXPECT_EQ(LookupCountryIdentifier("0196602301468 51299"), "US");
- EXPECT_TRUE(LookupCountryIdentifier("0206602301464").empty()); // 020-029 Restricted Circulation Numbers
- EXPECT_TRUE(LookupCountryIdentifier("0296602301465").empty());
- EXPECT_EQ(LookupCountryIdentifier("0306602301461"), "US"); // 030-039 US
- EXPECT_EQ(LookupCountryIdentifier("0396602301462"), "US");
- EXPECT_TRUE(LookupCountryIdentifier("0406602301468").empty()); // 040-049 Restricted Circulation Numbers
- EXPECT_TRUE(LookupCountryIdentifier("0496602301469").empty());
- EXPECT_TRUE(LookupCountryIdentifier("0506602301465").empty()); // 050-059 reserved for future use
- EXPECT_TRUE(LookupCountryIdentifier("0596602301466").empty());
- EXPECT_EQ(LookupCountryIdentifier("0606602301462"), "US"); // 060-099 US
- EXPECT_EQ(LookupCountryIdentifier("0996602301464"), "US");
- EXPECT_EQ(LookupCountryIdentifier("1006602301469"), "US"); // 100-139 US
- EXPECT_EQ(LookupCountryIdentifier("1396602301461"), "US");
- EXPECT_TRUE(LookupCountryIdentifier("1406602301467").empty()); // 140-199 unassigned
- EXPECT_TRUE(LookupCountryIdentifier("1996602301463").empty());
- EXPECT_TRUE(LookupCountryIdentifier("2006602301468").empty()); // 200-299 Restricted Circulation Numbers
- EXPECT_TRUE(LookupCountryIdentifier("2996602301462").empty());
- EXPECT_EQ(LookupCountryIdentifier("9586602301468"), "MO");
- EXPECT_EQ(LookupCountryIdentifier("9586602301468 12"), "MO");
- EXPECT_EQ(LookupCountryIdentifier("9586602301468 51299"), "MO");
- // Additions/updates
- EXPECT_EQ(LookupCountryIdentifier("3890102301467"), "ME");
- //EXPECT_EQ(LookupCountryIdentifier("3900102301463"), "XK"); // Kosovo according to Wikipedia - awaiting GS1 confirmation
- EXPECT_EQ(LookupCountryIdentifier("4700102301468"), "KG");
- EXPECT_EQ(LookupCountryIdentifier("4830102301462"), "TM");
- EXPECT_EQ(LookupCountryIdentifier("4880102301467"), "TJ");
- EXPECT_EQ(LookupCountryIdentifier("5210102301461"), "GR");
- EXPECT_EQ(LookupCountryIdentifier("5300102301469"), "AL");
- EXPECT_EQ(LookupCountryIdentifier("6040102301463"), "SN");
- EXPECT_EQ(LookupCountryIdentifier("6150102301469"), "NG");
- EXPECT_EQ(LookupCountryIdentifier("6170102301467"), "CM");
- EXPECT_EQ(LookupCountryIdentifier("6200102301461"), "TZ");
- EXPECT_EQ(LookupCountryIdentifier("6230102301468"), "BN");
- EXPECT_EQ(LookupCountryIdentifier("6300102301468"), "QA");
- EXPECT_EQ(LookupCountryIdentifier("6310102301467"), "NA");
- EXPECT_EQ(LookupCountryIdentifier("6990102301461"), "CN");
- EXPECT_EQ(LookupCountryIdentifier("7710102301464"), "CO");
- EXPECT_EQ(LookupCountryIdentifier("7780102301467"), "AR");
- EXPECT_TRUE(LookupCountryIdentifier("7850102301467").empty());
- EXPECT_EQ(LookupCountryIdentifier("8600102301467"), "RS");
- EXPECT_EQ(LookupCountryIdentifier("8830102301468"), "MM");
- EXPECT_EQ(LookupCountryIdentifier("8840102301467"), "KH");
- EXPECT_EQ(LookupCountryIdentifier("9400102301462"), "NZ");
- }
- TEST(GTINTest, CountryIdentifierUPCA)
- {
- // From test/samples/upca-*/
- EXPECT_EQ(LookupCountryIdentifier("036602301467"), "US"); // 001-019 US/CA
- EXPECT_EQ(LookupCountryIdentifier("036602301467 12"), "US"); // 001-019 US
- EXPECT_EQ(LookupCountryIdentifier("036602301467 51299"), "US"); // 001-019 US
- EXPECT_EQ(LookupCountryIdentifier("070097025088"), "US");
- EXPECT_EQ(LookupCountryIdentifier("781735802045"), "US"); // 060-099 US
- EXPECT_TRUE(LookupCountryIdentifier("456314319671").empty()); // 040-049 Restricted Circulation Numbers
- EXPECT_TRUE(LookupCountryIdentifier("434704791429").empty());
- EXPECT_EQ(LookupCountryIdentifier("752919460009"), "US"); // 060-099 US
- EXPECT_EQ(LookupCountryIdentifier("606949762520"), "US");
- EXPECT_EQ(LookupCountryIdentifier("890444000335"), "US");
- EXPECT_EQ(LookupCountryIdentifier("181497000879"), "US"); // 001-019 US
- EXPECT_EQ(LookupCountryIdentifier("012546619592"), "US");
- EXPECT_EQ(LookupCountryIdentifier("854818000116"), "US"); // 060-099 US
- EXPECT_EQ(LookupCountryIdentifier("312547701310"), "US"); // 030-039 US
- EXPECT_EQ(LookupCountryIdentifier("071831007995 19868"), "US"); // 001-019 US
- EXPECT_EQ(LookupCountryIdentifier("027011006951 02601"), "US");
- EXPECT_EQ(LookupCountryIdentifier("024543136538 00"), "US");
- // Other
- EXPECT_TRUE(LookupCountryIdentifier("000000001465").empty()); // 0000000 Restricted Circulation Numbers
- EXPECT_TRUE(LookupCountryIdentifier("000000111461 12").empty());
- EXPECT_TRUE(LookupCountryIdentifier("000001991468").empty()); // 0000001-0000099 unused to avoid GTIN-8 collision
- EXPECT_TRUE(LookupCountryIdentifier("000099991463").empty());
- EXPECT_EQ(LookupCountryIdentifier("000102301463"), "US"); // 00001-00009 US
- EXPECT_EQ(LookupCountryIdentifier("000102301463 51299"), "US");
- EXPECT_EQ(LookupCountryIdentifier("000902301465"), "US");
- EXPECT_EQ(LookupCountryIdentifier("001602301465"), "US"); // 0001-0009 US
- EXPECT_EQ(LookupCountryIdentifier("009602301461 12"), "US");
- EXPECT_EQ(LookupCountryIdentifier("016602301469"), "US"); // 001-019 US
- EXPECT_EQ(LookupCountryIdentifier("036602301467"), "US");
- EXPECT_EQ(LookupCountryIdentifier("196602301468 51299"), "US");
- EXPECT_TRUE(LookupCountryIdentifier("206602301464").empty()); // 020-029 Restricted Circulation Numbers
- EXPECT_TRUE(LookupCountryIdentifier("296602301465").empty());
- EXPECT_EQ(LookupCountryIdentifier("306602301461"), "US"); // 030-039 US
- EXPECT_EQ(LookupCountryIdentifier("396602301462"), "US");
- EXPECT_TRUE(LookupCountryIdentifier("406602301468").empty()); // 040-049 Restricted Circulation Numbers
- EXPECT_TRUE(LookupCountryIdentifier("496602301469").empty());
- EXPECT_TRUE(LookupCountryIdentifier("506602301465").empty()); // 050-059 reserved for future use
- EXPECT_TRUE(LookupCountryIdentifier("596602301466").empty());
- EXPECT_EQ(LookupCountryIdentifier("606602301462"), "US"); // 060-099 US
- EXPECT_EQ(LookupCountryIdentifier("996602301464"), "US");
- }
- TEST(GTINTest, CountryIdentifierUPCE)
- {
- // From test/samples/upce-*/
- EXPECT_EQ(LookupCountryIdentifier("01234565"), "US"); // 001-019 US
- EXPECT_EQ(LookupCountryIdentifier("01234565", BarcodeFormat::UPCE), "US"); // 001-019 US
- EXPECT_EQ(LookupCountryIdentifier("00123457"), "US"); // 0001-0009 US
- EXPECT_EQ(LookupCountryIdentifier("00123457", BarcodeFormat::UPCE), "US"); // 0001-0009 US
- EXPECT_EQ(LookupCountryIdentifier("05096893"), "US"); // 001-019 US
- EXPECT_EQ(LookupCountryIdentifier("05096893", BarcodeFormat::UPCE), "US"); // 001-019 US
- EXPECT_EQ(LookupCountryIdentifier("04963406 01"), "US"); // 001-019 US
- EXPECT_EQ(LookupCountryIdentifier("04963406 01", BarcodeFormat::UPCE), "US"); // 001-019 US
- // Other
- // 0000000, 0000001-0000099 and 00001-00009 not possible for UPC-E
- EXPECT_EQ(LookupCountryIdentifier("00021357"), "US"); // 0001-0009 US
- EXPECT_EQ(LookupCountryIdentifier("00021357 01"), "US");
- EXPECT_EQ(LookupCountryIdentifier("11621355"), "US"); // 001-019 US
- EXPECT_TRUE(LookupCountryIdentifier("22221111").empty()); // 020-029 Restricted Circulation Numbers
- EXPECT_EQ(LookupCountryIdentifier("31621358"), "US"); // 030-039 US
- EXPECT_TRUE(LookupCountryIdentifier("40621359").empty()); // 040-049 Restricted Circulation Numbers
- EXPECT_TRUE(LookupCountryIdentifier("50621359").empty()); // 050-059 reserved for future use
- EXPECT_EQ(LookupCountryIdentifier("61621358"), "US"); // 060-099 US
- EXPECT_EQ(LookupCountryIdentifier("99621350"), "US");
- }
- TEST(GTINTest, CountryIdentifierEAN8)
- {
- auto format = BarcodeFormat::EAN8; // Require BarcodeFormat for EAN-8 to be distinguished from UPC-E
- // From test/samples/ean8-*/
- EXPECT_EQ(LookupCountryIdentifier("48512343", format), "AM");
- EXPECT_EQ(LookupCountryIdentifier("12345670", format), "US");
- EXPECT_TRUE(LookupCountryIdentifier("67678983", format).empty()); // 650-689 unassigned
- EXPECT_EQ(LookupCountryIdentifier("80674313", format), "IT");
- EXPECT_EQ(LookupCountryIdentifier("59001270", format), "PL");
- EXPECT_EQ(LookupCountryIdentifier("50487066", format), "GB");
- EXPECT_TRUE(LookupCountryIdentifier("55123457", format).empty()); // 550-559 unassigned
- EXPECT_TRUE(LookupCountryIdentifier("95012346", format).empty()); // 950 GS1 Global Office
- // Other (GS1 General Specifications 1.4.3 Figure 1.4.3-1
- EXPECT_TRUE(LookupCountryIdentifier("00045674", format).empty()); // 000-099 EAN-8 Restricted Circulation Numbers
- EXPECT_TRUE(LookupCountryIdentifier("09945678", format).empty());
- EXPECT_EQ(LookupCountryIdentifier("10045671", format), "US"); // 100-139 US
- EXPECT_EQ(LookupCountryIdentifier("13945671", format), "US");
- EXPECT_TRUE(LookupCountryIdentifier("14045677", format).empty()); // 140-199 unassigned
- EXPECT_TRUE(LookupCountryIdentifier("19945675", format).empty());
- EXPECT_TRUE(LookupCountryIdentifier("20045678", format).empty()); // 200-299 Restricted Circulation Numbers
- EXPECT_TRUE(LookupCountryIdentifier("29945672", format).empty());
- EXPECT_EQ(LookupCountryIdentifier("30045675", format), "FR");
- EXPECT_EQ(LookupCountryIdentifier("95845678", format), "MO");
- EXPECT_TRUE(LookupCountryIdentifier("97645672", format).empty()); // Unassigned
- EXPECT_TRUE(LookupCountryIdentifier("97745679", format).empty()); // 977-999 Reserved for future use
- EXPECT_TRUE(LookupCountryIdentifier("99945671", format).empty());
- }
- TEST(GTINTest, CountryIdentifierGTIN14)
- {
- // From test/samples/itf-*/
- EXPECT_EQ(LookupCountryIdentifier("30712345000010"), "US");
- EXPECT_EQ(LookupCountryIdentifier("00012345678905"), "US");
- // Other
- EXPECT_TRUE(LookupCountryIdentifier("12345678901231").empty()); // 200-299 Restricted Circulation Numbers
- EXPECT_EQ(LookupCountryIdentifier("13005678901233"), "FR");
- }
|