public void TestNameMangling()
        {
            string ToSafeNameChecked(string name)
            {
                var safeName = SqlSemaphore.ToSafeName(name);

                (safeName.Length > 0).ShouldEqual(true, "was: " + safeName);
                // max name length here based on constants in SqlSemaphore.cs
                (safeName.Length <= (115 - 19)).ShouldEqual(true, "was: " + safeName);
                Regex.IsMatch(safeName, @"^[a-zA-Z0-9]+$").ShouldEqual(true, "was: " + safeName);
                return(safeName);
            }

            ToSafeNameChecked(string.Empty);
            ToSafeNameChecked("a b");
            ToSafeNameChecked(new string('a', 1000));
            ToSafeNameChecked(string.Join(string.Empty, Enumerable.Range(0, byte.MaxValue).Select(i => (char)i)));

            Assert.AreNotEqual(ToSafeNameChecked(new string('b', 500)), ToSafeNameChecked(new string('b', 499) + "B"));

            ToSafeNameChecked(new string('x', 200)).Length.ShouldEqual(115 - 30);

            Enumerable.Range(0, 1000)
            .Select(i => ToSafeNameChecked(i.ToString()))
            .Distinct()
            .Count()
            .ShouldEqual(1000);
        }
            static string ToSafeNameChecked(string name)
            {
                var safeName = SqlSemaphore.ToSafeName(name);

                (safeName.Length > 0).ShouldEqual(true, "was: " + safeName);
                // max name length here based on constants in SqlSemaphore.cs
                (safeName.Length <= (115 - 19)).ShouldEqual(true, "was: " + safeName);
                Regex.IsMatch(safeName, @"^[a-zA-Z0-9]+$").ShouldEqual(true, "was: " + safeName);
                return(safeName);
            }
 public void TestNameManglingCompatibility()
 {
     SqlSemaphore.ToSafeName(string.Empty).ShouldEqual("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855semaphore");
     SqlSemaphore.ToSafeName("a_simple_name").ShouldEqual("a5fsimple5fn5becacaa1afce7173bf71d20caf31364c2b10c21f7490c942fdc45467aba2d2asemaphore");
     SqlSemaphore.ToSafeName("a").ShouldEqual("aca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bbsemaphore");
     SqlSemaphore.ToSafeName("A").ShouldEqual("A559aead08264d5795d3909718cdd05abd49572e84fe55590eef31a88a08fdffdsemaphore");
     SqlSemaphore.ToSafeName("0").ShouldEqual("05feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9semaphore");
     SqlSemaphore.ToSafeName("!?#").ShouldEqual("213f231be5b6313c68d3c674c3b17246eaaa3222fe5bc23d9173ac6f58319c6004d6bfsemaphore");
     SqlSemaphore.ToSafeName(string.Join(string.Empty, Enumerable.Range(0, byte.MaxValue).Select(i => (char)i)))
     .ShouldEqual("0123456789ab7fb98786c16c175d232ab161b5e604c5792e6befd4e1e8d4ecac9d568a6db524semaphore");
 }