[Issue 12853] std.encoding EncodingSchemeUtf16Native and EncodingSchemeUtf32Native decode() and SafeDecode() wrong stripping length

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sat Jun 14 12:05:26 PDT 2014


https://issues.dlang.org/show_bug.cgi?id=12853

Ketmar Dark <ketmar at ketmar.no-ip.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ketmar at ketmar.no-ip.org

--- Comment #1 from Ketmar Dark <ketmar at ketmar.no-ip.org> ---
test case:

import std.encoding;


void testUTF16 () {
  version(LittleEndian) {
    auto efrom = EncodingScheme.create("utf-16le");
    ubyte[6] sample = [154,1, 155,1, 156,1];
  }
  version(BigEndian) {
    auto efrom = EncodingScheme.create("utf-16be");
    ubyte[6] sample = [1,154, 1,155, 1,156];
  }
  const(ubyte)[] ub = cast(const(ubyte)[])sample;
  dchar dc = efrom.safeDecode(ub);
  assert(dc == 410);
  assert(ub.length == 4);
}


void testUTF32 () {
  version(LittleEndian) {
    auto efrom = EncodingScheme.create("utf-32le");
    ubyte[12] sample = [154,1,0,0, 155,1,0,0, 156,1,0,0];
  }
  version(BigEndian) {
    auto efrom = EncodingScheme.create("utf-32be");
    ubyte[12] sample = [0,0,1,154, 0,0,1,155, 0,0,1,156];
  }
  const(ubyte)[] ub = cast(const(ubyte)[])sample;
  dchar dc = efrom.safeDecode(ub);
  assert(dc == 410);
  assert(ub.length == 8);
}


void main () {
  testUTF16();
  testUTF32();
}

--


More information about the Digitalmars-d-bugs mailing list