Added license key class that had been lingering in the code snippets sections of my homepage for months now
git-svn-id: file:///srv/devel/repo-conversion/nusu@6 d2e56fa2-650e-0410-a79f-9358c0239efd
This commit is contained in:
parent
c346a07ab0
commit
f4b2062e19
4 changed files with 317 additions and 2 deletions
75
Source/Licensing/LicenseKey.Test.cs
Normal file
75
Source/Licensing/LicenseKey.Test.cs
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
|
||||
#if UNITTEST
|
||||
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace Nuclex.Licensing {
|
||||
|
||||
/// <summary>Unit test for the license key class</summary>
|
||||
[TestFixture]
|
||||
public class LicenseKeyTest {
|
||||
|
||||
/// <summary>Validates the correct translation of keys to GUIDs and back</summary>
|
||||
[Test]
|
||||
public void TestGuidKeyConversion() {
|
||||
|
||||
for(int i = 0; i < 128; ++i) {
|
||||
|
||||
// Create a new BitArray with the n.th bit set
|
||||
BitArray guidBits = new BitArray(128);
|
||||
guidBits[i] = true;
|
||||
|
||||
// Create a GUID from this Bitarray
|
||||
byte[] guidBytes = new byte[16];
|
||||
guidBits.CopyTo(guidBytes, 0);
|
||||
Guid originalGuid = new Guid(guidBytes);
|
||||
|
||||
// Convert the GUID into a license key and back to a GUID
|
||||
string licenseKey = new LicenseKey(originalGuid).ToString();
|
||||
Guid rebuiltGuid = LicenseKey.Parse(licenseKey).ToGuid();
|
||||
|
||||
// Verify that the original GUID matches the fore-and-back converted one
|
||||
Assert.AreEqual(originalGuid, rebuiltGuid, "Test for GUID bit " + i);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>Tests whether license keys can be modified without destroying them</summary>
|
||||
[Test]
|
||||
public void TestKeyModification() {
|
||||
|
||||
for(int i = 0; i < 4; ++i) {
|
||||
for(int j = 0; j < 8; ++j) {
|
||||
|
||||
LicenseKey testKey = new LicenseKey(
|
||||
new Guid(-1, -1, -1, 255, 255, 255, 255, 255, 255, 255, 255)
|
||||
);
|
||||
|
||||
string originalString = testKey.ToString();
|
||||
testKey[i] &= ~(1 << j);
|
||||
string modifiedString = testKey.ToString();
|
||||
|
||||
Assert.IsTrue(
|
||||
originalString != modifiedString, "Modified string differs from original"
|
||||
);
|
||||
|
||||
testKey[i] |= (1 << j);
|
||||
string revertedString = testKey.ToString();
|
||||
|
||||
Assert.AreEqual(
|
||||
originalString, revertedString, "Original state restorable"
|
||||
);
|
||||
|
||||
} // for j
|
||||
} // for i
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} // namespace Nuclex.Licensing
|
||||
|
||||
#endif // UNITTEST
|
||||
Loading…
Add table
Add a link
Reference in a new issue