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