-- |
-- Module      : Test.FitSpec.Tuples
-- Copyright   : (c) 2015-2017 Rudy Matela
-- License     : 3-Clause BSD  (see the file LICENSE)
-- Maintainer  : Rudy Matela <rudy@matela.com.br>
--
-- ShowMutable instances: septuples up to 12-tuples
--
-- This is partly a Hack that allows those instances to be hidden from Haddock.
-- Otherwise Haddock documentation will look very ugly.
-- It also makes "Test.FitSpec.ShowMutable" more readable.
module Test.FitSpec.ShowMutable.Tuples () where

import Test.FitSpec.ShowMutable

instance (ShowMutable a, ShowMutable b, ShowMutable c, ShowMutable d,
          ShowMutable e, ShowMutable f, ShowMutable g)
      => ShowMutable (a,b,c,d,e,f,g) where
  mutantS :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> MutantS
mutantS (a
f,b
g,c
h,d
i,e
j,f
k,g
l) (a
f',b
g',c
h',d
i',e
j',f
k',g
l') = [MutantS] -> MutantS
mutantSTuple
                                                    [ a -> a -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS a
f a
f'
                                                    , b -> b -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS b
g b
g'
                                                    , c -> c -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS c
h c
h'
                                                    , d -> d -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS d
i d
i'
                                                    , e -> e -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS e
j e
j'
                                                    , f -> f -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS f
k f
k'
                                                    , g -> g -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS g
l g
l' ]

instance (ShowMutable a, ShowMutable b, ShowMutable c, ShowMutable d,
          ShowMutable e, ShowMutable f, ShowMutable g, ShowMutable h)
      => ShowMutable (a,b,c,d,e,f,g,h) where
  mutantS :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> MutantS
mutantS (a
f,b
g,c
h,d
i,e
j,f
k,g
l,h
m) (a
f',b
g',c
h',d
i',e
j',f
k',g
l',h
m') = [MutantS] -> MutantS
mutantSTuple
                                                      [ a -> a -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS a
f a
f'
                                                      , b -> b -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS b
g b
g'
                                                      , c -> c -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS c
h c
h'
                                                      , d -> d -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS d
i d
i'
                                                      , e -> e -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS e
j e
j'
                                                      , f -> f -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS f
k f
k'
                                                      , g -> g -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS g
l g
l'
                                                      , h -> h -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS h
m h
m' ]

instance (ShowMutable a, ShowMutable b, ShowMutable c, ShowMutable d,
          ShowMutable e, ShowMutable f, ShowMutable g, ShowMutable h,
          ShowMutable i)
      => ShowMutable (a,b,c,d,e,f,g,h,i) where
  mutantS :: (a, b, c, d, e, f, g, h, i)
-> (a, b, c, d, e, f, g, h, i) -> MutantS
mutantS (a
f,b
g,c
h,d
i,e
j,f
k,g
l,h
m,i
n) (a
f',b
g',c
h',d
i',e
j',f
k',g
l',h
m',i
n') = [MutantS] -> MutantS
mutantSTuple
    [ a -> a -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS a
f a
f'
    , b -> b -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS b
g b
g'
    , c -> c -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS c
h c
h'
    , d -> d -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS d
i d
i'
    , e -> e -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS e
j e
j'
    , f -> f -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS f
k f
k'
    , g -> g -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS g
l g
l'
    , h -> h -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS h
m h
m'
    , i -> i -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS i
n i
n' ]

instance (ShowMutable a, ShowMutable b, ShowMutable c, ShowMutable d,
          ShowMutable e, ShowMutable f, ShowMutable g, ShowMutable h,
          ShowMutable i, ShowMutable j)
      => ShowMutable (a,b,c,d,e,f,h,g,i,j) where
  mutantS :: (a, b, c, d, e, f, h, g, i, j)
-> (a, b, c, d, e, f, h, g, i, j) -> MutantS
mutantS (a
f,b
g,c
h,d
i,e
j,f
k,h
l,g
m,i
n,j
o) (a
f',b
g',c
h',d
i',e
j',f
k',h
l',g
m',i
n',j
o') = [MutantS] -> MutantS
mutantSTuple
    [ a -> a -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS a
f a
f'
    , b -> b -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS b
g b
g'
    , c -> c -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS c
h c
h'
    , d -> d -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS d
i d
i'
    , e -> e -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS e
j e
j'
    , f -> f -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS f
k f
k'
    , h -> h -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS h
l h
l'
    , g -> g -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS g
m g
m'
    , i -> i -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS i
n i
n'
    , j -> j -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS j
o j
o' ]

instance (ShowMutable a, ShowMutable b, ShowMutable c, ShowMutable d,
          ShowMutable e, ShowMutable f, ShowMutable g, ShowMutable h,
          ShowMutable i, ShowMutable j, ShowMutable k)
      => ShowMutable (a,b,c,d,e,f,g,h,i,j,k) where
  mutantS :: (a, b, c, d, e, f, g, h, i, j, k)
-> (a, b, c, d, e, f, g, h, i, j, k) -> MutantS
mutantS (a
f,b
g,c
h,d
i,e
j,f
k,g
l,h
m,i
n,j
o,k
p) (a
f',b
g',c
h',d
i',e
j',f
k',g
l',h
m',i
n',j
o',k
p') = [MutantS] -> MutantS
mutantSTuple
    [ a -> a -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS a
f a
f'
    , b -> b -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS b
g b
g'
    , c -> c -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS c
h c
h'
    , d -> d -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS d
i d
i'
    , e -> e -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS e
j e
j'
    , f -> f -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS f
k f
k'
    , g -> g -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS g
l g
l'
    , h -> h -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS h
m h
m'
    , i -> i -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS i
n i
n'
    , j -> j -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS j
o j
o'
    , k -> k -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS k
p k
p' ]

instance (ShowMutable a, ShowMutable b, ShowMutable c, ShowMutable d,
          ShowMutable e, ShowMutable f, ShowMutable g, ShowMutable h,
          ShowMutable i, ShowMutable j, ShowMutable k, ShowMutable l)
      => ShowMutable (a,b,c,d,e,f,g,h,i,j,k,l) where
  mutantS :: (a, b, c, d, e, f, g, h, i, j, k, l)
-> (a, b, c, d, e, f, g, h, i, j, k, l) -> MutantS
mutantS (a
f,b
g,c
h,d
i,e
j,f
k,g
l,h
m,i
n,j
o,k
p,l
q) (a
f',b
g',c
h',d
i',e
j',f
k',g
l',h
m',i
n',j
o',k
p',l
q') = [MutantS] -> MutantS
mutantSTuple
    [ a -> a -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS a
f a
f'
    , b -> b -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS b
g b
g'
    , c -> c -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS c
h c
h'
    , d -> d -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS d
i d
i'
    , e -> e -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS e
j e
j'
    , f -> f -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS f
k f
k'
    , g -> g -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS g
l g
l'
    , h -> h -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS h
m h
m'
    , i -> i -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS i
n i
n'
    , j -> j -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS j
o j
o'
    , k -> k -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS k
p k
p'
    , l -> l -> MutantS
forall a. ShowMutable a => a -> a -> MutantS
mutantS l
q l
q' ]