diff --git a/cabal-install/tests/UnitTests.hs b/cabal-install/tests/UnitTests.hs
index 704c27507a2538397cb0362db175489b79c5f8bb..2f5de4e39e5e2624e21fb563c2d1e17f7c6e5c49 100644
--- a/cabal-install/tests/UnitTests.hs
+++ b/cabal-install/tests/UnitTests.hs
@@ -5,6 +5,7 @@ import Test.Framework
 
 import qualified UnitTests.Distribution.Client.Sandbox
 import qualified UnitTests.Distribution.Client.Targets
+import qualified UnitTests.Distribution.Client.Dependency.Modular.PSQ
 
 tests :: [Test]
 tests = [
@@ -12,6 +13,8 @@ tests = [
        UnitTests.Distribution.Client.Sandbox.tests
   ,testGroup "Distribution.Client.Targets"
        UnitTests.Distribution.Client.Targets.tests
+  ,testGroup "UnitTests.Distribution.Client.Dependency.Modular.PSQ"
+        UnitTests.Distribution.Client.Dependency.Modular.PSQ.tests
   ]
 
 main :: IO ()
diff --git a/cabal-install/tests/UnitTests/Distribution/Client/Dependency/Modular/PSQ.hs b/cabal-install/tests/UnitTests/Distribution/Client/Dependency/Modular/PSQ.hs
new file mode 100644
index 0000000000000000000000000000000000000000..022ea979f1f85672e6b2979ccea42d19d7544d74
--- /dev/null
+++ b/cabal-install/tests/UnitTests/Distribution/Client/Dependency/Modular/PSQ.hs
@@ -0,0 +1,30 @@
+module UnitTests.Distribution.Client.Dependency.Modular.PSQ (
+  tests
+  ) where
+
+import Distribution.Client.Dependency.Modular.PSQ
+
+import Test.Framework                  as TF (Test)
+import Test.Framework.Providers.HUnit  (testCase)
+import Test.HUnit                      (Assertion, assertEqual)
+
+tests :: [TF.Test]
+tests = [ testCase "splitsAltImplementation" splitsTest
+        ]
+
+-- | Original splits implementation
+splits' :: PSQ k a -> PSQ k (a, PSQ k a)
+splits' xs =
+  casePSQ xs
+    (PSQ [])
+    (\ k v ys -> cons k (v, ys) (fmap (\ (w, zs) -> (w, cons k v zs)) (splits' ys)))
+
+splitsTest :: Assertion
+splitsTest = do
+  assertEqual "" (splits' psq1) (splits psq1)
+  assertEqual "" (splits' psq2) (splits psq2)
+  assertEqual "" (splits' psq3) (splits psq3)
+  where
+    psq1 = PSQ [ (1,2), (3,4), (5,6), (7,8) ] :: PSQ Int Int
+    psq2 = PSQ [ (1,2) ] :: PSQ Int Int
+    psq3 = PSQ [] :: PSQ Int Int