on master help sign in
add a mkRelation test
commit2c7f52a426df86dd91d913cbeed5f136cc5a2497 authorAgentM <agentm@themactionfaction.com> dateFri 31 Oct 2014, 10:37 (12 years ago) parent57e1596
2 files changed+15−4
RelationTest.hs+10−1 RelationTupleSet.hs+5−3
RelationTest.hs+10−1
@@ -2,6 +2,7 @@ import Test.HUnit
22import RelationType
33import Relation
44import RelationTuple
5+import RelationTupleSet
56import qualified Data.Set as S
67import qualified Data.Map as M
78import qualified Data.HashSet as HS
@@ -49,6 +50,7 @@ validateAttrTypesMatchTupleAttrTypes rel@(Relation _ tupMapSet)
4950
5051simpleRel = case mkRelation attrs tupleSet of
5152 Right rel -> rel
53+ Left err -> undefined
5254 where
5355 attrs = M.fromList [("a", Attribute "a" StringAtomType), ("b", Attribute "b" StringAtomType)]
5456 tupleSet = HS.fromList $ mkRelationTuples attrs [
@@ -62,4 +64,11 @@ testRename1 = TestCase $ assertEqual "attribute invalid" (rename "a" "b" relatio
6264testRename2 :: Test
6365testRename2 = TestCase $ assertEqual "attribute in use" (rename "b" "a" simpleRel) (Left $ RelationalError 1 "Attribute \"a\" already in use.")
6466
65−
67+--mkRelation tests
68+--test tupleset key mismatch failure
69+testMkRelation1 :: Test
70+testMkRelation1 = TestCase $ assertEqual "key mismatch" (mkRelation testAttrs testTupSet) (Left $ RelationalError 1 "Tuple values not of the same type for same keys")
71+ where
72+ testAttrs = M.singleton "a" (Attribute "a" StringAtomType)
73+ testTupSet = HS.fromList [(RelationTuple (M.singleton "a" $ StringAtom "v")),
74+ RelationTuple (M.singleton "a" $ IntAtom 2)]
RelationTupleSet.hs+5−3
@@ -4,17 +4,19 @@ import qualified Data.Map as M
44import qualified Data.Set as S
55import qualified Data.List as L
66import qualified Data.HashSet as HS
7+import Debug.Trace
78
89emptyTupleSet = HS.empty
910emptyAttributeSet = M.empty
1011
1112--ensure that all maps have the same keys and key count
12−verifyRelationTuple :: RelationTupleSet -> (Bool,String)
13−verifyRelationTuple tupleSet = if HS.size failedTupleSet > 0
13+
14+verifyRelationTupleSet :: RelationTupleSet -> (Bool,String)
15+verifyRelationTupleSet tupleSet = if HS.size failedTupleSet > 0
1416 then (False,"Tuple count or key mismatch: " ++ show failedTupleSet)
1517 else (True, "")
1618 where
1719 allKeys = HS.foldr allKeysFolder S.empty tupleSet
1820 allKeysFolder (RelationTuple m) = (S.union . M.keysSet) m
19− failedTupleSet = HS.filter (\(RelationTuple m) -> (M.keysSet m) == allKeys) tupleSet
21+ failedTupleSet = HS.filter (\(RelationTuple m) -> (M.keysSet m) /= allKeys) tupleSet
2022