diff --git a/parser-combinators-tests.cabal b/parser-combinators-tests.cabal
--- a/parser-combinators-tests.cabal
+++ b/parser-combinators-tests.cabal
@@ -1,5 +1,5 @@
 name:                 parser-combinators-tests
-version:              1.0.3
+version:              1.1.0
 cabal-version:        1.18
 tested-with:          GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.5
 license:              BSD3
@@ -34,7 +34,7 @@
                     , hspec-megaparsec >= 2.0 && < 3.0
                     , megaparsec       >= 7.0 && < 8.0
                     , megaparsec-tests >= 7.0 && < 8.0
-                    , parser-combinators == 1.0.2
+                    , parser-combinators == 1.1.0
   other-modules:      Control.Applicative.CombinatorsSpec
                     , Control.Applicative.PermutationsSpec
                     , Control.Monad.Combinators.ExprSpec
diff --git a/tests/Control/Monad/Combinators/ExprSpec.hs b/tests/Control/Monad/Combinators/ExprSpec.hs
--- a/tests/Control/Monad/Combinators/ExprSpec.hs
+++ b/tests/Control/Monad/Combinators/ExprSpec.hs
@@ -3,6 +3,7 @@
 
 module Control.Monad.Combinators.ExprSpec (spec) where
 
+import Control.Monad
 import Control.Monad.Combinators.Expr
 import Data.Monoid ((<>))
 import Test.Hspec
@@ -51,6 +52,7 @@
                    , etok '+'
                    , etok '-'
                    , etok '/'
+                   , etok '?'
                    , etok '^'
                    ])
 
@@ -64,6 +66,7 @@
   | Pro Node Node -- ^ product
   | Div Node Node -- ^ division
   | Exp Node Node -- ^ exponentiation
+  | If Node Node Node -- ^ ternary conditional operator
     deriving (Eq, Show)
 
 instance Enum Node where
@@ -76,6 +79,7 @@
   fromEnum (Div _ _) = 2
   fromEnum (Sum _ _) = 3
   fromEnum (Sub _ _) = 3
+  fromEnum (If _ _ _ ) = 4
   toEnum   _         = error "Oops!"
 
 instance Ord Node where
@@ -91,6 +95,7 @@
 showNode n@(Pro x y) = showGT n x ++ " * " ++ showGE n y
 showNode n@(Div x y) = showGT n x ++ " / " ++ showGE n y
 showNode n@(Exp x y) = showGE n x ++ " ^ " ++ showGT n y
+showNode n@(If c x y) = showGE n c ++ " ? " ++ showGT n x ++ " : " ++ showGT n y
 
 showGT :: Node -> Node -> String
 showGT parent node = (if node > parent then showCmp else showNode) node
@@ -121,7 +126,15 @@
 
 arbitraryN2 :: Int -> Gen Node
 arbitraryN2 0 = Val . getNonNegative <$> arbitrary
-arbitraryN2 n = elements [Sum,Sub,Pro,Div,Exp] <*> leaf <*> leaf
+arbitraryN2 n =
+  (join . elements)
+    [ pure Sum
+    , pure Sub
+    , pure Pro
+    , pure Div
+    , pure Exp
+    , If <$> leaf
+    ] <*> leaf <*> leaf
   where
     leaf = arbitraryN0 (n `div` 2)
 
@@ -157,4 +170,6 @@
   , [ InfixL  (Pro <$ symbol "*")
     , InfixL  (Div <$ symbol "/") ]
   , [ InfixL  (Sum <$ symbol "+")
-    , InfixL  (Sub <$ symbol "-")] ]
+    , InfixL  (Sub <$ symbol "-") ]
+  , [ TernR   ((If <$ symbol ":") <$ symbol "?") ]
+  ]
