Skip to content

Commit 3e4b641

Browse files
Fixes for edge case "000"
1 parent e8cfa72 commit 3e4b641

File tree

2 files changed

+30
-9
lines changed

2 files changed

+30
-9
lines changed

src/LZString.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ private static string Decompress(int length, int resetValue, Func<int, char> get
392392

393393
for (i = 0; i < 3; i += 1)
394394
{
395-
dictionary.Add(i.ToString());
395+
dictionary.Add(((char)i).ToString());
396396
}
397397

398398
maxpower = (int)Math.Pow(2, 2);
@@ -537,7 +537,7 @@ private static string Decompress(int length, int resetValue, Func<int, char> get
537537
}
538538
else
539539
{
540-
if (c == dictionary.Count)
540+
if (c2 == dictionary.Count)
541541
{
542542
entry = w + w[0];
543543
}

tests/LZStringTests.cs

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,16 @@ public static IEnumerable<LZStringTestCase> TestCases()
3030
CompressedUTF16 = "䴁䧆ಹ僨ᾦ≬ᢠ",
3131
CompressedEncodedURIComponent = "mcMmmGTNDIPwyJMMQ"
3232
};
33+
34+
yield return new LZStringTestCase
35+
{
36+
Name = "Edge Case 1",
37+
Uncompressed = "000",
38+
Compressed = \0",
39+
CompressedBase64 = "Awo=",
40+
CompressedUTF16 = "ƥ ",
41+
CompressedEncodedURIComponent = "Awo"
42+
};
3343
}
3444

3545
[TestCaseSource(nameof(TestCases))]
@@ -74,7 +84,6 @@ public void CompressToEncodedURIComponent(LZStringTestCase test)
7484
Assert.That(LZString.CompressToEncodedURIComponent(test.Uncompressed), Is.EqualTo(test.CompressedEncodedURIComponent));
7585
}
7686

77-
7887
[TestCaseSource(nameof(TestCases))]
7988
public void DecompressFromEncodedURIComponent(LZStringTestCase test)
8089
{
@@ -94,15 +103,19 @@ public void CompatibilityDecompressEncodedURIComponentFromNode(LZStringTestCase
94103
{
95104
Assert.Fail($"Invalid EncodedURIComponent string: '{compress}'{Environment.NewLine}{exc.Message}");
96105
}
97-
Assert.That(uncompress, Is.EqualTo(test.Uncompressed), $"Compression result: {compress}");
106+
Console.WriteLine("lz-string compression result:");
107+
Console.WriteLine(compress);
108+
Assert.That(uncompress, Is.EqualTo(test.Uncompressed));
98109
}
99110

100111
[TestCaseSource(nameof(TestCases))]
101112
public void CompatibilityCompressEncodedURIComponentFromCSharp(LZStringTestCase test)
102113
{
103114
var compress = LZString.CompressToEncodedURIComponent(test.Uncompressed);
104115
var uncompress = RunNodeLzString("decompressFromEncodedURIComponent", compress);
105-
Assert.That(uncompress, Is.EqualTo(test.Uncompressed), $"Compression result: {compress}");
116+
Console.WriteLine("c# compression result:");
117+
Console.WriteLine(compress);
118+
Assert.That(uncompress, Is.EqualTo(test.Uncompressed));
106119
}
107120

108121
[TestCaseSource(nameof(TestCases))]
@@ -118,31 +131,39 @@ public void CompatibilityDecompressBase64FromNode(LZStringTestCase test)
118131
{
119132
Assert.Fail($"Invalid Base64 string: '{compress}'{Environment.NewLine}{exc.Message}");
120133
}
121-
Assert.That(uncompress, Is.EqualTo(test.Uncompressed), $"Compression result: {compress}");
134+
Console.WriteLine("lz-string compression result:");
135+
Console.WriteLine(compress);
136+
Assert.That(uncompress, Is.EqualTo(test.Uncompressed));
122137
}
123138

124139
[TestCaseSource(nameof(TestCases))]
125140
public void CompatibilityCompressBase64FromCSharp(LZStringTestCase test)
126141
{
127142
var compress = LZString.CompressToBase64(test.Uncompressed);
128143
var uncompress = RunNodeLzString("decompressFromBase64", compress);
129-
Assert.That(uncompress, Is.EqualTo(test.Uncompressed), $"Compression result: {compress}");
144+
Console.WriteLine("c# compression result:");
145+
Console.WriteLine(compress);
146+
Assert.That(uncompress, Is.EqualTo(test.Uncompressed));
130147
}
131148

132149
[TestCaseSource(nameof(TestCases))]
133150
public void CompatibilityDecompressUTF16FromNode(LZStringTestCase test)
134151
{
135152
var compress = RunNodeLzString("compressToUTF16", test.Uncompressed);
136153
var uncompress = LZString.DecompressFromUTF16(compress);
137-
Assert.That(uncompress, Is.EqualTo(test.Uncompressed), $"Compression result: {compress}");
154+
Console.WriteLine("lz-string compression result:");
155+
Console.WriteLine(compress);
156+
Assert.That(uncompress, Is.EqualTo(test.Uncompressed));
138157
}
139158

140159
[TestCaseSource(nameof(TestCases))]
141160
public void CompatibilityCompressUTF16FromCSharp(LZStringTestCase test)
142161
{
143162
var compress = LZString.CompressToUTF16(test.Uncompressed);
144163
var uncompress = RunNodeLzString("decompressFromUTF16", compress);
145-
Assert.That(uncompress, Is.EqualTo(test.Uncompressed), $"Compression result: {compress}");
164+
Console.WriteLine("c# compression result:");
165+
Console.WriteLine(compress);
166+
Assert.That(uncompress, Is.EqualTo(test.Uncompressed));
146167
}
147168

148169
public struct LZStringTestCase

0 commit comments

Comments
 (0)