using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
using ModernKeePassLib.Cryptography.Hash;
using ModernKeePassLib.Utility;

namespace ModernKeePassLib.Test.Cryptography.Hash
{
    [TestClass]
    public class SHAManagedTests
    {
        [TestMethod]
        public void TestSha256ComputeHash()
        {
            var expectedHash = "B822F1CD2DCFC685B47E83E3980289FD5D8E3FF3A82DEF24D7D1D68BB272EB32";
            var message = StrUtil.Utf8.GetBytes("testing123");
            using (var result = new SHA256Managed())
            {
                Assert.AreEqual(ByteToString(result.ComputeHash(message)), expectedHash);
            }
        }

        [TestMethod]
        public void TestSha512ComputeHash()
        {
            var expectedHash = "4120117B3190BA5E24044732B0B09AA9ED50EB1567705ABCBFA78431A4E0A96B1152ED7F4925966B1C82325E186A8100E692E6D2FCB6702572765820D25C7E9E";
            var message = StrUtil.Utf8.GetBytes("testing123");
            using (var result = new SHA512Managed())
            {
                Assert.AreEqual(ByteToString(result.ComputeHash(message)), expectedHash);
            }
        }
        private static string ByteToString(byte[] buff)
        {
            string sbinary = "";

            for (int i = 0; i < buff.Length; i++)
            {
                sbinary += buff[i].ToString("X2"); // hex format
            }
            return (sbinary);
        }
    }
}