|
4 | 4 | using System.Collections.Generic;
|
5 | 5 | using System.Reflection;
|
6 | 6 | using Xunit;
|
| 7 | +using System.Linq; |
| 8 | +using System.Collections; |
| 9 | +using System.Text; |
7 | 10 |
|
8 | 11 | namespace QRCoderTests
|
9 | 12 | {
|
@@ -90,6 +93,56 @@ public void can_recognize_enconding_byte()
|
90 | 93 | result.ShouldBe(4);
|
91 | 94 | }
|
92 | 95 |
|
| 96 | + [Fact] |
| 97 | + [Category("QRGenerator/TextEncoding")] |
| 98 | + public void can_encode_numeric() |
| 99 | + { |
| 100 | + var gen = new QRCodeGenerator(); |
| 101 | + var qrData = gen.CreateQrCode("123", QRCodeGenerator.ECCLevel.L); |
| 102 | + var result = string.Join("", qrData.ModuleMatrix.Select(x => x.ToBitString()).ToArray()); |
| 103 | + result.ShouldBe("0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111011111011111110000000010000010010100100000100000000101110100110001011101000000001011101001110010111010000000010111010001010101110100000000100000100001101000001000000001111111010101011111110000000000000000111110000000000000000110110100110101000001000000001110110000001010101100000000000110111100001101110000000000101111010011000001111000000000011101111100010011010000000000000000111110010101100000000111111100010111110001000000001000001000011101110010000000010111010101110110110100000000101110101011100011100000000001011101001100010001110000000010000010101001101010100000000111111101101000001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); |
| 104 | + } |
| 105 | + |
| 106 | + [Fact] |
| 107 | + [Category("QRGenerator/TextEncoding")] |
| 108 | + public void can_encode_alphanumeric() |
| 109 | + { |
| 110 | + var gen = new QRCodeGenerator(); |
| 111 | + var qrData = gen.CreateQrCode("123ABC", QRCodeGenerator.ECCLevel.L); |
| 112 | + var result = string.Join("", qrData.ModuleMatrix.Select(x => x.ToBitString()).ToArray()); |
| 113 | + result.ShouldBe("0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111010111011111110000000010000010001100100000100000000101110101101001011101000000001011101011001010111010000000010111010100100101110100000000100000100111101000001000000001111111010101011111110000000000000000000110000000000000000111100101111110011101000000000111100010011110001110000000000100010100100000001000000000011110011111001110011000000001111101110101001000000000000000000000111100100100100000000111111100001100100110000000001000001000100001111110000000010111010010011111010100000000101110101111001011110000000001011101010101011000000000000010000010111001000010000000000111111101010010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); |
| 114 | + } |
| 115 | + |
| 116 | + [Fact] |
| 117 | + [Category("QRGenerator/TextEncoding")] |
| 118 | + public void can_encode_byte() |
| 119 | + { |
| 120 | + var gen = new QRCodeGenerator(); |
| 121 | + var qrData = gen.CreateQrCode("äöü", QRCodeGenerator.ECCLevel.L); |
| 122 | + var result = string.Join("", qrData.ModuleMatrix.Select(x => x.ToBitString()).ToArray()); |
| 123 | + result.ShouldBe("0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111001011011111110000000010000010011100100000100000000101110101101101011101000000001011101001010010111010000000010111010001010101110100000000100000100000101000001000000001111111010101011111110000000000000000110110000000000000000111011111111011000100000000001001110001100010000010000000010011110001010001001000000000110011010000001000110000000001110001111001010110110000000000000000111101010011100000000111111101111011100110000000001000001010011101110010000000010111010110101110010100000000101110100110001000110000000001011101011001000100010000000010000010100000100011000000000111111101110101010111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); |
| 124 | + } |
| 125 | + } |
| 126 | + |
| 127 | + public static class ExtensionMethods |
| 128 | + { |
| 129 | + public static string ToBitString(this BitArray bits) |
| 130 | + { |
| 131 | + var sb = new StringBuilder(); |
| 132 | + int bitLength = 0; |
| 133 | +#if !NETCOREAPP1_1 |
| 134 | + bitLength = bits.Count; |
| 135 | +#else |
| 136 | + bitLength = bits.Length; |
| 137 | +#endif |
| 138 | + for (int i = 0; i < bitLength; i++) |
| 139 | + { |
| 140 | + char c = bits[i] ? '1' : '0'; |
| 141 | + sb.Append(c); |
| 142 | + } |
| 143 | + |
| 144 | + return sb.ToString(); |
| 145 | + } |
93 | 146 | }
|
94 | 147 | }
|
95 | 148 |
|
|
0 commit comments