コード例 #1
0
    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]
コード例 #2
0
    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)
コード例 #3
0
    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]
コード例 #4
0
    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]