void NumericEncoding() { QrSegment segment = QrSegment.MakeNumeric(TextNumeric); Assert.Equal(segment.EncodingMode, QrSegment.Mode.Numeric); Assert.Equal(TextNumeric.Length, segment.NumChars); BitArray data = segment.GetData(); Assert.Equal(BitLengthNumeric, data.Length); Assert.Equal(BitsNumeric, BitArrayToByteArray(data)); }
// Creates QR Codes with manually specified segments for better compactness. private static void DoSegmentDemo() { QrCode qr; List <QrSegment> segs; // Illustration "silver" var silver0 = "THE SQUARE ROOT OF 2 IS 1."; var silver1 = "41421356237309504880168872420969807856967187537694807317667973799"; qr = QrCode.EncodeText(silver0 + silver1, Ecc.Low); WritePng(qr.ToImage(10, 3), "sqrt2-monolithic-QR.png"); segs = new List <QrSegment>() { QrSegment.MakeAlphanumeric(silver0), QrSegment.MakeNumeric(silver1) }; qr = QrCode.EncodeSegments(segs, Ecc.Low); WritePng(qr.ToImage(10, 3), "sqrt2-segmented-QR.png"); // Illustration "golden" var golden0 = "Golden ratio φ = 1."; var golden1 = "6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911374"; var golden2 = "......"; qr = QrCode.EncodeText(golden0 + golden1 + golden2, Ecc.Low); WritePng(qr.ToImage(8, 5), "phi-monolithic-QR.png"); segs = new List <QrSegment>() { QrSegment.MakeBytes(Encoding.UTF8.GetBytes(golden0)), QrSegment.MakeNumeric(golden1), QrSegment.MakeAlphanumeric(golden2) }; qr = QrCode.EncodeSegments(segs, Ecc.Low); WritePng(qr.ToImage(8, 5), "phi-segmented-QR.png"); // Illustration "Madoka": kanji, kana, Cyrillic, full-width Latin, Greek characters var madoka = "「魔法少女まどか☆マギカ」って、 ИАИ desu κα?"; qr = QrCode.EncodeText(madoka, Ecc.Low); WritePng(qr.ToImage(9, 4), "madoka-utf8-QR.png"); segs = new List <QrSegment>() { QrSegmentAdvanced.MakeKanji(madoka) }; qr = QrCode.EncodeSegments(segs, Ecc.Low); WritePng(qr.ToImage(9, 4), "madoka-kanji-QR.png"); }
void RejectNonNumeric() { Assert.Throws <ArgumentOutOfRangeException>(() => QrSegment.MakeNumeric("abc")); }