Functional Weave
Code in Rust

hospitality.allergen-matrix@1.0.1

vectors.json

15,769 bytes · view raw

[
  {"name": "margherita: gluten and milk contained, sesame and soya only may be", "args": [[{"name": "pizza dough", "contains": ["gluten"], "mayContain": ["sesame", "soybeans"]}, {"name": "tomato sauce", "contains": [], "mayContain": []}, {"name": "mozzarella", "contains": ["milk"], "mayContain": []}, {"name": "basil", "contains": [], "mayContain": []}], "GB", "2026-09-23"], "expect": [{"code": "gluten", "name": "Cereals containing gluten", "status": "contains", "sources": ["pizza dough"]}, {"code": "crustaceans", "name": "Crustaceans", "status": "none", "sources": []}, {"code": "eggs", "name": "Eggs", "status": "none", "sources": []}, {"code": "fish", "name": "Fish", "status": "none", "sources": []}, {"code": "peanuts", "name": "Peanuts", "status": "none", "sources": []}, {"code": "soybeans", "name": "Soybeans", "status": "may-contain", "sources": ["pizza dough"]}, {"code": "milk", "name": "Milk", "status": "contains", "sources": ["mozzarella"]}, {"code": "nuts", "name": "Nuts", "status": "none", "sources": []}, {"code": "celery", "name": "Celery", "status": "none", "sources": []}, {"code": "mustard", "name": "Mustard", "status": "none", "sources": []}, {"code": "sesame", "name": "Sesame seeds", "status": "may-contain", "sources": ["pizza dough"]}, {"code": "sulphites", "name": "Sulphur dioxide and sulphites", "status": "none", "sources": []}, {"code": "lupin", "name": "Lupin", "status": "none", "sources": []}, {"code": "molluscs", "name": "Molluscs", "status": "none", "sources": []}]},
  {"name": "contains beats may-contain, and only the containing ingredient is a source", "args": [[{"name": "pesto", "contains": ["nuts", "milk"], "mayContain": []}, {"name": "bread", "contains": ["gluten"], "mayContain": ["nuts"]}], "GB", "2026-09-23"], "expect": [{"code": "gluten", "name": "Cereals containing gluten", "status": "contains", "sources": ["bread"]}, {"code": "crustaceans", "name": "Crustaceans", "status": "none", "sources": []}, {"code": "eggs", "name": "Eggs", "status": "none", "sources": []}, {"code": "fish", "name": "Fish", "status": "none", "sources": []}, {"code": "peanuts", "name": "Peanuts", "status": "none", "sources": []}, {"code": "soybeans", "name": "Soybeans", "status": "none", "sources": []}, {"code": "milk", "name": "Milk", "status": "contains", "sources": ["pesto"]}, {"code": "nuts", "name": "Nuts", "status": "contains", "sources": ["pesto"]}, {"code": "celery", "name": "Celery", "status": "none", "sources": []}, {"code": "mustard", "name": "Mustard", "status": "none", "sources": []}, {"code": "sesame", "name": "Sesame seeds", "status": "none", "sources": []}, {"code": "sulphites", "name": "Sulphur dioxide and sulphites", "status": "none", "sources": []}, {"code": "lupin", "name": "Lupin", "status": "none", "sources": []}, {"code": "molluscs", "name": "Molluscs", "status": "none", "sources": []}]},
  {"name": "several ingredients can be the source of one allergen", "args": [[{"name": "caesar dressing", "contains": ["eggs", "fish", "mustard", "milk"], "mayContain": []}, {"name": "croutons", "contains": ["gluten"], "mayContain": ["eggs"]}, {"name": "parmesan", "contains": ["milk"], "mayContain": []}], "GB", "2026-09-23"], "expect": [{"code": "gluten", "name": "Cereals containing gluten", "status": "contains", "sources": ["croutons"]}, {"code": "crustaceans", "name": "Crustaceans", "status": "none", "sources": []}, {"code": "eggs", "name": "Eggs", "status": "contains", "sources": ["caesar dressing"]}, {"code": "fish", "name": "Fish", "status": "contains", "sources": ["caesar dressing"]}, {"code": "peanuts", "name": "Peanuts", "status": "none", "sources": []}, {"code": "soybeans", "name": "Soybeans", "status": "none", "sources": []}, {"code": "milk", "name": "Milk", "status": "contains", "sources": ["caesar dressing", "parmesan"]}, {"code": "nuts", "name": "Nuts", "status": "none", "sources": []}, {"code": "celery", "name": "Celery", "status": "none", "sources": []}, {"code": "mustard", "name": "Mustard", "status": "contains", "sources": ["caesar dressing"]}, {"code": "sesame", "name": "Sesame seeds", "status": "none", "sources": []}, {"code": "sulphites", "name": "Sulphur dioxide and sulphites", "status": "none", "sources": []}, {"code": "lupin", "name": "Lupin", "status": "none", "sources": []}, {"code": "molluscs", "name": "Molluscs", "status": "none", "sources": []}]},
  {"name": "may-contain from two ingredients lists both", "args": [[{"name": "granola", "contains": [], "mayContain": ["peanuts"]}, {"name": "chocolate", "contains": ["milk", "soybeans"], "mayContain": ["peanuts", "nuts"]}], "GB", "2026-09-23"], "expect": [{"code": "gluten", "name": "Cereals containing gluten", "status": "none", "sources": []}, {"code": "crustaceans", "name": "Crustaceans", "status": "none", "sources": []}, {"code": "eggs", "name": "Eggs", "status": "none", "sources": []}, {"code": "fish", "name": "Fish", "status": "none", "sources": []}, {"code": "peanuts", "name": "Peanuts", "status": "may-contain", "sources": ["granola", "chocolate"]}, {"code": "soybeans", "name": "Soybeans", "status": "contains", "sources": ["chocolate"]}, {"code": "milk", "name": "Milk", "status": "contains", "sources": ["chocolate"]}, {"code": "nuts", "name": "Nuts", "status": "may-contain", "sources": ["chocolate"]}, {"code": "celery", "name": "Celery", "status": "none", "sources": []}, {"code": "mustard", "name": "Mustard", "status": "none", "sources": []}, {"code": "sesame", "name": "Sesame seeds", "status": "none", "sources": []}, {"code": "sulphites", "name": "Sulphur dioxide and sulphites", "status": "none", "sources": []}, {"code": "lupin", "name": "Lupin", "status": "none", "sources": []}, {"code": "molluscs", "name": "Molluscs", "status": "none", "sources": []}]},
  {"name": "an ingredient listing an allergen twice is one source", "args": [[{"name": "stock", "contains": ["celery", "celery"], "mayContain": ["celery"]}], "GB", "2026-09-23"], "expect": [{"code": "gluten", "name": "Cereals containing gluten", "status": "none", "sources": []}, {"code": "crustaceans", "name": "Crustaceans", "status": "none", "sources": []}, {"code": "eggs", "name": "Eggs", "status": "none", "sources": []}, {"code": "fish", "name": "Fish", "status": "none", "sources": []}, {"code": "peanuts", "name": "Peanuts", "status": "none", "sources": []}, {"code": "soybeans", "name": "Soybeans", "status": "none", "sources": []}, {"code": "milk", "name": "Milk", "status": "none", "sources": []}, {"code": "nuts", "name": "Nuts", "status": "none", "sources": []}, {"code": "celery", "name": "Celery", "status": "contains", "sources": ["stock"]}, {"code": "mustard", "name": "Mustard", "status": "none", "sources": []}, {"code": "sesame", "name": "Sesame seeds", "status": "none", "sources": []}, {"code": "sulphites", "name": "Sulphur dioxide and sulphites", "status": "none", "sources": []}, {"code": "lupin", "name": "Lupin", "status": "none", "sources": []}, {"code": "molluscs", "name": "Molluscs", "status": "none", "sources": []}]},
  {"name": "the same ingredient name twice is one source", "args": [[{"name": "wine", "contains": ["sulphites"], "mayContain": []}, {"name": "wine", "contains": ["sulphites"], "mayContain": []}], "GB", "2026-09-23"], "expect": [{"code": "gluten", "name": "Cereals containing gluten", "status": "none", "sources": []}, {"code": "crustaceans", "name": "Crustaceans", "status": "none", "sources": []}, {"code": "eggs", "name": "Eggs", "status": "none", "sources": []}, {"code": "fish", "name": "Fish", "status": "none", "sources": []}, {"code": "peanuts", "name": "Peanuts", "status": "none", "sources": []}, {"code": "soybeans", "name": "Soybeans", "status": "none", "sources": []}, {"code": "milk", "name": "Milk", "status": "none", "sources": []}, {"code": "nuts", "name": "Nuts", "status": "none", "sources": []}, {"code": "celery", "name": "Celery", "status": "none", "sources": []}, {"code": "mustard", "name": "Mustard", "status": "none", "sources": []}, {"code": "sesame", "name": "Sesame seeds", "status": "none", "sources": []}, {"code": "sulphites", "name": "Sulphur dioxide and sulphites", "status": "contains", "sources": ["wine"]}, {"code": "lupin", "name": "Lupin", "status": "none", "sources": []}, {"code": "molluscs", "name": "Molluscs", "status": "none", "sources": []}]},
  {"name": "all fourteen in one dish, in the legal order", "args": [[{"name": "everything", "contains": ["gluten", "crustaceans", "eggs", "fish", "peanuts", "soybeans", "milk", "nuts", "celery", "mustard", "sesame", "sulphites", "lupin", "molluscs"], "mayContain": []}], "GB", "2026-09-23"], "expect": [{"code": "gluten", "name": "Cereals containing gluten", "status": "contains", "sources": ["everything"]}, {"code": "crustaceans", "name": "Crustaceans", "status": "contains", "sources": ["everything"]}, {"code": "eggs", "name": "Eggs", "status": "contains", "sources": ["everything"]}, {"code": "fish", "name": "Fish", "status": "contains", "sources": ["everything"]}, {"code": "peanuts", "name": "Peanuts", "status": "contains", "sources": ["everything"]}, {"code": "soybeans", "name": "Soybeans", "status": "contains", "sources": ["everything"]}, {"code": "milk", "name": "Milk", "status": "contains", "sources": ["everything"]}, {"code": "nuts", "name": "Nuts", "status": "contains", "sources": ["everything"]}, {"code": "celery", "name": "Celery", "status": "contains", "sources": ["everything"]}, {"code": "mustard", "name": "Mustard", "status": "contains", "sources": ["everything"]}, {"code": "sesame", "name": "Sesame seeds", "status": "contains", "sources": ["everything"]}, {"code": "sulphites", "name": "Sulphur dioxide and sulphites", "status": "contains", "sources": ["everything"]}, {"code": "lupin", "name": "Lupin", "status": "contains", "sources": ["everything"]}, {"code": "molluscs", "name": "Molluscs", "status": "contains", "sources": ["everything"]}]},
  {"name": "shellfish: crustaceans and molluscs are separate allergens", "args": [[{"name": "prawns", "contains": ["crustaceans"], "mayContain": []}, {"name": "mussels", "contains": ["molluscs"], "mayContain": []}, {"name": "lupin flour", "contains": ["lupin"], "mayContain": []}], "GB", "2026-09-23"], "expect": [{"code": "gluten", "name": "Cereals containing gluten", "status": "none", "sources": []}, {"code": "crustaceans", "name": "Crustaceans", "status": "contains", "sources": ["prawns"]}, {"code": "eggs", "name": "Eggs", "status": "none", "sources": []}, {"code": "fish", "name": "Fish", "status": "none", "sources": []}, {"code": "peanuts", "name": "Peanuts", "status": "none", "sources": []}, {"code": "soybeans", "name": "Soybeans", "status": "none", "sources": []}, {"code": "milk", "name": "Milk", "status": "none", "sources": []}, {"code": "nuts", "name": "Nuts", "status": "none", "sources": []}, {"code": "celery", "name": "Celery", "status": "none", "sources": []}, {"code": "mustard", "name": "Mustard", "status": "none", "sources": []}, {"code": "sesame", "name": "Sesame seeds", "status": "none", "sources": []}, {"code": "sulphites", "name": "Sulphur dioxide and sulphites", "status": "none", "sources": []}, {"code": "lupin", "name": "Lupin", "status": "contains", "sources": ["lupin flour"]}, {"code": "molluscs", "name": "Molluscs", "status": "contains", "sources": ["mussels"]}]},
  {"name": "a dish with no declared allergens still lists all fourteen as none", "args": [[{"name": "rice", "contains": [], "mayContain": []}, {"name": "water", "contains": [], "mayContain": []}], "GB", "2026-09-23"], "expect": [{"code": "gluten", "name": "Cereals containing gluten", "status": "none", "sources": []}, {"code": "crustaceans", "name": "Crustaceans", "status": "none", "sources": []}, {"code": "eggs", "name": "Eggs", "status": "none", "sources": []}, {"code": "fish", "name": "Fish", "status": "none", "sources": []}, {"code": "peanuts", "name": "Peanuts", "status": "none", "sources": []}, {"code": "soybeans", "name": "Soybeans", "status": "none", "sources": []}, {"code": "milk", "name": "Milk", "status": "none", "sources": []}, {"code": "nuts", "name": "Nuts", "status": "none", "sources": []}, {"code": "celery", "name": "Celery", "status": "none", "sources": []}, {"code": "mustard", "name": "Mustard", "status": "none", "sources": []}, {"code": "sesame", "name": "Sesame seeds", "status": "none", "sources": []}, {"code": "sulphites", "name": "Sulphur dioxide and sulphites", "status": "none", "sources": []}, {"code": "lupin", "name": "Lupin", "status": "none", "sources": []}, {"code": "molluscs", "name": "Molluscs", "status": "none", "sources": []}]},
  {"name": "no ingredients at all", "args": [[], "GB", "2026-09-23"], "expect": [{"code": "gluten", "name": "Cereals containing gluten", "status": "none", "sources": []}, {"code": "crustaceans", "name": "Crustaceans", "status": "none", "sources": []}, {"code": "eggs", "name": "Eggs", "status": "none", "sources": []}, {"code": "fish", "name": "Fish", "status": "none", "sources": []}, {"code": "peanuts", "name": "Peanuts", "status": "none", "sources": []}, {"code": "soybeans", "name": "Soybeans", "status": "none", "sources": []}, {"code": "milk", "name": "Milk", "status": "none", "sources": []}, {"code": "nuts", "name": "Nuts", "status": "none", "sources": []}, {"code": "celery", "name": "Celery", "status": "none", "sources": []}, {"code": "mustard", "name": "Mustard", "status": "none", "sources": []}, {"code": "sesame", "name": "Sesame seeds", "status": "none", "sources": []}, {"code": "sulphites", "name": "Sulphur dioxide and sulphites", "status": "none", "sources": []}, {"code": "lupin", "name": "Lupin", "status": "none", "sources": []}, {"code": "molluscs", "name": "Molluscs", "status": "none", "sources": []}]},
  {"name": "the first day the list applied", "args": [[{"name": "milk", "contains": ["milk"], "mayContain": []}], "GB", "2014-12-13"], "expect": [{"code": "gluten", "name": "Cereals containing gluten", "status": "none", "sources": []}, {"code": "crustaceans", "name": "Crustaceans", "status": "none", "sources": []}, {"code": "eggs", "name": "Eggs", "status": "none", "sources": []}, {"code": "fish", "name": "Fish", "status": "none", "sources": []}, {"code": "peanuts", "name": "Peanuts", "status": "none", "sources": []}, {"code": "soybeans", "name": "Soybeans", "status": "none", "sources": []}, {"code": "milk", "name": "Milk", "status": "contains", "sources": ["milk"]}, {"code": "nuts", "name": "Nuts", "status": "none", "sources": []}, {"code": "celery", "name": "Celery", "status": "none", "sources": []}, {"code": "mustard", "name": "Mustard", "status": "none", "sources": []}, {"code": "sesame", "name": "Sesame seeds", "status": "none", "sources": []}, {"code": "sulphites", "name": "Sulphur dioxide and sulphites", "status": "none", "sources": []}, {"code": "lupin", "name": "Lupin", "status": "none", "sources": []}, {"code": "molluscs", "name": "Molluscs", "status": "none", "sources": []}]},
  {"name": "a code that is not on the list is an error, not ignored", "args": [[{"name": "walnut cake", "contains": ["tree-nuts"], "mayContain": []}], "GB", "2026-09-23"], "expectError": "unknown allergen \"tree-nuts\" in \"walnut cake\""},
  {"name": "an unknown may-contain code is an error too", "args": [[{"name": "biscuit", "contains": [], "mayContain": ["gluten free"]}], "GB", "2026-09-23"], "expectError": "unknown allergen \"gluten free\""},
  {"name": "before the regulation applied there is no list", "args": [[], "GB", "2014-12-12"], "expectError": "no allergen list for GB on 2014-12-12"},
  {"name": "a jurisdiction with no data is an error", "args": [[], "FR", "2026-09-23"], "expectError": "no allergen list for FR on 2026-09-23"},
  {"name": "an impossible date is an error", "args": [[], "GB", "2026-02-30"], "expectError": "is not a real calendar date"}
]