123 lines
4.3 KiB
C#
123 lines
4.3 KiB
C#
using System;
|
|
using System.Text;
|
|
using NUnit.Framework;
|
|
|
|
namespace CSSUDII.Sodium.Tests;
|
|
|
|
[TestFixture]
|
|
[Parallelizable(ParallelScope.All)]
|
|
[TestOf(typeof(SodiumHelpers))]
|
|
public class HelpersTest
|
|
{
|
|
[Test]
|
|
[TestCase("foobar", "foobar", ExpectedResult = true)]
|
|
[TestCase("foobar", "foobaz", ExpectedResult = false)]
|
|
public bool TestMemoryCompare(string b1Str, string b2Str)
|
|
{
|
|
var b1 = Encoding.UTF8.GetBytes(b1Str);
|
|
var b2 = Encoding.UTF8.GetBytes(b2Str);
|
|
|
|
return SodiumHelpers.MemoryCompare(b1, b2);
|
|
}
|
|
|
|
|
|
[Test]
|
|
[TestCase("DEADBEEF", "deadbeef")]
|
|
public void TestBin2Hex(string binHex, string expectHex)
|
|
{
|
|
var bin = Convert.FromHexString(binHex);
|
|
|
|
var hex = SodiumHelpers.Bin2Hex(bin);
|
|
|
|
Assert.That(hex, Is.EqualTo(expectHex).IgnoreCase);
|
|
}
|
|
|
|
[Test]
|
|
[TestCase("F9FD8217F8F00EE5", SodiumBase64Variant.Original, ExpectedResult = "+f2CF/jwDuU=")]
|
|
[TestCase("F9FD8217F8F00EE5", SodiumBase64Variant.OriginalNoPadding, ExpectedResult = "+f2CF/jwDuU")]
|
|
[TestCase("F9FD8217F8F00EE5", SodiumBase64Variant.OriginalUrlSafe, ExpectedResult = "-f2CF_jwDuU=")]
|
|
[TestCase("F9FD8217F8F00EE5", SodiumBase64Variant.OriginalUrlSafeNoPadding, ExpectedResult = "-f2CF_jwDuU")]
|
|
public string TestBin2Base64(string binHex, SodiumBase64Variant variant)
|
|
{
|
|
var bin = Convert.FromHexString(binHex);
|
|
|
|
return SodiumHelpers.Bin2Base64(bin, variant);
|
|
}
|
|
|
|
[Test]
|
|
[TestCase("00000000000000000000000000000000", ExpectedResult = "01000000000000000000000000000000")]
|
|
[TestCase("FF000000000000000000000000000000", ExpectedResult = "00010000000000000000000000000000")]
|
|
[TestCase("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00", ExpectedResult = "00000000000000000000000000000001")]
|
|
public string TestIncrement(string nHex)
|
|
{
|
|
var n = Convert.FromHexString(nHex);
|
|
|
|
SodiumHelpers.Increment(n);
|
|
|
|
return Convert.ToHexString(n);
|
|
}
|
|
|
|
[Test]
|
|
// @formatter:off
|
|
[TestCase("00000000000000000000000000000000", "00000000000000000000000000000000", ExpectedResult = "00000000000000000000000000000000")]
|
|
[TestCase("FF000000000000000000000000000000", "FF000000000000000000000000000000", ExpectedResult = "FE010000000000000000000000000000")]
|
|
[TestCase("576F809E99346A475F20727603A1D41C", "6AE9809052ACEA8F7535E6ADE2613B6F", ExpectedResult = "C158012FECE054D7D4555824E602108C")]
|
|
// @formatter:on
|
|
public string TestAdd(string aHex, string bHex)
|
|
{
|
|
var a = Convert.FromHexString(aHex);
|
|
var b = Convert.FromHexString(bHex);
|
|
|
|
SodiumHelpers.Add(a, b);
|
|
|
|
return Convert.ToHexString(a);
|
|
}
|
|
|
|
[Test]
|
|
// @formatter:off
|
|
[TestCase("00000000000000000000000000000000", "00000000000000000000000000000000", ExpectedResult = "00000000000000000000000000000000")]
|
|
[TestCase("FE010000000000000000000000000000", "FF000000000000000000000000000000", ExpectedResult = "FF000000000000000000000000000000")]
|
|
[TestCase("6AE9809052ACEA8F7535E6ADE2613B6F", "576F809E99346A475F20727603A1D41C", ExpectedResult = "137A00F2B877804816157437DFC06652")]
|
|
// @formatter:on
|
|
public string TestSub(string aHex, string bHex)
|
|
{
|
|
var a = Convert.FromHexString(aHex);
|
|
var b = Convert.FromHexString(bHex);
|
|
|
|
SodiumHelpers.Sub(a, b);
|
|
|
|
return Convert.ToHexString(a);
|
|
}
|
|
|
|
[Test]
|
|
[TestCase("00000000000000000000000000000000", "00000000000000000000000000000000", ExpectedResult = 0)]
|
|
[TestCase("FE010000000000000000000000000000", "FF000000000000000000000000000000", ExpectedResult = 1)]
|
|
[TestCase("576F809E99346A475F20727603A1D41C", "6AE9809052ACEA8F7535E6ADE2613B6F", ExpectedResult = -1)]
|
|
public int TestCompare(string aHex, string bHex)
|
|
{
|
|
var a = Convert.FromHexString(aHex);
|
|
var b = Convert.FromHexString(bHex);
|
|
|
|
return SodiumHelpers.Compare(a, b);
|
|
}
|
|
|
|
[Test]
|
|
[TestCase("00000000000000000000000000000000", ExpectedResult = true)]
|
|
[TestCase("FE010000000000000000000000000000", ExpectedResult = false)]
|
|
public bool TestIsZero(string nHex)
|
|
{
|
|
var n = Convert.FromHexString(nHex);
|
|
|
|
return SodiumHelpers.IsZero(n);
|
|
}
|
|
|
|
[Test]
|
|
public void StackZero()
|
|
{
|
|
// I mean there's not a whole lot I can verify here.
|
|
// I guess just test that it doesn't crash?
|
|
|
|
SodiumHelpers.StackZero(32);
|
|
}
|
|
}
|