File: TestECMWithTestSequenceCommon.hs

package info (click to toggle)
haskell-expiring-cache-map 0.0.6.1-9
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 232 kB
  • sloc: haskell: 2,209; makefile: 5
file content (116 lines) | stat: -rw-r--r-- 3,350 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
{-# LANGUAGE OverloadedStrings #-}

module TestECMWithTestSequenceCommon (
    someEventsOnly,
    numberEventsOnly,
    pattern',
    pattern'',
    pattern''',
    pattern'''',
    testLookups,
    printOutEvents,
    printOutFailedPattern
) where

import qualified Caching.ExpiringCacheMap.Utils.TestSequence as TestSeq

import qualified Data.ByteString.Char8 as BS

printOutFailedPattern from_where filt_events' filt_events'' filt_events''' filt_events'''' = do
  putStrLn $ "Failed sequence test in " ++ from_where ++ ":"
  if not (pattern' (filt_events'))
    then putStrLn $ "Failed: pattern 1: " ++ (show filt_events')
    else return ()
  if not (pattern'' (filt_events''))
    then putStrLn $ "Failed: pattern 2: " ++ (show filt_events'')
    else return ()
  if not (pattern''' (filt_events'''))
    then putStrLn $ "Failed: pattern 3: " ++ (show filt_events''')
    else return ()
  if not (pattern'''' (filt_events''''))
    then putStrLn $ "Failed: pattern 4: " ++ (show filt_events'''')
    else return ()
  return ()


printOutEvents events' events'' events''' events'''' = do
  (putStrLn . show . filter someEventsOnly . reverse) events'
  (putStrLn . show . filter someEventsOnly . reverse) events''
  (putStrLn . show . filter someEventsOnly . reverse) events'''
  (putStrLn . show . filter someEventsOnly . reverse) events''''
  return ()

someEventsOnly a =
  case a of
    TestSeq.GetTime _    -> True
    TestSeq.ReadNumber _ -> True
    TestSeq.HaveNumber _ -> True
    _ -> False

numberEventsOnly a =
  case a of
    TestSeq.ReadNumber _ -> True
    TestSeq.HaveNumber _ -> True
    _ -> False

pattern' c =
  case c of
    [ TestSeq.ReadNumber numr1,
      TestSeq.GetTime _,
      TestSeq.HaveNumber numh1,
      TestSeq.HaveNumber numh1',
      TestSeq.ReadNumber numr2,
      TestSeq.GetTime _,
      TestSeq.HaveNumber numh2 ]
      | numr1 == numh1 && numr1 == numh1' && numr2 == numh2 -> True
    _ -> False
    
pattern'' c =
  case c of
    [ TestSeq.ReadNumber numr1,
      TestSeq.GetTime _,
      TestSeq.HaveNumber numh1,
      TestSeq.GetTime _,
      TestSeq.GetTime _,
      TestSeq.HaveNumber numh1',
      TestSeq.ReadNumber numr2,
      TestSeq.GetTime _,
      TestSeq.HaveNumber numh2 ]
      | numr1 == numh1 && numr1 == numh1' && numr2 == numh2 -> True
    _ -> False

pattern''' c =
  case c of
    [ TestSeq.ReadNumber numr1,
      TestSeq.GetTime _,
      TestSeq.HaveNumber numh1,
      TestSeq.HaveNumber numh1',
      TestSeq.ReadNumber numr2,
      TestSeq.GetTime _,
      TestSeq.HaveNumber numh2 ]
      | numr1 == numh1 && numr1 == numh1' && numr2 == numh2 -> True
    _ -> False

pattern'''' c =
  case c of
    [ TestSeq.ReadNumber numr1,
      TestSeq.GetTime _,
      TestSeq.HaveNumber numh1,
      TestSeq.GetTime _,
      TestSeq.ReadNumber numr2,
      TestSeq.GetTime _,
      TestSeq.HaveNumber numh2,
      TestSeq.ReadNumber numr3,
      TestSeq.GetTime _,
      TestSeq.HaveNumber numh3 ]
      | numr1 == numh1 && numr2 == numh2 && numr3 == numh3 -> True
    _ -> False

testLookups lookup = do
  b <- lookup ("file1" :: BS.ByteString)
  TestSeq.haveNumber b
  b <- lookup "file1"
  TestSeq.haveNumber b
  b <- lookup "file2"
  TestSeq.haveNumber b
  return b