{
  "generated": "2026-11-01",
  "source": "Independent Python reference written from TS 23.038 / TS 23.040; pdu.js is not imported.",
  "goldenNote": "Live check on 2026-11-01: with the site defaults (validity period 1, delivery report on), https://www.smsdeliverer.com/online-sms-pdu-encoder.aspx returns 001100098121436587F900000B17C8329BFD064D9B5362999DB697E565B96BFC6E8700 for Hello SMSDeliverer.com!. The inventory string is exactly the first 57 nibbles of that live output, so the capture was truncated and the live encoder did not produce a different frame. The live string itself still does not satisfy TS 23.040 as written: first octet 0x11 sets VPF=10b (enhanced), which requires seven validity octets, but only 0B appears before UDL=0x17; it parses only if 0B is treated as a one-octet relative validity period. site-recorded-sample keeps the truncated string unchanged and still fails. site-sample-spec-correct is the same text with no validity period and no report flag, so it is a spec-correct reference, not a byte-identical replacement of the live output.",
  "vectors": [
    {
      "id": "site-recorded-sample",
      "kind": "encode",
      "input": {
        "text": "Hello SMSDeliverer.com!",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "001100098121436587F900000B17C8329BFD064D9B5362999DB697E56"
        ]
      },
      "note": "Pasted verbatim from the site inventory (original site output)."
    },
    {
      "id": "site-sample-spec-correct",
      "kind": "encode",
      "input": {
        "text": "Hello SMSDeliverer.com!",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700"
        ],
        "encoding": "GSM-7",
        "total": 1
      }
    },
    {
      "id": "gsm-short",
      "kind": "encode",
      "input": {
        "text": "Hi",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "000100098121436587F9000002C834"
        ],
        "encoding": "GSM-7",
        "total": 1
      }
    },
    {
      "id": "gsm-intl-sca",
      "kind": "encode",
      "input": {
        "text": "Test",
        "dest": "+8613800138000",
        "sca": "+8613800138000",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "0891683108108300F001000D91683108108300F0000004D4F29C0E"
        ],
        "encoding": "GSM-7",
        "total": 1
      }
    },
    {
      "id": "gsm-basic-specials",
      "kind": "encode",
      "input": {
        "text": "£$¥",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "000100098121436587F900000301C100"
        ],
        "encoding": "GSM-7",
        "total": 1
      }
    },
    {
      "id": "gsm-extension-euro",
      "kind": "encode",
      "input": {
        "text": "€",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "000100098121436587F90000029B32"
        ],
        "encoding": "GSM-7",
        "total": 1
      }
    },
    {
      "id": "gsm-extension-mix",
      "kind": "encode",
      "input": {
        "text": "A{}[]~|^\\",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "000100098121436587F9000011C10D6A93DAF036BE4D6F03DC50362F"
        ],
        "encoding": "GSM-7",
        "total": 1
      }
    },
    {
      "id": "gsm-single-160",
      "kind": "encode",
      "input": {
        "text": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "000100098121436587F90000A0E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3"
        ],
        "encoding": "GSM-7",
        "total": 1
      }
    },
    {
      "id": "gsm-concat-161",
      "kind": "encode",
      "input": {
        "text": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 1,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "004101098121436587F90000A0050003010201C2E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3",
          "004101098121436587F900000F050003010202C2E170381C0E8701"
        ],
        "encoding": "GSM-7",
        "total": 2
      }
    },
    {
      "id": "gsm-two-parts-306",
      "kind": "encode",
      "input": {
        "text": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 1,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "004101098121436587F90000A0050003010201C2E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3",
          "004101098121436587F90000A0050003010202C2E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3"
        ],
        "encoding": "GSM-7",
        "total": 2
      }
    },
    {
      "id": "gsm-extension-boundary",
      "kind": "encode",
      "input": {
        "text": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa€€€€€",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "000100098121436587F90000A0E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E6FCA9BF2A6BC296FCA"
        ],
        "encoding": "GSM-7",
        "total": 1
      }
    },
    {
      "id": "gsm-extension-overflow",
      "kind": "encode",
      "input": {
        "text": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa€€€€€€",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 1,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "004101098121436587F900009F050003010201C2E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381CDE9401",
          "004101098121436587F900001105000301020236E54D7953DE943765"
        ],
        "encoding": "GSM-7",
        "total": 2
      }
    },
    {
      "id": "ucs2-chinese",
      "kind": "encode",
      "input": {
        "text": "您好，世界！",
        "dest": "123456789",
        "sca": "",
        "encoding": "ucs2",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "000100098121436587F900080C60A8597DFF0C4E16754CFF01"
        ],
        "encoding": "UCS-2",
        "total": 1
      }
    },
    {
      "id": "ucs2-single-70",
      "kind": "encode",
      "input": {
        "text": "中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中",
        "dest": "123456789",
        "sca": "",
        "encoding": "ucs2",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "000100098121436587F900088C4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D"
        ],
        "encoding": "UCS-2",
        "total": 1
      }
    },
    {
      "id": "ucs2-concat-71",
      "kind": "encode",
      "input": {
        "text": "中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中",
        "dest": "123456789",
        "sca": "",
        "encoding": "ucs2",
        "ref": 1,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "004101098121436587F900088C0500030102014E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D",
          "004101098121436587F900080E0500030102024E2D4E2D4E2D4E2D"
        ],
        "encoding": "UCS-2",
        "total": 2
      }
    },
    {
      "id": "concat-16bit-ref",
      "kind": "encode",
      "input": {
        "text": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 300,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "00412C098121436587F90000A0060804012C0201E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3",
          "00412C098121436587F9000011060804012C0202E170381C0E87C361"
        ],
        "encoding": "GSM-7",
        "total": 2
      }
    },
    {
      "id": "validity-relative",
      "kind": "encode",
      "input": {
        "text": "Hi",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 2,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "001100098121436587F900001702C834"
        ],
        "encoding": "GSM-7",
        "total": 1
      }
    },
    {
      "id": "status-report-flag",
      "kind": "encode",
      "input": {
        "text": "Hi",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": true,
        "flash": false
      },
      "expect": {
        "pdus": [
          "002100098121436587F9000002C834"
        ],
        "encoding": "GSM-7",
        "total": 1
      }
    },
    {
      "id": "flash-class0",
      "kind": "encode",
      "input": {
        "text": "Hi",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": true
      },
      "expect": {
        "pdus": [
          "000100098121436587F9001002C834"
        ],
        "encoding": "GSM-7",
        "total": 1
      }
    },
    {
      "id": "error-empty-text",
      "kind": "encode-error",
      "input": {
        "text": "",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "error": "Enter a message"
      }
    },
    {
      "id": "error-gsm-unicode",
      "kind": "encode-error",
      "input": {
        "text": "中文",
        "dest": "123456789",
        "sca": "",
        "encoding": "gsm7",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "error": "GSM-7 cannot encode"
      }
    },
    {
      "id": "error-no-destination",
      "kind": "encode-error",
      "input": {
        "text": "Hi",
        "dest": "",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "error": "at least one digit"
      }
    },
    {
      "id": "ucs2-emoji",
      "kind": "encode",
      "input": {
        "text": "😀",
        "dest": "123456789",
        "sca": "",
        "encoding": "ucs2",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "000100098121436587F9000804D83DDE00"
        ],
        "encoding": "UCS-2",
        "total": 1
      }
    },
    {
      "id": "decode-hello",
      "kind": "decode",
      "input": "000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700",
      "expect": {
        "type": "SMS-SUBMIT",
        "address": "123456789",
        "encoding": "GSM-7",
        "udl": 23,
        "text": "Hello SMSDeliverer.com!"
      }
    },
    {
      "id": "decode-intl-sca",
      "kind": "decode",
      "input": "0891683108108300F001000D91683108108300F0000004D4F29C0E",
      "expect": {
        "type": "SMS-SUBMIT",
        "sca": "+8613800138000",
        "address": "+8613800138000",
        "text": "Test"
      }
    },
    {
      "id": "decode-concat-part-1",
      "kind": "decode",
      "input": "004101098121436587F90000A0050003010201C2E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3",
      "expect": {
        "type": "SMS-SUBMIT",
        "udl": 160,
        "concat": {
          "ref": 1,
          "total": 2,
          "seq": 1
        },
        "text": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
      }
    },
    {
      "id": "decode-concat-part-2",
      "kind": "decode",
      "input": "004101098121436587F900000F050003010202C2E170381C0E8701",
      "expect": {
        "type": "SMS-SUBMIT",
        "udl": 15,
        "concat": {
          "ref": 1,
          "total": 2,
          "seq": 2
        },
        "text": "aaaaaaaa"
      }
    },
    {
      "id": "decode-ucs2",
      "kind": "decode",
      "input": "000100098121436587F900080C60A8597DFF0C4E16754CFF01",
      "expect": {
        "type": "SMS-SUBMIT",
        "encoding": "UCS-2",
        "text": "您好，世界！"
      }
    },
    {
      "id": "decode-16bit-concat",
      "kind": "decode",
      "input": "00412C098121436587F90000A0060804012C0201E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3",
      "expect": {
        "type": "SMS-SUBMIT",
        "udl": 160,
        "concat": {
          "ref": 300,
          "total": 2,
          "seq": 1
        },
        "text": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
      }
    },
    {
      "id": "decode-extension-euro",
      "kind": "decode",
      "input": "000100098121436587F90000029B32",
      "expect": {
        "type": "SMS-SUBMIT",
        "encoding": "GSM-7",
        "text": "€"
      }
    },
    {
      "id": "decode-emoji-surrogates",
      "kind": "decode",
      "input": "000100098121436587F9000804D83DDE00",
      "expect": {
        "type": "SMS-SUBMIT",
        "encoding": "UCS-2",
        "text": "😀"
      }
    },
    {
      "id": "decode-sms-deliver",
      "kind": "decode",
      "input": "0004099121436587F90000622041517060000AE8329BFD4697D9EC37",
      "expect": {
        "type": "SMS-DELIVER",
        "sca": null,
        "address": "+123456789",
        "scts": "2026-02-14 15:07:06 UTC+00:00",
        "text": "hellohello"
      }
    },
    {
      "id": "decode-status-report",
      "kind": "decode",
      "input": "000200098121436587F9622041517060006220415170600000",
      "expect": {
        "type": "SMS-STATUS-REPORT",
        "address": "123456789",
        "mr": 0,
        "status": 0,
        "scts": "2026-02-14 15:07:06 UTC+00:00"
      }
    },
    {
      "id": "decode-eight-bit",
      "kind": "decode",
      "input": "000100098121436587F9000403AABBCC",
      "expect": {
        "type": "SMS-SUBMIT",
        "encoding": "8-bit data",
        "text": "(binary content, 3 octets)"
      }
    },
    {
      "id": "decode-error-odd-hex",
      "kind": "decode-error",
      "input": "0011A",
      "expect": {
        "error": "odd"
      }
    },
    {
      "id": "decode-error-short",
      "kind": "decode-error",
      "input": "00",
      "expect": {
        "error": "at least"
      }
    },
    {
      "id": "decode-error-command",
      "kind": "decode-error",
      "input": "000300",
      "expect": {
        "error": "SMS-COMMAND"
      }
    },
    {
      "id": "decode-error-udh",
      "kind": "decode-error",
      "input": "004100098121436587F9000006070003010201",
      "expect": {
        "error": "exceeds"
      }
    },
    {
      "id": "decode-error-nonhex",
      "kind": "decode-error",
      "input": "00ZZ11",
      "expect": {
        "error": "hexadecimal"
      }
    },
    {
      "id": "enc-alpha-dest",
      "kind": "encode",
      "input": {
        "text": "Hi",
        "dest": "smsdeliverer.com",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "0001001CD0F3F69C5C66A7ED657959EE1ABFDB000002C834"
        ],
        "encoding": "GSM-7",
        "total": 1
      },
      "note": "Alphanumeric destination: TOA D0, length = packed octets * 2, text packed from bit 0."
    },
    {
      "id": "enc-client-sample-roundtrip",
      "kind": "encode",
      "input": {
        "text": "Hi, SMSDeliverer.com!",
        "dest": "smsdeliverer.com",
        "sca": "+86123456",
        "encoding": "auto",
        "ref": 0,
        "hours": 24,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "05916821436511001CD0F3F69C5C66A7ED657959EE1ABFDB0000A715C8340B346D4E896576DA5E9697E5AEF1BB1D02"
        ],
        "encoding": "GSM-7",
        "total": 1
      },
      "note": "Encodes back to the exact PDU the customer supplied, so encoder and decoder agree with the desktop tool on every octet."
    },
    {
      "id": "enc-vp-24h",
      "kind": "encode",
      "input": {
        "text": "Hi",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 24,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "001100098121436587F90000A702C834"
        ],
        "encoding": "GSM-7",
        "total": 1
      },
      "note": "WriteValidityPeriodInteger branch 13-24 h: (h-12)*2+143 = 0xA7, first octet 0x11."
    },
    {
      "id": "enc-vp-720h",
      "kind": "encode",
      "input": {
        "text": "Hi",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 720,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "001100098121436587F90000C402C834"
        ],
        "encoding": "GSM-7",
        "total": 1
      },
      "note": "WriteValidityPeriodInteger branch 24-720 h: h/24+166 = 0xC4."
    },
    {
      "id": "enc-ucs2-68-single",
      "kind": "encode",
      "input": {
        "text": "中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中",
        "dest": "123456789",
        "sca": "",
        "encoding": "ucs2",
        "ref": 7,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "000107098121436587F90008884E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D"
        ],
        "encoding": "UCS-2",
        "total": 1
      },
      "note": "68 UCS-2 units stay in one PDU (limit 70); TP-UDL 136 octets, no UDH despite the reference being set."
    },
    {
      "id": "enc-ucs2-concat-16bit",
      "kind": "encode",
      "input": {
        "text": "中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中中",
        "dest": "123456789",
        "sca": "",
        "encoding": "ucs2",
        "ref": 300,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "00412C098121436587F900088B060804012C03014E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D",
          "00412C098121436587F900088B060804012C03024E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D",
          "00412C098121436587F900080D060804012C03034E2D4E2D4E2D"
        ],
        "encoding": "UCS-2",
        "total": 3
      },
      "note": "UCS-2 split at 66 units with a 7 octet 16-bit reference UDH; 135 units give 66 / 66 / 3."
    },
    {
      "id": "enc-vb-default-vp",
      "kind": "encode",
      "input": {
        "text": "Hello SMSDeliverer.com!",
        "dest": "123456789",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 1,
        "sr": false,
        "flash": false
      },
      "expect": {
        "pdus": [
          "001100098121436587F900000B17C8329BFD064D9B5362999DB697E565B96BFC6E8700"
        ],
        "encoding": "GSM-7",
        "total": 1
      },
      "note": "Desktop defaults (VP 1 h, no report): first octet 0x11 and VP 0x0B, the same 001100098121436587F900000B prefix as the live capture in goldenNote."
    },
    {
      "id": "encode-error-sca-alpha",
      "kind": "encode-error",
      "input": {
        "text": "Hi",
        "dest": "123456789",
        "sca": "smsdeliverer.com",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "error": "service centre address must be a number"
      }
    },
    {
      "id": "encode-error-alpha-address",
      "kind": "encode-error",
      "input": {
        "text": "Hi",
        "dest": "中文",
        "sca": "",
        "encoding": "auto",
        "ref": 0,
        "hours": 0,
        "sr": false,
        "flash": false
      },
      "expect": {
        "error": "address contains characters that GSM-7 cannot encode"
      }
    },
    {
      "id": "decode-client-sample",
      "kind": "decode",
      "input": "05916821436511001CD0F3F69C5C66A7ED657959EE1ABFDB0000A715C8340B346D4E896576DA5E9697E5AEF1BB1D02",
      "expect": {
        "type": "SMS-SUBMIT",
        "sca": "+86123456",
        "address": "smsdeliverer.com",
        "mr": 0,
        "pid": 0,
        "encoding": "GSM-7",
        "validity": "0xA7 (integer)",
        "udl": 21,
        "text": "Hi, SMSDeliverer.com!",
        "vbTo": "smsdeliverer.com",
        "vbType": "SMS-SUBMIT",
        "vbSmsc": "86123456",
        "vbDcsName": "SMS Default Alphabet",
        "vbClass": "Class 0",
        "vbRef": "0",
        "vbPhysical": "0/1",
        "vbValFormat": "Relative",
        "vbValidity": "24 hour(s)",
        "vbHeader": "11",
        "vbTpVp": "10",
        "vbTpUdh": "",
        "vbTpUd": "C8340B346D4E896576DA5E9697E5AEF1BB1D02"
      },
      "note": "Customer sample: alphanumeric destination with a 1 octet integer validity period. Table assertions cover the desktop page's Main/Additional/Original rows."
    },
    {
      "id": "decode-deliver-udh-8bit",
      "kind": "decode",
      "input": "0040099121436587F9000062204151706000090500032A02019069",
      "expect": {
        "type": "SMS-DELIVER",
        "address": "+123456789",
        "encoding": "GSM-7",
        "udl": 9,
        "concat": {
          "ref": 42,
          "total": 2,
          "seq": 1
        },
        "text": "Hi",
        "vbTo": "+123456789",
        "vbTimestamp": "2026-02-14 15:07:06",
        "vbTpScts": "62204151706000",
        "vbTpOa": "123456789",
        "vbTpUd": "0500032A02019069",
        "vbTpUdl": "09"
      },
      "note": "6 octet UDH -> 7 septet slots -> 1 fill bit; 2 text septets. DELIVER prints a timestamp and TP-OA, and omits TP-MR/TP-VP/TP-UDH."
    },
    {
      "id": "decode-deliver-udh-16bit",
      "kind": "decode",
      "input": "0040099121436587F90000622041517060000D060804012C0201C8329BFD06",
      "expect": {
        "type": "SMS-DELIVER",
        "address": "+123456789",
        "encoding": "GSM-7",
        "udl": 13,
        "concat": {
          "ref": 300,
          "total": 2,
          "seq": 1
        },
        "text": "Hello"
      },
      "note": "7 octet UDH -> 8 septet slots -> no fill bit; 5 text septets."
    },
    {
      "id": "decode-deliver-udh-ucs2",
      "kind": "decode",
      "input": "0040099121436587F90008622041517060000A0500032A020100480069",
      "expect": {
        "type": "SMS-DELIVER",
        "address": "+123456789",
        "encoding": "UCS-2",
        "udl": 10,
        "concat": {
          "ref": 42,
          "total": 2,
          "seq": 1
        },
        "text": "Hi",
        "vbDcsName": "USC2",
        "vbClass": "Class 0",
        "vbTpUd": "0500032A020100480069"
      },
      "note": "UCS-2 with a 6 octet concat UDH; TP-UDL counts octets."
    }
  ],
  "results": {
    "ranAt": "2026-11-01",
    "total": 52,
    "passed": 51,
    "failed": 1,
    "byKind": {
      "encode": {
        "pass": 26,
        "fail": 1
      },
      "encode-error": {
        "pass": 5,
        "fail": 0
      },
      "decode": {
        "pass": 15,
        "fail": 0
      },
      "decode-error": {
        "pass": 5,
        "fail": 0
      }
    },
    "vectors": [
      {
        "id": "site-recorded-sample",
        "kind": "encode",
        "status": "FAIL",
        "actual": {
          "pdus": [
            "000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": [
          "PDU mismatch"
        ]
      },
      {
        "id": "site-sample-spec-correct",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "gsm-short",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "000100098121436587F9000002C834"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "gsm-intl-sca",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "0891683108108300F001000D91683108108300F0000004D4F29C0E"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "gsm-basic-specials",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "000100098121436587F900000301C100"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "gsm-extension-euro",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "000100098121436587F90000029B32"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "gsm-extension-mix",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "000100098121436587F9000011C10D6A93DAF036BE4D6F03DC50362F"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "gsm-single-160",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "000100098121436587F90000A0E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "gsm-concat-161",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "004101098121436587F90000A0050003010201C2E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3",
            "004101098121436587F900000F050003010202C2E170381C0E8701"
          ],
          "encoding": "GSM-7",
          "total": 2
        },
        "problems": []
      },
      {
        "id": "gsm-two-parts-306",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "004101098121436587F90000A0050003010201C2E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3",
            "004101098121436587F90000A0050003010202C2E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3"
          ],
          "encoding": "GSM-7",
          "total": 2
        },
        "problems": []
      },
      {
        "id": "gsm-extension-boundary",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "000100098121436587F90000A0E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E6FCA9BF2A6BC296FCA"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "gsm-extension-overflow",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "004101098121436587F900009F050003010201C2E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381CDE9401",
            "004101098121436587F900001105000301020236E54D7953DE943765"
          ],
          "encoding": "GSM-7",
          "total": 2
        },
        "problems": []
      },
      {
        "id": "ucs2-chinese",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "000100098121436587F900080C60A8597DFF0C4E16754CFF01"
          ],
          "encoding": "UCS-2",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "ucs2-single-70",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "000100098121436587F900088C4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D"
          ],
          "encoding": "UCS-2",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "ucs2-concat-71",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "004101098121436587F900088C0500030102014E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D",
            "004101098121436587F900080E0500030102024E2D4E2D4E2D4E2D"
          ],
          "encoding": "UCS-2",
          "total": 2
        },
        "problems": []
      },
      {
        "id": "concat-16bit-ref",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "00412C098121436587F90000A0060804012C0201E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3",
            "00412C098121436587F9000011060804012C0202E170381C0E87C361"
          ],
          "encoding": "GSM-7",
          "total": 2
        },
        "problems": []
      },
      {
        "id": "validity-relative",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "001100098121436587F900001702C834"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "status-report-flag",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "002100098121436587F9000002C834"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "flash-class0",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "000100098121436587F9001002C834"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "error-empty-text",
        "kind": "encode-error",
        "status": "PASS",
        "actual": {
          "error": "Enter a message to encode."
        },
        "problems": []
      },
      {
        "id": "error-gsm-unicode",
        "kind": "encode-error",
        "status": "PASS",
        "actual": {
          "error": "This text contains characters that GSM-7 cannot encode. Choose Unicode (UCS-2)."
        },
        "problems": []
      },
      {
        "id": "error-no-destination",
        "kind": "encode-error",
        "status": "PASS",
        "actual": {
          "error": "Enter a number that contains at least one digit."
        },
        "problems": []
      },
      {
        "id": "ucs2-emoji",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "000100098121436587F9000804D83DDE00"
          ],
          "encoding": "UCS-2",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "decode-hello",
        "kind": "decode",
        "status": "PASS",
        "actual": {
          "type": "SMS-SUBMIT",
          "address": "123456789",
          "encoding": "GSM-7",
          "udl": 23,
          "text": "Hello SMSDeliverer.com!"
        },
        "problems": []
      },
      {
        "id": "decode-intl-sca",
        "kind": "decode",
        "status": "PASS",
        "actual": {
          "type": "SMS-SUBMIT",
          "sca": "+8613800138000",
          "address": "+8613800138000",
          "text": "Test"
        },
        "problems": []
      },
      {
        "id": "decode-concat-part-1",
        "kind": "decode",
        "status": "PASS",
        "actual": {
          "type": "SMS-SUBMIT",
          "udl": 160,
          "concat": {
            "ref": 1,
            "total": 2,
            "seq": 1,
            "bits": 8
          },
          "text": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
        },
        "problems": []
      },
      {
        "id": "decode-concat-part-2",
        "kind": "decode",
        "status": "PASS",
        "actual": {
          "type": "SMS-SUBMIT",
          "udl": 15,
          "concat": {
            "ref": 1,
            "total": 2,
            "seq": 2,
            "bits": 8
          },
          "text": "aaaaaaaa"
        },
        "problems": []
      },
      {
        "id": "decode-ucs2",
        "kind": "decode",
        "status": "PASS",
        "actual": {
          "type": "SMS-SUBMIT",
          "encoding": "UCS-2",
          "text": "您好，世界！"
        },
        "problems": []
      },
      {
        "id": "decode-16bit-concat",
        "kind": "decode",
        "status": "PASS",
        "actual": {
          "type": "SMS-SUBMIT",
          "udl": 160,
          "concat": {
            "ref": 300,
            "total": 2,
            "seq": 1,
            "bits": 16
          },
          "text": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
        },
        "problems": []
      },
      {
        "id": "decode-extension-euro",
        "kind": "decode",
        "status": "PASS",
        "actual": {
          "type": "SMS-SUBMIT",
          "encoding": "GSM-7",
          "text": "€"
        },
        "problems": []
      },
      {
        "id": "decode-emoji-surrogates",
        "kind": "decode",
        "status": "PASS",
        "actual": {
          "type": "SMS-SUBMIT",
          "encoding": "UCS-2",
          "text": "😀"
        },
        "problems": []
      },
      {
        "id": "decode-sms-deliver",
        "kind": "decode",
        "status": "PASS",
        "actual": {
          "type": "SMS-DELIVER",
          "sca": null,
          "address": "+123456789",
          "scts": "2026-02-14 15:07:06 UTC+00:00",
          "text": "hellohello"
        },
        "problems": []
      },
      {
        "id": "decode-status-report",
        "kind": "decode",
        "status": "PASS",
        "actual": {
          "type": "SMS-STATUS-REPORT",
          "address": "123456789",
          "mr": 0,
          "status": 0,
          "scts": "2026-02-14 15:07:06 UTC+00:00"
        },
        "problems": []
      },
      {
        "id": "decode-eight-bit",
        "kind": "decode",
        "status": "PASS",
        "actual": {
          "type": "SMS-SUBMIT",
          "encoding": "8-bit data",
          "text": "(binary content, 3 octets)"
        },
        "problems": []
      },
      {
        "id": "decode-error-odd-hex",
        "kind": "decode-error",
        "status": "PASS",
        "actual": {
          "error": "Hex length is odd (5 nibbles). A PDU must contain whole bytes."
        },
        "problems": []
      },
      {
        "id": "decode-error-short",
        "kind": "decode-error",
        "status": "PASS",
        "actual": {
          "error": "A PDU needs at least an SMSC length and a first octet."
        },
        "problems": []
      },
      {
        "id": "decode-error-command",
        "kind": "decode-error",
        "status": "PASS",
        "actual": {
          "error": "SMS-COMMAND frames are not supported by this decoder."
        },
        "problems": []
      },
      {
        "id": "decode-error-udh",
        "kind": "decode-error",
        "status": "PASS",
        "actual": {
          "error": "UDH length 7 exceeds the user data."
        },
        "problems": []
      },
      {
        "id": "decode-error-nonhex",
        "kind": "decode-error",
        "status": "PASS",
        "actual": {
          "error": "The input contains characters that are not hexadecimal."
        },
        "problems": []
      },
      {
        "id": "enc-alpha-dest",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "0001001CD0F3F69C5C66A7ED657959EE1ABFDB000002C834"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "enc-client-sample-roundtrip",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "05916821436511001CD0F3F69C5C66A7ED657959EE1ABFDB0000A715C8340B346D4E896576DA5E9697E5AEF1BB1D02"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "enc-vp-24h",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "001100098121436587F90000A702C834"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "enc-vp-720h",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "001100098121436587F90000C402C834"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "enc-ucs2-68-single",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "000107098121436587F90008884E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D"
          ],
          "encoding": "UCS-2",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "enc-ucs2-concat-16bit",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "00412C098121436587F900088B060804012C03014E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D",
            "00412C098121436587F900088B060804012C03024E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D4E2D",
            "00412C098121436587F900080D060804012C03034E2D4E2D4E2D"
          ],
          "encoding": "UCS-2",
          "total": 3
        },
        "problems": []
      },
      {
        "id": "enc-vb-default-vp",
        "kind": "encode",
        "status": "PASS",
        "actual": {
          "pdus": [
            "001100098121436587F900000B17C8329BFD064D9B5362999DB697E565B96BFC6E8700"
          ],
          "encoding": "GSM-7",
          "total": 1
        },
        "problems": []
      },
      {
        "id": "encode-error-sca-alpha",
        "kind": "encode-error",
        "status": "PASS",
        "actual": {
          "error": "The service centre address must be a number."
        },
        "problems": []
      },
      {
        "id": "encode-error-alpha-address",
        "kind": "encode-error",
        "status": "PASS",
        "actual": {
          "error": "This address contains characters that GSM-7 cannot encode."
        },
        "problems": []
      },
      {
        "id": "decode-client-sample",
        "kind": "decode",
        "status": "PASS",
        "actual": {
          "type": "SMS-SUBMIT",
          "sca": "+86123456",
          "address": "smsdeliverer.com",
          "mr": 0,
          "pid": 0,
          "encoding": "GSM-7",
          "validity": "0xA7 (integer)",
          "udl": 21,
          "text": "Hi, SMSDeliverer.com!",
          "vbTo": "smsdeliverer.com",
          "vbType": "SMS-SUBMIT",
          "vbSmsc": "86123456",
          "vbDcsName": "SMS Default Alphabet",
          "vbClass": "Class 0",
          "vbRef": "0",
          "vbPhysical": "0/1",
          "vbValFormat": "Relative",
          "vbValidity": "24 hour(s)",
          "vbHeader": "11",
          "vbTpVp": "10",
          "vbTpUdh": "",
          "vbTpUd": "C8340B346D4E896576DA5E9697E5AEF1BB1D02"
        },
        "problems": []
      },
      {
        "id": "decode-deliver-udh-8bit",
        "kind": "decode",
        "status": "PASS",
        "actual": {
          "type": "SMS-DELIVER",
          "address": "+123456789",
          "encoding": "GSM-7",
          "udl": 9,
          "concat": {
            "ref": 42,
            "total": 2,
            "seq": 1,
            "bits": 8
          },
          "text": "Hi",
          "vbTo": "+123456789",
          "vbTimestamp": "2026-02-14 15:07:06",
          "vbTpScts": "62204151706000",
          "vbTpOa": "123456789",
          "vbTpUd": "0500032A02019069",
          "vbTpUdl": "09"
        },
        "problems": []
      },
      {
        "id": "decode-deliver-udh-16bit",
        "kind": "decode",
        "status": "PASS",
        "actual": {
          "type": "SMS-DELIVER",
          "address": "+123456789",
          "encoding": "GSM-7",
          "udl": 13,
          "concat": {
            "ref": 300,
            "total": 2,
            "seq": 1,
            "bits": 16
          },
          "text": "Hello"
        },
        "problems": []
      },
      {
        "id": "decode-deliver-udh-ucs2",
        "kind": "decode",
        "status": "PASS",
        "actual": {
          "type": "SMS-DELIVER",
          "address": "+123456789",
          "encoding": "UCS-2",
          "udl": 10,
          "concat": {
            "ref": 42,
            "total": 2,
            "seq": 1,
            "bits": 8
          },
          "text": "Hi",
          "vbDcsName": "USC2",
          "vbClass": "Class 0",
          "vbTpUd": "0500032A020100480069"
        },
        "problems": []
      }
    ]
  }
}
