Fix parsing of ..;..;..;
authorJoachim Breitner <mail@joachim-breitner.de>
Sat, 25 Jan 2014 21:46:40 +0000 (21:46 +0000)
committerJoachim Breitner <mail@joachim-breitner.de>
Sat, 25 Jan 2014 21:46:40 +0000 (21:46 +0000)
This fixes #5, and also adds an regression test

arbtt.cabal
src/Categorize.hs
tests/issue5.cfg [new file with mode: 0644]
tests/test.hs

index e5e44d8..27aafe0 100644 (file)
@@ -155,12 +155,15 @@ test-suite test
     exitcode-stdio-1.0
   Hs-source-dirs:
     tests
+    src
   Main-is:
     test.hs
   Build-depends:
       base >= 4 && < 5
       , tasty == 0.7.*
       , tasty-golden == 2.2.*
+      , tasty-hunit == 0.2.*
+      , HUnit == 1.2.*
       , process-extras == 0.2.*
 
 source-repository head
index 32d9b1d..27410b5 100644 (file)
@@ -143,10 +143,10 @@ parseRulesBody :: Parser Rule
 parseRulesBody = do 
         x <- parseRule
         choice [ do comma lang
-                    xs <- sepEndBy1 parseRule (comma lang)
+                    xs <- parseRule `sepEndBy1` comma lang
                     return (matchAny (x:xs))
                , do semi lang
-                    xs <- many1 (semi lang >> parseRule)
+                    xs <- parseRule `sepEndBy1` semi lang
                     return (matchFirst (x:xs))
                ,    return x
                ]
diff --git a/tests/issue5.cfg b/tests/issue5.cfg
new file mode 100644 (file)
index 0000000..2e7b3ae
--- /dev/null
@@ -0,0 +1,3 @@
+current window $title =~ /^aaa/ ==> tag A3;
+current window $title =~ /^aa/  ==> tag A2;
+current window $title =~ /^a/   ==> tag A1
index 2966f15..6fc49b3 100644 (file)
@@ -1,8 +1,10 @@
-{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveDataTypeable, OverloadedStrings #-}
 
 import Test.Tasty hiding (defaultMain)
 import Test.Tasty.Golden.Manage
 import Test.Tasty.Golden
+import Test.Tasty.HUnit
+import Test.HUnit
 import System.Process.ByteString.Lazy
 import qualified Data.ByteString.Lazy as B
 import Control.Monad
@@ -10,10 +12,25 @@ import Control.Exception
 import Data.Typeable
 import System.Exit
 
+import Categorize
+import TimeLog
+import Data
+
 main = defaultMain tests
 
 tests :: TestTree
-tests = testGroup "Tests" [goldenTests]
+tests = testGroup "Tests" [goldenTests, regressionTests]
+
+regressionTests :: TestTree
+regressionTests = testGroup "Regression tests"
+    [ testCase "Issue #5" $ do
+        cat <- readCategorizer "tests/issue5.cfg"
+        let sample = TimeLogEntry undefined 0 (CaptureData [(True, "aa", "program")] 0 "")
+        let [TimeLogEntry _ _ (_,acts)] = cat [sample]
+        [Activity Nothing "A2"] @=? acts
+        return ()
+    ]
+
 
 goldenTests :: TestTree
 goldenTests = testGroup "Golden tests"