Files
CSSUDII.Sodium/CSSUDII.Sodium.Tests/HelpersTest.cs

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);
}
}