def testEventTypeSourceDictIterate(self): Trace("testEventTypeSourceDictIterate","TestEventPubSub") ed = EventTypeSourceDict() ed.insert("et","es","A1") ed.insert(None,None,"N1") ed.insert(None,"es","A1") ed.insert("et",None,"A1") cnt1 = 0 for entry in ed.iterate("et","es"): cnt1 = cnt1 + 1 self.assertEqual(cnt1, 4) cnt1 = 0 for entry in ed.iterate("et",None): cnt1 = cnt1 + 1 self.assertEqual(cnt1, 2) cnt1 = 0 for entry in ed.iterate(None,"es"): cnt1 = cnt1 + 1 self.assertEqual(cnt1, 2) cnt1 = 0 for entry in ed.iterate(None,None): cnt1 = cnt1 + 1 self.assertEqual(cnt1, 1)
def testEventTypeSourceDict2(self): Trace("testEventTypeSourceDict2","TestEventPubSub") # Construct a test dinctionary ed = EventTypeSourceDict() tsvs = [ ("bt","bs","B1"), ("bt","bs","B2") , ("at","as","A1"), ("at","as","A2") , (None,None,"N1"), (None,None,"N2") ] for (t,s,v) in tsvs: ed.insert(t, s, v) self.assertEqual(list(ed.iterateAll()), tsvs) self.assertEqual(ed.count(), 6) # Test wildcard scanning operations self.assertEqual(list(ed.iterateWild(None,None)), tsvs) self.assertEqual(list(ed.iterateWild("at","as")), [("at","as","A1"), ("at","as","A2"), (None,None,"N1"), (None,None,"N2")]) self.assertEqual(list(ed.iterateWild("at",None)), [("at","as","A1"), ("at","as","A2"), (None,None,"N1"), (None,None,"N2")]) self.assertEqual(list(ed.iterateWild(None,"as")), [("at","as","A1"), ("at","as","A2"), (None,None,"N1"), (None,None,"N2")]) self.assertEqual(list(ed.iterateWild("bt","bs")), [("bt","bs","B1"), ("bt","bs","B2"), (None,None,"N1"), (None,None,"N2")]) self.assertEqual(list(ed.iterateWild("bt",None)), [("bt","bs","B1"), ("bt","bs","B2"), (None,None,"N1"), (None,None,"N2")]) self.assertEqual(list(ed.iterateWild(None,"bs")), [("bt","bs","B1"), ("bt","bs","B2"), (None,None,"N1"), (None,None,"N2")]) self.assertEqual(list(ed.iterateWild("ct","cs")), [(None,None,"N1"), (None,None,"N2")]) self.assertEqual(list(ed.iterateWild("ct",None)), [(None,None,"N1"), (None,None,"N2")]) self.assertEqual(list(ed.iterateWild(None,"cs")), [(None,None,"N1"), (None,None,"N2")]) return
def testEventTypeSourceDict1(self): Trace("testEventTypeSourceDict1","TestEventPubSub") ed = EventTypeSourceDict() # Basic insertion tests self.assertEqual(ed.find("at","as"), []) self.assertEqual(ed.find("bt","bs"), []) ed.insert("at","as","A1") ed.insert(None,None,"N1") self.assertEqual(ed.find("at","as"), ["A1","N1"]) self.assertEqual(ed.find("bt","bs"), ["N1"]) ed.insert("at","as","A2") ed.insert("bt","bs","B1") ed.insert("bt","bs","B2") ed.insert(None,None,"N2") self.assertEqual(ed.find("at","as"), ["A1","A2","N1","N2"]) self.assertEqual(ed.find("bt","bs"), ["B1","B2","N1","N2"]) # Scan contents tsvs = [ ("bt","bs","B1"), ("bt","bs","B2") , ("at","as","A1"), ("at","as","A2") , (None,None,"N1"), (None,None,"N2") ] self.assertEqual(list(ed.iterateAll()), tsvs) self.assertEqual(ed.count(), 6) # Basic removal tests b1 = ed.remove("bt","bs","B1") self.assertEqual(b1, ["B1"]) self.assertEqual(ed.find("bt","bs"), ["B2","N1","N2"]) b2 = ed.remove("bt","bs","B2") self.assertEqual(b2, ["B2"]) self.assertEqual(ed.find("bt","bs"), ["N1","N2"]) n2 = ed.remove(None,None,"N2") self.assertEqual(n2, ["N2"]) self.assertEqual(ed.find("at","as"), ["A1","A2","N1"]) self.assertEqual(ed.find("bt","bs"), ["N1"]) n1 = ed.remove(None,None,"N1") self.assertEqual(n1, ["N1"]) self.assertEqual(ed.find("at","as"), ["A1","A2"]) self.assertEqual(ed.find("bt","bs"), []) # Scan contents tsvs = [ ("at","as","A1"), ("at","as","A2") ] self.assertEqual(list(ed.iterateAll()), tsvs) self.assertEqual(ed.count(), 2) # Multiple-value insertion tests ed.insert("ct","cs","C") ed.insert(None,None,"N") ed.insert("ct","cs","C") ed.insert(None,None,"N") self.assertEqual(ed.find("ct","cs"), ["C","C","N","N"]) # Scan contents tsvs = [ ("at","as","A1"), ("at","as","A2") , ("ct","cs","C"), ("ct","cs","C") , (None,None,"N"), (None,None,"N") ] self.assertEqual(list(ed.iterateAll()), tsvs) self.assertEqual(ed.count(), 6) # Multiple-value removal tests el = ed.remove("ct","cs","C1") self.assertEqual(el, []) self.assertEqual(ed.find("ct","cs"), ["C","C","N","N"]) cc = ed.remove("ct","cs","C") self.assertEqual(cc, ["C","C"]) self.assertEqual(ed.find("ct","cs"), ["N","N"]) el = ed.remove("ct","cs","C") self.assertEqual(el, []) self.assertEqual(ed.find("ct","cs"), ["N","N"]) el = ed.remove(None,None,"C") self.assertEqual(el, []) self.assertEqual(ed.find("ct","cs"), ["N","N"]) nn = ed.remove(None,None,"N") self.assertEqual(nn, ["N","N"]) self.assertEqual(ed.find("ct","cs"), []) el = ed.remove(None,None,"N") self.assertEqual(el, []) self.assertEqual(ed.find("at","as"), ["A1","A2"]) self.assertEqual(ed.find("bt","bs"), []) self.assertEqual(ed.find("ct","cs"), []) # Scan contents tsvs = [ ("at","as","A1"), ("at","as","A2") ] self.assertEqual(list(ed.iterateAll()), tsvs) self.assertEqual(ed.count(), 2) # Partial wildcard tests ed.insert("dt","ds","D1ts") ed.insert("dt","ds","D2ts") ed.insert("dt",None,"D1tn") ed.insert(None,"ds","D1ns") ed.insert(None,None,"D1nn") self.assertEqual(ed.find("dt","ds"), ["D1ts","D2ts","D1tn","D1ns","D1nn"]) # Scan contents tsvs = [ ("dt","ds","D1ts"), ("dt","ds","D2ts") , ("dt",None,"D1tn") , ("at","as","A1"), ("at","as","A2") , (None,"ds","D1ns") , (None,None,"D1nn") ] self.assertEqual(list(ed.iterateAll()), tsvs) self.assertEqual(ed.count(), 7) # Partial wildcard tests in opposite order of insertion ed.insert(None,None,"E3nn") ed.insert(None,"es","E3ns") ed.insert("et",None,"E3tn") ed.insert("et","es","E4ts") ed.insert("et","es","E3ts") self.assertEqual(ed.find("et","es"), ["E4ts","E3ts","E3tn","E3ns","D1nn","E3nn"]) return