def _DataLeaks(self): """Helper for creating test data. (n1) - container -> (n2) - [0] -> (n3) | | - [1] -> (n4) < - a - (n6) < - bad - (n8) | \ - [2] -> (n5) < - b - (n7) < - good - (n9) Returns: List of Nodes in the data. """ n1 = leak_finder.Node(1, 'object', 'Object') n2 = leak_finder.Node(2, 'array', 'Array') n3 = leak_finder.Node(3, 'object', 'Object') n4 = leak_finder.Node(4, 'object', 'Object') n5 = leak_finder.Node(5, 'object', 'Object') n6 = leak_finder.Node(6, 'object', 'Object') n7 = leak_finder.Node(7, 'object', 'Object') n8 = leak_finder.Node(6, 'object', 'Object') n9 = leak_finder.Node(7, 'object', 'Object') self._CreatePropertyEdge(n1, n2, 'container') self._CreateElementEdge(n2, n3, '0') self._CreateElementEdge(n2, n4, '1') self._CreateElementEdge(n2, n5, '2') self._CreatePropertyEdge(n6, n4, 'a') self._CreatePropertyEdge(n7, n5, 'b') self._CreatePropertyEdge(n8, n6, 'bad') self._CreatePropertyEdge(n9, n7, 'good') return [n1, n2, n3, n4, n5, n6, n7, n8, n9]
def testRetainingPathToString(self): n1 = leak_finder.Node(1, 'object', 'Object') n2 = leak_finder.Node(2, 'object', 'Object') n3 = leak_finder.Node(3, 'object', 'Object') self._CreatePropertyEdge(n1, n2, 'first') self._CreateElementEdge(n2, n3, '5') path = leak_finder.LeakFinder._RetainingPathToString([n3, n2, n1]) self.assertEqual('Node(1 Object).first[5]', path) n1.js_name = 'window.node' path = leak_finder.LeakFinder._RetainingPathToString([n3, n2, n1]) self.assertEqual('window.node.first[5]', path)
def _DataChain(self): """Helper for creating test data. (n1) - first -> (n2) - second -> (n3) Returns: List of Nodes in the data. """ n1 = leak_finder.Node(1, 'object', 'Object') n2 = leak_finder.Node(2, 'object', 'Object') n3 = leak_finder.Node(3, 'object', 'Object') self._CreatePropertyEdge(n1, n2, 'first') self._CreatePropertyEdge(n2, n3, 'second') return [n1, n2, n3]
def _DataLoopAndBranch(self): """Helper for creating test data. (n1) - first -> (n2) - second -> (n3) - loop -> (n1) / (n4) - other - Returns: List of Nodes in the data. """ n1 = leak_finder.Node(1, 'object', 'Object') n2 = leak_finder.Node(2, 'object', 'Object') n3 = leak_finder.Node(3, 'object', 'Object') n4 = leak_finder.Node(4, 'object', 'Object') self._CreatePropertyEdge(n1, n2, 'first') self._CreatePropertyEdge(n2, n3, 'second') self._CreatePropertyEdge(n3, n1, 'loop') self._CreatePropertyEdge(n4, n2, 'other') return [n1, n2, n3, n4]