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