Wolfgang Thallergcc 15.1.0ada185d1 year agoHistory
167 lines · 3.9 KB · D
RawDownload
@safe unittest{    import std.encoding;     assert(encodingName!(char) == "UTF-8");    assert(encodingName!(wchar) == "UTF-16");    assert(encodingName!(dchar) == "UTF-32");    assert(encodingName!(AsciiChar) == "ASCII");    assert(encodingName!(Latin1Char) == "ISO-8859-1");    assert(encodingName!(Latin2Char) == "ISO-8859-2");    assert(encodingName!(Windows1250Char) == "windows-1250");    assert(encodingName!(Windows1251Char) == "windows-1251");    assert(encodingName!(Windows1252Char) == "windows-1252");} @safe pure unittest{    import std.encoding;     assert( canEncode!(Latin1Char)('A'));    assert( canEncode!(Latin2Char)('A'));    assert(!canEncode!(AsciiChar)('\u00A0'));    assert( canEncode!(Latin1Char)('\u00A0'));    assert( canEncode!(Latin2Char)('\u00A0'));    assert( canEncode!(Windows1250Char)('\u20AC'));    assert(!canEncode!(Windows1250Char)('\u20AD'));    assert(!canEncode!(Windows1250Char)('\uFFFD'));    assert( canEncode!(Windows1251Char)('\u0402'));    assert(!canEncode!(Windows1251Char)('\u20AD'));    assert(!canEncode!(Windows1251Char)('\uFFFD'));    assert( canEncode!(Windows1252Char)('\u20AC'));    assert(!canEncode!(Windows1252Char)('\u20AD'));    assert(!canEncode!(Windows1252Char)('\uFFFD'));    assert(!canEncode!(char)(cast(dchar) 0x110000));} @safe pure unittest{    import std.encoding;     import std.algorithm.searching : find;    import std.utf : byDchar;     assert("The quick brown fox"        .byDchar        .find!(x => !canEncode!AsciiChar(x))        .empty);} @system pure unittest{    import std.encoding;     assert(!isValidCodeUnit(cast(char) 0xC0));    assert(!isValidCodeUnit(cast(char) 0xFF));    assert( isValidCodeUnit(cast(wchar) 0xD800));    assert(!isValidCodeUnit(cast(dchar) 0xD800));    assert(!isValidCodeUnit(cast(AsciiChar) 0xA0));    assert( isValidCodeUnit(cast(Windows1250Char) 0x80));    assert(!isValidCodeUnit(cast(Windows1250Char) 0x81));    assert( isValidCodeUnit(cast(Windows1251Char) 0x80));    assert(!isValidCodeUnit(cast(Windows1251Char) 0x98));    assert( isValidCodeUnit(cast(Windows1252Char) 0x80));    assert(!isValidCodeUnit(cast(Windows1252Char) 0x81));} @system pure unittest{    import std.encoding;     assert( isValid("\u20AC100"));    assert(!isValid(cast(char[3])[167, 133, 175]));} @system pure unittest{    import std.encoding;     assert(sanitize("hello \xF0\x80world") == "hello \xEF\xBF\xBDworld");} @system pure unittest{    import std.encoding;     assert(firstSequence("\u20AC1000") == "\u20AC".length);    assert(firstSequence("hel") == "h".length);} @system pure unittest{    import std.encoding;     assert(lastSequence("1000\u20AC") == "\u20AC".length);    assert(lastSequence("hellö") == "ö".length);} @system pure unittest{    import std.encoding;     assert(index("\u20AC100",1) == 3);    assert(index("hällo",2) == 3);} @system unittest{    import std.encoding;     string s = "hello";    string t;    foreach (c;codePoints(s))    {        t ~= cast(char) c;    }    assert(s == t);} @system unittest{    import std.encoding;     char[] a;    foreach (c;codeUnits!(char)(cast(dchar)'\u20AC'))    {        a ~= c;    }    assert(a.length == 3);    assert(a[0] == 0xE2);    assert(a[1] == 0x82);    assert(a[2] == 0xAC);} @system pure unittest{    import std.encoding;     wstring ws;    // transcode from UTF-8 to UTF-16    transcode("hello world",ws);    assert(ws == "hello world"w);     Latin1String ls;    // transcode from UTF-16 to ISO-8859-1    transcode(ws, ls);    assert(ls == "hello world");} @system unittest{    import std.encoding;     import std.format : format;     auto ts = dchar(0x0000FEFF) ~ "Hello World"d;     auto entry = getBOM(cast(ubyte[]) ts);    version (BigEndian)    {        assert(entry.schema == BOM.utf32be, format("%s", entry.schema));    }    else    {        assert(entry.schema == BOM.utf32le, format("%s", entry.schema));    }} 

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t