@@ -1,12 +1,19 @@
1import Test.HUnit
1import Test.HUnit
2import RelationType
2import RelationType
3import Relation
3import Relation
4import qualified Data.Set as S
5import qualified Data.Set as S
5import qualified Data.Map as M
6import qualified Data.Map as M
6import qualified Data.HashSet as HS
7import qualified Data.HashSet as HS
8−testList = TestList [testRelation relationTrue, testRelation relationFalse]
12+testList = TestList [testRelation relationTrue, testRelation relationFalse,
13+ testRename1, testRename2]
9−main = runTestTT testList
15+ counts <- runTestTT testList
16+ if errors counts + failures counts > 0 then exitFailure else exitSuccess
11testRelation :: Relation -> Test
18testRelation :: Relation -> Test
12testRelation rel = TestCase $ assertEqual "nope" relationValidation (Right rel)
19testRelation rel = TestCase $ assertEqual "nope" relationValidation (Right rel)
@@ -40,4 +47,19 @@ validateAttrTypesMatchTupleAttrTypes rel@(Relation _ tupMapSet)
40 _ -> False
47 _ -> False
41 invalidSet = HS.filter (not . tupleTypeCheck) tupMapSet
48 invalidSet = HS.filter (not . tupleTypeCheck) tupMapSet
50+simpleRel = case mkRelation attrs tupleSet of
53+ attrs = M.fromList [("a", Attribute "a" StringAtomType), ("b", Attribute "b" StringAtomType)]
54+ tupleSet = HS.fromList $ mkRelationTuples attrs [
55+ M.fromList [("a", StringAtom "spam"), ("b", StringAtom "spam2")]
60+testRename1 = TestCase $ assertEqual "attribute invalid" (rename "a" "b" relationTrue) (Left $ RelationalError 1 "No such attribute")
63+testRename2 = TestCase $ assertEqual "attribute in use" (rename "b" "a" simpleRel) (Left $ RelationalError 1 "Attribute \"a\" already in use.")