1 |
gienah 12/06/02 05:56:44 |
2 |
|
3 |
Added: TestTime.hs |
4 |
Log: |
5 |
Bump hdbc-sqlite to 2.3.3.0 |
6 |
|
7 |
(Portage version: 2.1.10.63/cvs/Linux x86_64) |
8 |
|
9 |
Revision Changes Path |
10 |
1.1 dev-haskell/hdbc-sqlite/files/TestTime.hs |
11 |
|
12 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-haskell/hdbc-sqlite/files/TestTime.hs?rev=1.1&view=markup |
13 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-haskell/hdbc-sqlite/files/TestTime.hs?rev=1.1&content-type=text/plain |
14 |
|
15 |
Index: TestTime.hs |
16 |
=================================================================== |
17 |
module TestTime(tests) where |
18 |
import Test.HUnit |
19 |
import Database.HDBC |
20 |
import TestUtils |
21 |
import Control.Exception |
22 |
import Data.Time |
23 |
import Data.Time.LocalTime |
24 |
import Data.Time.Clock.POSIX |
25 |
import Data.Maybe |
26 |
import Data.Convertible |
27 |
import SpecificDB |
28 |
import System.Locale(defaultTimeLocale) |
29 |
import Database.HDBC.Locale (iso8601DateFormat) |
30 |
import qualified System.Time as ST |
31 |
|
32 |
instance Eq ZonedTime where |
33 |
a == b = zonedTimeToUTC a == zonedTimeToUTC b && |
34 |
zonedTimeZone a == zonedTimeZone b |
35 |
|
36 |
testZonedTime :: ZonedTime |
37 |
testZonedTime = fromJust $ parseTime defaultTimeLocale (iso8601DateFormat (Just "%T %z")) |
38 |
"1989-08-01 15:33:01 -0500" |
39 |
|
40 |
testZonedTimeFrac :: ZonedTime |
41 |
testZonedTimeFrac = fromJust $ parseTime defaultTimeLocale (iso8601DateFormat (Just "%T%Q %z")) |
42 |
"1989-08-01 15:33:01.536 -0500" |
43 |
|
44 |
|
45 |
rowdata t = [[SqlInt32 100, toSql t, SqlNull]] |
46 |
|
47 |
testDTType inputdata convToSqlValue = dbTestCase $ \dbh -> |
48 |
do run dbh ("CREATE TABLE hdbctesttime (testid INTEGER PRIMARY KEY NOT NULL, \ |
49 |
\testvalue " ++ dateTimeTypeOfSqlValue value ++ ")") [] |
50 |
finally (testIt dbh) (do commit dbh |
51 |
run dbh "DROP TABLE hdbctesttime" [] |
52 |
commit dbh |
53 |
) |
54 |
where testIt dbh = |
55 |
do run dbh "INSERT INTO hdbctesttime (testid, testvalue) VALUES (?, ?)" |
56 |
[iToSql 5, value] |
57 |
commit dbh |
58 |
r <- quickQuery' dbh "SELECT testid, testvalue FROM hdbctesttime" [] |
59 |
case r of |
60 |
[[testidsv, testvaluesv]] -> |
61 |
do assertEqual "testid" (5::Int) (fromSql testidsv) |
62 |
assertEqual "testvalue" inputdata (fromSql testvaluesv) |
63 |
value = convToSqlValue inputdata |
64 |
|
65 |
mkTest label inputdata convfunc = |
66 |
TestLabel label (testDTType inputdata convfunc) |
67 |
|
68 |
tests = TestList $ |
69 |
((TestLabel "Non-frac" $ testIt testZonedTime) : |
70 |
if supportsFracTime then [TestLabel "Frac" $ testIt testZonedTimeFrac] else []) |
71 |
|
72 |
testIt baseZonedTime = |
73 |
TestList [mkTest "Day" baseDay toSql, |
74 |
mkTest "TimeOfDay" baseTimeOfDay toSql, |
75 |
mkTest "ZonedTimeOfDay" baseZonedTimeOfDay toSql, |
76 |
mkTest "LocalTime" baseLocalTime toSql, |
77 |
mkTest "ZonedTime" baseZonedTime toSql, |
78 |
mkTest "UTCTime" baseUTCTime toSql, |
79 |
mkTest "DiffTime" baseDiffTime toSql, |
80 |
mkTest "POSIXTime" basePOSIXTime posixToSql, |
81 |
mkTest "ClockTime" baseClockTime toSql, |
82 |
mkTest "CalendarTime" baseCalendarTime toSql, |
83 |
mkTest "TimeDiff" baseTimeDiff toSql |
84 |
] |
85 |
where |
86 |
baseDay :: Day |
87 |
baseDay = localDay baseLocalTime |
88 |
|
89 |
baseTimeOfDay :: TimeOfDay |
90 |
baseTimeOfDay = localTimeOfDay baseLocalTime |
91 |
|
92 |
baseZonedTimeOfDay :: (TimeOfDay, TimeZone) |
93 |
baseZonedTimeOfDay = fromSql (SqlZonedTime baseZonedTime) |
94 |
|
95 |
baseLocalTime :: LocalTime |
96 |
baseLocalTime = zonedTimeToLocalTime baseZonedTime |
97 |
|
98 |
baseUTCTime :: UTCTime |
99 |
baseUTCTime = convert baseZonedTime |
100 |
|
101 |
baseDiffTime :: NominalDiffTime |
102 |
baseDiffTime = basePOSIXTime |
103 |
|
104 |
basePOSIXTime :: POSIXTime |
105 |
basePOSIXTime = convert baseZonedTime |
106 |
|
107 |
baseTimeDiff :: ST.TimeDiff |
108 |
baseTimeDiff = convert baseDiffTime |
109 |
|
110 |
-- No fractional parts for these two |
111 |
|
112 |
baseClockTime :: ST.ClockTime |
113 |
baseClockTime = convert testZonedTime |
114 |
|
115 |
baseCalendarTime :: ST.CalendarTime |
116 |
baseCalendarTime = convert testZonedTime |