packages feed

homplexity-0.4.4.4: tests/Comments.hs

{-# LANGUAGE FlexibleContexts      #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables   #-}
{-# LANGUAGE UndecidableInstances  #-}
{-# LANGUAGE TemplateHaskell       #-}
{-# LANGUAGE QuasiQuotes           #-}
module Main (
    main 
  ) where

import Data.Char
import Data.List
import Control.Exception as E

import Language.Haskell.Exts.SrcLoc
import Language.Haskell.Exts

import Language.Haskell.Homplexity.Comments
import Language.Haskell.Homplexity.Parse
import Language.Haskell.Homplexity.Metric

import TestSource

-- * Tests for comment types
prop_commentsAfter ::  Bool
prop_commentsAfter  = findCommentType "  |" == CommentsAfter

prop_commentsBefore ::  Bool
prop_commentsBefore = findCommentType "  ^" == CommentsBefore

prop_commentsGroup ::  Bool
prop_commentsGroup  = findCommentType "  *" == CommentsInside

prop_commentsInside ::  Bool
prop_commentsInside = findCommentType "  a" == CommentsInside

testSrc = do
  (ast, comments) <- [tsrc|
module Amanitas where
-- | This is comment preceeding variable "a"
a=1
b=2
-- ^ This is comment following variable "b"
|]
  putStrLn $ "Comments:\n" ++ show comments
  assert (and [length comments == 2
              ]) $
    return ()
--src = $withLocation "mystring"

-- Runs all unit tests.
main :: IO ()
main  = do
  assert (and [prop_commentsAfter
              ,prop_commentsBefore
              ,prop_commentsGroup
              ,prop_commentsInside]) $
    return ()
  testSrc