text: require_relative '../../spec_helper'
  
  describe "Mutex#unlock" do
    it "raises ThreadError unless Mutex is locked" do
      mutex = Mutex.new
      -> { mutex.unlock }.should raise_error(ThreadError)
    end
  
    it "raises ThreadError unless thread owns Mutex" do
      mutex = Mutex.new
      wait = Mutex.new
      wait.lock
      th = Thread.new do
        mutex.lock
        wait.lock
      end
  
      # avoid race on mutex.lock
      Thread.pass until mutex.locked?
      Thread.pass until th.stop?
  
      -> { mutex.unlock }.should raise_error(ThreadError)
  
      wait.unlock
      th.join
    end
  
    it "raises ThreadError if previously locking thread is gone" do
      mutex = Mutex.new
      th = Thread.new do
        mutex.lock
      end
  
      th.join
  
      -> { mutex.unlock }.should raise_error(ThreadError)
    end
  end
  