123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #!/usr/bin/env python3
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- """Unit tests for dependency_analysis.class_dependency."""
- import unittest.mock
- import class_dependency
- class TestHelperFunctions(unittest.TestCase):
- """Unit tests for module-level helper functions."""
- def test_java_class_params_to_key(self):
- """Tests that the helper concatenates, separated with a dot."""
- result = class_dependency.java_class_params_to_key('pkg.name', 'class')
- self.assertEqual(result, 'pkg.name.class')
- def test_split_nested_class_from_key(self):
- """Tests that the helper correctly splits out a nested class."""
- part1, part2 = class_dependency.split_nested_class_from_key(
- 'pkg.name.class$nested')
- self.assertEqual(part1, 'pkg.name.class')
- self.assertEqual(part2, 'nested')
- def test_split_nested_class_from_key_no_nested(self):
- """Tests that the helper works when there is no nested class."""
- part1, part2 = class_dependency.split_nested_class_from_key(
- 'pkg.name.class')
- self.assertEqual(part1, 'pkg.name.class')
- self.assertIsNone(part2)
- def test_split_nested_class_from_key_lambda(self):
- """Tests that the helper works for jdeps' formatting of lambdas."""
- part1, part2 = class_dependency.split_nested_class_from_key(
- 'pkg.name.class$$Lambda$1')
- self.assertEqual(part1, 'pkg.name.class')
- self.assertEqual(part2, '$Lambda$1')
- def test_split_nested_class_from_key_numeric(self):
- """Tests that the helper works for jdeps' formatting of nested classes.
- Specifically, jdeps uses a numeric name for private nested classes.
- """
- part1, part2 = class_dependency.split_nested_class_from_key(
- 'pkg.name.class$1')
- self.assertEqual(part1, 'pkg.name.class')
- self.assertEqual(part2, '1')
- class TestJavaClass(unittest.TestCase):
- """Unit tests for dependency_analysis.class_dependency.JavaClass."""
- TEST_PKG = 'package'
- TEST_CLS = 'class'
- UNIQUE_KEY_1 = 'abc'
- UNIQUE_KEY_2 = 'def'
- def test_initialization(self):
- """Tests that JavaClass is initialized correctly."""
- test_node = class_dependency.JavaClass(self.TEST_PKG, self.TEST_CLS)
- self.assertEqual(test_node.name, f'{self.TEST_PKG}.{self.TEST_CLS}')
- self.assertEqual(test_node.package, self.TEST_PKG)
- self.assertEqual(test_node.class_name, self.TEST_CLS)
- def test_equality(self):
- """Tests that two JavaClasses with the same package+class are equal."""
- test_node = class_dependency.JavaClass(self.TEST_PKG, self.TEST_CLS)
- equal_node = class_dependency.JavaClass(self.TEST_PKG, self.TEST_CLS)
- self.assertEqual(test_node, equal_node)
- def test_add_nested_class(self):
- """Tests adding a single nested class to this class."""
- test_node = class_dependency.JavaClass(self.TEST_PKG, self.TEST_CLS)
- test_node.add_nested_class(self.UNIQUE_KEY_1)
- self.assertEqual(test_node.nested_classes, {self.UNIQUE_KEY_1})
- def test_add_nested_class_multiple(self):
- """Tests adding multiple nested classes to this class."""
- test_node = class_dependency.JavaClass(self.TEST_PKG, self.TEST_CLS)
- test_node.add_nested_class(self.UNIQUE_KEY_1)
- test_node.add_nested_class(self.UNIQUE_KEY_2)
- self.assertEqual(test_node.nested_classes,
- {self.UNIQUE_KEY_1, self.UNIQUE_KEY_2})
- def test_add_nested_class_duplicate(self):
- """Tests that adding the same nested class twice will not dupe."""
- test_node = class_dependency.JavaClass(self.TEST_PKG, self.TEST_CLS)
- test_node.add_nested_class(self.UNIQUE_KEY_1)
- test_node.add_nested_class(self.UNIQUE_KEY_1)
- self.assertEqual(test_node.nested_classes, {self.UNIQUE_KEY_1})
- class TestJavaClassDependencyGraph(unittest.TestCase):
- """Unit tests for JavaClassDependencyGraph.
- Full name: dependency_analysis.class_dependency.JavaClassDependencyGraph.
- """
- def setUp(self):
- """Sets up a new JavaClassDependencyGraph."""
- self.test_graph = class_dependency.JavaClassDependencyGraph()
- def test_create_node_from_key(self):
- """Tests that a jdeps name is correctly parsed into package + class."""
- created_node = self.test_graph.create_node_from_key(
- 'package.class$nested')
- self.assertEqual(created_node.package, 'package')
- self.assertEqual(created_node.class_name, 'class')
- self.assertEqual(created_node.name, 'package.class')
- if __name__ == '__main__':
- unittest.main()
|