public static void Dispose_InvokesProviderReleaseMethod()
    {
        var          providerMock = new Mock <ILockProvider>();
        const string resource     = "resource";
        var          timeout      = new TimeSpan(123);
        var          provider     = providerMock.Object;

        providerMock.Setup(x => x.Release(resource));
        var instance = new EFCoreLock(provider, resource, timeout);

        instance.Dispose();

        providerMock.Verify(x => x.Release(resource));

        instance.Dispose();

        providerMock.Verify(x => x.Release(resource));
    }
    public static void Ctor_CreatesInstance()
    {
        var          providerMock = new Mock <ILockProvider>();
        const string resource     = "resource";
        var          timeout      = new TimeSpan(123);

        providerMock.Setup(x => x.Acquire(resource, timeout));
        var provider = providerMock.Object;

        var instance = new EFCoreLock(provider, resource, timeout);

        Assert.Equal(provider,
                     Assert.IsAssignableFrom <ILockProvider>(
                         instance.GetFieldValue("_provider")));
        Assert.Equal(resource,
                     Assert.IsType <string>(
                         instance.GetFieldValue("_resource")));
        providerMock.Verify(x => x.Acquire(resource, timeout));
    }