Skip to content

Commit 60217f8

Browse files
committed
Added new test case to test correct text encoding
1 parent d24bb4d commit 60217f8

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

QRCoderTests/QRGeneratorTests.cs

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
using System.Collections.Generic;
55
using System.Reflection;
66
using Xunit;
7+
using System.Linq;
8+
using System.Collections;
9+
using System.Text;
710

811
namespace QRCoderTests
912
{
@@ -90,6 +93,56 @@ public void can_recognize_enconding_byte()
9093
result.ShouldBe(4);
9194
}
9295

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+
}
93146
}
94147
}
95148

0 commit comments

Comments
 (0)