def testAddToDataSetWithDifferentLayouts(self): p1 = Point() p1.setLayout(self.l1) # +1, ref = 2 p2 = Point() ds = DataSet() ds.addPoint(p1) # +2 (dataset+pointcopy), ref = 4 self.assertRaises(Exception, ds.addPoint, p2) self.assertEqual(p1.layout().ref(), 4) self.assertEqual(p2.layout().ref(), 1)
def testForceIdentity(self): l = PointLayout() l.add('a', RealType, FixedLength, 1) p = Point() p.setLayout(l) cd = MetricFactory.create('cosinesimilarity', p.layout(), { 'defaultValue': 0.5 }) self.assertEquals(cd(p, p), 0.5) ficd = MetricFactory.create('forceidentity', p.layout(), { 'distance': 'cosinesimilarity', 'params': { 'defaultValue': 0.5 } }) self.assertEquals(ficd(p, p), 0.0) p2 = Point(p) p2.setName('p2') self.assertEquals(ficd(p, p2), 0.5)
def testComplexReferenceCounting(self): ds = DataSet() self.assertEqual(ds.layout().ref(), 2) # 1 + 1 from temp object p = Point() p.setName('p1') lext = PointLayout(p.layout()) # +1, {lext,p}.ref = 2 self.assertEqual(lext.ref(), 2) lext = p.layout().copy() # copy, lext.ref = 1; p.ref -= 1, = 1 self.assertEqual(lext.ref(), 1) ds.addPoint(p) # +3 (dataset + pointcopy), ref = 3 self.assertEqual(lext.ref(), 1) self.assertEqual(ds.layout().ref(), 4) # 3 + 1 temp object p2 = Point(p) # +1, {p,p2}.ref = 5 p2.setName('p2') self.assertEqual(ds.layout().ref(), 5) ds.addPoint(p2) self.assertEqual(ds.layout().ref(), 6) # +1 pointcopy, ref = 6