@@ -80,7 +80,8 @@ main = do
8080 testBasicList,
8181 testRelationDeclarationMismatch,
8282 testInvalidTuples,
83− testSelfReferencingUncommittedContext
83+ testSelfReferencingUncommittedContext,
84+ testUnionAndIntersectionAttributeExprs
8485 ]
8586
8687simpleRelTests :: Test
@@ -711,3 +712,15 @@ testSelfReferencingUncommittedContext = TestCase $ do
711712 _ <- rollback sessionId dbconn
712713 eSorig <- executeRelationalExpr sessionId dbconn (RelationVariable "s" ())
713714 assertEqual "s=s'" eSorig eS
715+
716+testUnionAndIntersectionAttributeExprs :: Test
717+testUnionAndIntersectionAttributeExprs = TestCase $ do
718+ (sessionId, dbconn) <- dateExamplesConnection emptyNotificationCallback
719+ executeTutorialD sessionId dbconn "x:=s{intersection of {all but sname} {sname}}"
720+ xRel <- executeRelationalExpr sessionId dbconn (RelationVariable "x" ())
721+ assertEqual "intersection attrs" (Right relationTrue) xRel
722+
723+ executeTutorialD sessionId dbconn "y:=s{union of {all but sname} {sname}}"
724+ yRel <- executeRelationalExpr sessionId dbconn (RelationVariable "y" ())
725+ assertEqual "union attrs" (Right suppliersRel) yRel
726+