testsM = TestList . (testNewSV:) . map test $
  [ testSem "MSem" MSem.new MSem.wait MSem.signal
  , testSem "MSemN" MSemN.new (flip MSemN.wait 1) (flip MSemN.signal 1)
  , testSem "MSemN2" MSemN2.new (flip MSemN2.wait 1) (flip MSemN2.signal 1)
  , testSSem "SSem" SSem.new SSem.wait SSem.signal SSem.getValue
  ]
testsM = TestList . (testNewSV:) . map test $
  [ testSem "MSem" MSem.new MSem.wait MSem.signal
  , testSem "MSemN" MSemN.new (flip MSemN.wait 1) (flip MSemN.signal 1)
  , testSem "MSemN2" MSemN2.new (flip MSemN2.wait 1) (flip MSemN2.signal 1)
  , testSSem "SSem" SSem.new SSem.wait SSem.signal SSem.getValue
  ]
testsM = TestList . (testNewSV:) . map test $
  [ testSem "MSem" MSem.new MSem.wait MSem.signal
  , testSem "MSemN" MSemN.new (flip MSemN.wait 1) (flip MSemN.signal 1)
  , testSem "MSemN2" MSemN2.new (flip MSemN2.wait 1) (flip MSemN2.signal 1)
  , testSSem "SSem" SSem.new SSem.wait SSem.signal SSem.getValue
  ]