packages feed

cleveland-0.3.1: test/TestSuite/Cleveland/Tasty/Report/Examples.hs

-- SPDX-FileCopyrightText: 2021 Oxhead Alpha
-- SPDX-License-Identifier: LicenseRef-MIT-OA

module TestSuite.Cleveland.Tasty.Report.Examples
  ( reportExamples
  ) where

import System.FilePath ((</>))

import Morley.Tezos.Address
import Morley.Util.Interpolate
import Test.Cleveland







----------------------------------------------------------------------------
-- Examples
----------------------------------------------------------------------------

example1 :: EmulatedT PureM ()
example1 = void $ signBytes "" unknownAddr

example1ExpectedErr :: Text
example1ExpectedErr =
  [itu|
   ┏━━ #{reportExamplesPath} ━━━
24 ┃ example1 :: EmulatedT PureM ()
25 ┃ example1 = void $ signBytes "" unknownAddr
   ┃                   ^^^^^^^^^^^^^^^^^^^^^^^^
   ┃                   | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z
26 ┃

CallStack (from HasCallStack):
  |]

----------------------------------------------------------------------------
-- Examples with helper functions
----------------------------------------------------------------------------

exampleWithHelperFunction1 :: EmulatedT PureM ()
exampleWithHelperFunction1 = exampleWithHelperFunction1Helper

exampleWithHelperFunction1Helper :: EmulatedT PureM ()
exampleWithHelperFunction1Helper = void $ signBytes "" unknownAddr

exampleWithHelperFunction1ExpectedErr :: Text
exampleWithHelperFunction1ExpectedErr =
  [itu|
     ┏━━ #{reportExamplesPath} ━━━
  47 ┃ exampleWithHelperFunction1Helper :: EmulatedT PureM ()
  48 ┃ exampleWithHelperFunction1Helper = void $ signBytes "" unknownAddr
     ┃                                           ^^^^^^^^^^^^^^^^^^^^^^^^
     ┃                                           | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z
  49 ┃

  CallStack (from HasCallStack):
  |]

exampleWithHelperFunction2 :: EmulatedT PureM ()
exampleWithHelperFunction2 = exampleWithHelperFunction2Helper

exampleWithHelperFunction2Helper :: HasCallStack => EmulatedT PureM ()
exampleWithHelperFunction2Helper = withFrozenCallStack $ void $ signBytes "" unknownAddr

exampleWithHelperFunction2ExpectedErr :: Text
exampleWithHelperFunction2ExpectedErr =
  [itu|
     ┏━━ #{reportExamplesPath} ━━━
  63 ┃ exampleWithHelperFunction2 :: EmulatedT PureM ()
  64 ┃ exampleWithHelperFunction2 = exampleWithHelperFunction2Helper
     ┃                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     ┃                              | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z
  65 ┃

  CallStack (from HasCallStack):
  |]

----------------------------------------------------------------------------
-- Example with no callstack frames
----------------------------------------------------------------------------

exampleNoCallStack1 :: EmulatedT PureM ()
exampleNoCallStack1 = withFrozenCallStack $ void $ signBytes "" unknownAddr

exampleNoCallStack1ExpectedErr :: Text
exampleNoCallStack1ExpectedErr =
  [i|Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z|]



----------------------------------------------------------------------------
-- Example with errors spanning across multiple lines
----------------------------------------------------------------------------

exampleMultipleLines1 :: EmulatedT PureM ()
exampleMultipleLines1 =
  void ( signBytes
           ""
           unknownAddr )

exampleMultipleLines1ExpectedErr :: Text
exampleMultipleLines1ExpectedErr =
  [itu|
      ┏━━ #{reportExamplesPath} ━━━
  100 ┃ exampleMultipleLines1 =
  101 ┃   void ( signBytes
  102 ┃            ""
  103 ┃            unknownAddr )
      ┃          ^^^^^^^^^^^^^
      ┃          | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z
  104 ┃

  CallStack (from HasCallStack):
  |]

exampleMultipleLines2 :: EmulatedT PureM ()
exampleMultipleLines2 =
  void (   signBytes
         ""
           unknownAddr )

exampleMultipleLines2ExpectedErr :: Text
exampleMultipleLines2ExpectedErr =
  [itu|
      ┏━━ #{reportExamplesPath} ━━━
  121 ┃ exampleMultipleLines2 =
  122 ┃   void (   signBytes
  123 ┃          ""
  124 ┃            unknownAddr )
      ┃          ^^^^^^^^^^^^^
      ┃          | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z
  125 ┃

  CallStack (from HasCallStack):
  |]

exampleMultipleLines3 :: EmulatedT PureM ()
exampleMultipleLines3 =
  void (   signBytes
           ""
         unknownAddr )

exampleMultipleLines3ExpectedErr :: Text
exampleMultipleLines3ExpectedErr =
  [itu|
      ┏━━ #{reportExamplesPath} ━━━
  142 ┃ exampleMultipleLines3 =
  143 ┃   void (   signBytes
  144 ┃            ""
  145 ┃          unknownAddr )
      ┃          ^^^^^^^^^^^
      ┃          | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z
  146 ┃

  CallStack (from HasCallStack):
  |]

exampleMultipleLines4 :: EmulatedT PureM ()
exampleMultipleLines4 =
  void (      signBytes
                   ""
         unknownAddr   )

exampleMultipleLines4ExpectedErr :: Text
exampleMultipleLines4ExpectedErr =
  [itu|
      ┏━━ #{reportExamplesPath} ━━━
  163 ┃ exampleMultipleLines4 =
  164 ┃   void (      signBytes
  165 ┃                    ""
  166 ┃          unknownAddr   )
      ┃          ^^^^^^^^^^^^^^
      ┃          | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z
  167 ┃

  CallStack (from HasCallStack):
  |]

exampleMultipleLines5 :: EmulatedT PureM ()
exampleMultipleLines5 =
  void (    signBytes
                     ""
         unknownAddr   )

exampleMultipleLines5ExpectedErr :: Text
exampleMultipleLines5ExpectedErr =
  [itu|
      ┏━━ #{reportExamplesPath} ━━━
  184 ┃ exampleMultipleLines5 =
  185 ┃   void (    signBytes
  186 ┃                      ""
  187 ┃          unknownAddr   )
      ┃          ^^^^^^^^^^^^^^
      ┃          | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z
  188 ┃

  CallStack (from HasCallStack):
  |]

exampleMultipleLines6 :: EmulatedT PureM ()
exampleMultipleLines6 =
  void (    signBytes
                   ""
           unknownAddr   )

exampleMultipleLines6ExpectedErr :: Text
exampleMultipleLines6ExpectedErr =
  [itu|
      ┏━━ #{reportExamplesPath} ━━━
  205 ┃ exampleMultipleLines6 =
  206 ┃   void (    signBytes
  207 ┃                    ""
  208 ┃            unknownAddr   )
      ┃            ^^^^^^^^^^^
      ┃            | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z
  209 ┃

  CallStack (from HasCallStack):
  |]

unknownAddr :: ImplicitAddressWithAlias
unknownAddr = AddressWithAlias [ta|tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z|] "unknown-addr"

reportExamples :: [(String, EmulatedT PureM (), Text)]
reportExamples =
  [ ("example1", example1, example1ExpectedErr)
  , ("exampleWithHelperFunction1", exampleWithHelperFunction1, exampleWithHelperFunction1ExpectedErr)
  , ("exampleWithHelperFunction2", exampleWithHelperFunction2, exampleWithHelperFunction2ExpectedErr)
  , ("exampleNoCallStack1", exampleNoCallStack1, exampleNoCallStack1ExpectedErr)
  , ("exampleMultipleLines1", exampleMultipleLines1, exampleMultipleLines1ExpectedErr)
  , ("exampleMultipleLines2", exampleMultipleLines2, exampleMultipleLines2ExpectedErr)
  , ("exampleMultipleLines3", exampleMultipleLines3, exampleMultipleLines3ExpectedErr)
  , ("exampleMultipleLines4", exampleMultipleLines4, exampleMultipleLines4ExpectedErr)
  , ("exampleMultipleLines5", exampleMultipleLines5, exampleMultipleLines5ExpectedErr)
  , ("exampleMultipleLines6", exampleMultipleLines6, exampleMultipleLines6ExpectedErr)
  ]

reportExamplesPath :: Text
reportExamplesPath = fromString $
  "test" </> "TestSuite" </> "Cleveland" </> "Tasty" </> "Report" </> "Examples.hs"