using ModernKeePassLib.Cryptography;
using NUnit.Framework;

namespace ModernKeePassLib.Test.Cryptography
{
    [TestFixture]
    public class CryptoRandomTests
    {
        [Test]
        public void TestAddEntropy()
        {
            // just making sure it does not throw an exception
            Assert.DoesNotThrow(() => CryptoRandom.Instance.AddEntropy(new byte[1]));
        }

        [Test]
        public void TestGetRandomBytes()
        {
            const int length = 32;
            var bytes1 = CryptoRandom.Instance.GetRandomBytes(length);
            var bytes2 = CryptoRandom.Instance.GetRandomBytes(length);

            Assert.That(length, Is.EqualTo(bytes1.Length));
            Assert.That(bytes1, Is.Not.EqualTo(bytes2));
        }

        [Test]
        public void TestGeneratedBytesCount()
        {
            const int length = 1;
            CryptoRandom.Instance.GetRandomBytes(length);
            var count1 = CryptoRandom.Instance.GeneratedBytesCount;
            CryptoRandom.Instance.GetRandomBytes(length);
            var count2 = CryptoRandom.Instance.GeneratedBytesCount;

            Assert.That(count2, Is.GreaterThan(count1));
        }
    }
}

