@@ -1159,6 +1159,12 @@ fn test_namespace_relationship() {
11591159fn test_namespace_transitive_relationship ( ) {
11601160 let mut map = HashMap :: < & str , & Dict > :: new ( ) ;
11611161
1162+ let site = dict ! {
1163+ "id" => Value :: make_ref( "site" ) ,
1164+ "site" => Value :: Marker ,
1165+ } ;
1166+ map. insert ( "site" , & site) ;
1167+
11621168 let ahu = dict ! {
11631169 "id" => Value :: make_ref( "ahu" ) ,
11641170 "ahu" => Value :: Marker ,
@@ -1171,6 +1177,8 @@ fn test_namespace_transitive_relationship() {
11711177 "discharge" => Value :: Marker ,
11721178 "fan" => Value :: Marker ,
11731179 "equip" => Value :: Marker ,
1180+ // Not typically done but used for indirectly multiple transitive relationships.
1181+ "siteRef" => Value :: make_ref( "site" ) ,
11741182 "equipRef" => Value :: make_ref( "ahu" ) ,
11751183 } ;
11761184 map. insert ( "fan" , & fan) ;
@@ -1235,6 +1243,18 @@ fn test_namespace_transitive_relationship() {
12351243 & resolve,
12361244 ) ;
12371245 assert ! ( !has) ;
1246+
1247+ // true for a point that indirectly references a site
1248+ // The fan has a siteRef that also needs to be traversed as well as the equipRef. This
1249+ // tests multiple transitive relationships on the same dict.
1250+ let has = DEFS_NS . has_relationship (
1251+ & status,
1252+ & Symbol :: from ( "containedBy" ) ,
1253+ & None ,
1254+ & Some ( Ref :: from ( "site" ) ) ,
1255+ & resolve,
1256+ ) ;
1257+ assert ! ( has) ;
12381258}
12391259
12401260#[ test]
0 commit comments