Run a complete CSV test with expected and observed results. Check formatting, Luhn, missing values and duplicates, then repeat the same verification offline.
All examples are synthetic inventory mocks. No Apple MDM, Samsung Knox, carrier or device database is queried. Imported text is processed in your browser; the lab does not upload it.
1. Run an inventory test
Up to 200 rows. For CSV use the header imei; optional columns: case_id, record_id, slot, expected_status, expected_duplicate. The full CSV exported by the generator is accepted too: its descriptive metadata is not checked or used as evidence of device identity. Export input CSV retains the original columns. Identifiers remain text. Empty lines are skipped; use an explicit CSV row to test a missing value.
Optional: reproduce a fixture from a seed
The seed and selected scenario generate the same strings under contract 1.0.0. This replaces the input above with labeled positive and negative test cases. The seed does not select manufacturer prefixes.
Row-by-row report
Contract randomimei-qa 1.0.0. Status keys in downloads remain English. A valid checksum does not establish assignment, ownership or network status.
JSON preserves exact strings. When importing CSV into a spreadsheet, set identifier columns to Text to preserve zeros. Report CSV prefixes formula-like cells with an apostrophe; JSON retains the original.
Original inputs, observed status, expected status, duplicates and assertion results.
Case / mock record
Original / normalized
Observed
Expected
Duplicate
Expectation check
Why the Apple example has separate slots
The first mock record has two distinct identifiers labeled IMEI1 and IMEI2. A second record repeats one identifier and omits IMEI2; a third has a deliberate checksum error. Missing data is not a checksum failure. The report carries record_id and slot through without claiming to validate an Apple response schema or a device’s SIM configuration.
Why the Samsung example normalizes before comparing
Two mock inventory records contain the same digits with different separators. They become a duplicate after normalization while the original input remains visible. A separate row preserves leading zeros and another fails Luhn. The report lets you investigate duplicates; it does not silently merge or correct records and makes no Knox compatibility claim.
Download and extract the complete project, then run these commands inside its folder. Requires Node.js 20 or later and npm. There are no dependencies to install. The browser and project run the exact same contract.mjs module.
The verification command compares every observed field with the published expected report. These are the expected success lines; any mismatch exits with code 1.
Local reference run: 2026-09-09T18:02:03.915Z · Node v26.7.0 · 9 tests passed · 20 rows verified with no mismatches. The observed files record that run; they are not an external certification.
The contract removes whitespace, Unicode separators and ASCII hyphens. It accepts only ASCII digits afterward. A 14-digit body is incomplete; a suggested 15-digit completion is shown separately. Luhn doubles positions 2, 4, 6…14 from the left of the body.
Duplicates compare complete 15-digit normalized strings in input order, including strings with a bad checksum. Later rows reference the first case. Incomplete bodies and malformed values do not participate. Slots are carried through as labels; your application decides which slots are required.
Optional expected_status and expected_duplicate columns turn the CSV into assertions. An absent expectation is not a pass. A deliberately invalid case is a successful test when its observed failure matches the expected result.
Original examples and reports: CC0-1.0. Source code: MIT. The kit contains no third-party TAC catalog. Keep synthetic fixtures in test environments; generated values can coincide with assigned identifiers.