using Quadarax.Foundation.Core.Value.Generators; namespace qdr.fnd.core.test.Value.Generators { public class TinyHashTest { [Test(TestOf = typeof(TinyHash))] public void ImplementsInterface() { Assert.That(new TinyHash(), Is.InstanceOf>()); } [Test(TestOf = typeof(TinyHash))] public void ConstructorFail() { // ReSharper disable once ObjectCreationAsStatement Assert.Throws(() => new TinyHash(null!, 5)); // ReSharper disable once ObjectCreationAsStatement Assert.Throws(() => new TinyHash(string.Empty, 5)); // ReSharper disable once ObjectCreationAsStatement Assert.Throws(() => new TinyHash("A", 0)); // ReSharper disable once ObjectCreationAsStatement Assert.Throws(() => new TinyHash("A", -1)); // ReSharper disable once ObjectCreationAsStatement Assert.Throws(() => new TinyHash( 0)); // ReSharper disable once ObjectCreationAsStatement Assert.Throws(() => new TinyHash(-1)); } [Test(TestOf = typeof(TinyHash))] public void GenerateNumberDefault() { var generator = new TinyHash(); var result1 = generator.NewId(); var result2 = generator.NewId(); Assert.That(result1, Is.Not.Null); Assert.That(result2, Is.Not.Null); Assert.That(result2, Is.Not.EqualTo(result1)); Assert.That(result1.Length, Is.EqualTo(TinyHash.DefaultLength)); Assert.That(result2.Length, Is.EqualTo(TinyHash.DefaultLength)); Assert.That(ValueAmongChars(result1, TinyHash.DefaultCharset), "value has some chars out of defined charset."); Assert.That(ValueAmongChars(result2, TinyHash.DefaultCharset), "value has some chars out of defined charset."); } [Test(TestOf = typeof(TinyHash))] public void GenerateNumberSpecificLength() { var length = 3; var generator = new TinyHash(length); var result1 = generator.NewId(); var result2 = generator.NewId(); Assert.That(result1, Is.Not.Null); Assert.That(result2, Is.Not.Null); Assert.That(result2, Is.Not.EqualTo(result1)); Assert.That(result1.Length, Is.EqualTo(length)); Assert.That(result2.Length, Is.EqualTo(length)); Assert.That(ValueAmongChars(result1, TinyHash.DefaultCharset), "value has some chars out of defined charset."); Assert.That(ValueAmongChars(result2, TinyHash.DefaultCharset), "value has some chars out of defined charset."); } [Test(TestOf = typeof(TinyHash))] public void GenerateNumberCustomCharset() { var charset = "xyz"; var generator = new TinyHash(charset, TinyHash.DefaultLength); var result1 = generator.NewId(); var result2 = generator.NewId(); Assert.That(result1, Is.Not.Null); Assert.That(result2, Is.Not.Null); Assert.That(result2, Is.Not.EqualTo(result1)); Assert.That(result1.Length, Is.EqualTo(TinyHash.DefaultLength)); Assert.That(result2.Length, Is.EqualTo(TinyHash.DefaultLength)); Assert.That(ValueAmongChars(result1,charset), "value has some chars out of defined charset."); Assert.That(ValueAmongChars(result2, charset), "value has some chars out of defined charset."); } #region *** Private methods *** private bool ValueAmongChars(string value, string charset) { foreach (var c in value) { if (!charset.Contains(c)) return false; } return true; } #endregion } }