• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python3
2# Copyright 2020 The Pigweed Authors
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may not
5# use this file except in compliance with the License. You may obtain a copy of
6# the License at
7#
8#     https://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations under
14# the License.
15"""Tests for general purpose tools."""
16
17import unittest
18
19from pw_presubmit import tools
20
21
22class FlattenTest(unittest.TestCase):
23    """Tests the flatten function, which flattens iterables."""
24    def test_empty(self):
25        self.assertEqual([], list(tools.flatten()))
26        self.assertEqual([], list(tools.flatten([])))
27        self.assertEqual([], list(tools.flatten([], ())))
28        self.assertEqual([], list(tools.flatten([[], (), [[]]], ((), []))))
29
30    def test_no_nesting(self):
31        self.assertEqual(['a', 'bcd', 123, 45.6],
32                         list(tools.flatten('a', 'bcd', 123, 45.6)))
33        self.assertEqual(['a', 'bcd', 123, 45.6],
34                         list(tools.flatten(['a', 'bcd', 123, 45.6])))
35        self.assertEqual(['a', 'bcd', 123, 45.6],
36                         list(tools.flatten(['a', 'bcd'], [123, 45.6])))
37
38    def test_nesting(self):
39        self.assertEqual(['a', 'bcd', 123, 45.6],
40                         list(tools.flatten('a', ['bcd'], [123], 45.6)))
41        self.assertEqual(['a', 'bcd', 123, 45.6],
42                         list(tools.flatten([['a', ('bcd', [123])], 45.6])))
43        self.assertEqual(['a', 'bcd', 123, 45.6],
44                         list(tools.flatten([('a', 'bcd')],
45                                            [[[[123]]], 45.6])))
46
47
48if __name__ == '__main__':
49    unittest.main()
50