1*61c4878aSAndroid Build Coastguard Worker#!/usr/bin/env python3 2*61c4878aSAndroid Build Coastguard Worker# Copyright 2024 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_cli.plural import plural 20*61c4878aSAndroid Build Coastguard Worker 21*61c4878aSAndroid Build Coastguard Worker 22*61c4878aSAndroid Build Coastguard Workerclass PluralTest(unittest.TestCase): 23*61c4878aSAndroid Build Coastguard Worker """Test the plural function, which adds an 's' to nouns.""" 24*61c4878aSAndroid Build Coastguard Worker 25*61c4878aSAndroid Build Coastguard Worker def test_single_list(self): 26*61c4878aSAndroid Build Coastguard Worker self.assertEqual('1 item', plural([1], 'item')) 27*61c4878aSAndroid Build Coastguard Worker 28*61c4878aSAndroid Build Coastguard Worker def test_single_count(self): 29*61c4878aSAndroid Build Coastguard Worker self.assertEqual('1 item', plural(1, 'item')) 30*61c4878aSAndroid Build Coastguard Worker 31*61c4878aSAndroid Build Coastguard Worker def test_multiple_list(self): 32*61c4878aSAndroid Build Coastguard Worker self.assertEqual('3 items', plural([1, 2, 3], 'item')) 33*61c4878aSAndroid Build Coastguard Worker 34*61c4878aSAndroid Build Coastguard Worker def test_multiple_count(self): 35*61c4878aSAndroid Build Coastguard Worker self.assertEqual('3 items', plural(3, 'item')) 36*61c4878aSAndroid Build Coastguard Worker 37*61c4878aSAndroid Build Coastguard Worker def test_single_these(self): 38*61c4878aSAndroid Build Coastguard Worker self.assertEqual('this 1 item', plural(1, 'item', these=True)) 39*61c4878aSAndroid Build Coastguard Worker 40*61c4878aSAndroid Build Coastguard Worker def test_multiple_these(self): 41*61c4878aSAndroid Build Coastguard Worker self.assertEqual('these 3 items', plural(3, 'item', these=True)) 42*61c4878aSAndroid Build Coastguard Worker 43*61c4878aSAndroid Build Coastguard Worker def test_single_are(self): 44*61c4878aSAndroid Build Coastguard Worker self.assertEqual('1 item is', plural(1, 'item', are=True)) 45*61c4878aSAndroid Build Coastguard Worker 46*61c4878aSAndroid Build Coastguard Worker def test_multiple_are(self): 47*61c4878aSAndroid Build Coastguard Worker self.assertEqual('3 items are', plural(3, 'item', are=True)) 48*61c4878aSAndroid Build Coastguard Worker 49*61c4878aSAndroid Build Coastguard Worker def test_single_exist(self): 50*61c4878aSAndroid Build Coastguard Worker self.assertEqual('1 item exists', plural(1, 'item', exist=True)) 51*61c4878aSAndroid Build Coastguard Worker 52*61c4878aSAndroid Build Coastguard Worker def test_multiple_exist(self): 53*61c4878aSAndroid Build Coastguard Worker self.assertEqual('3 items exist', plural(3, 'item', exist=True)) 54*61c4878aSAndroid Build Coastguard Worker 55*61c4878aSAndroid Build Coastguard Worker def test_single_y(self): 56*61c4878aSAndroid Build Coastguard Worker self.assertEqual('1 thingy', plural(1, 'thingy')) 57*61c4878aSAndroid Build Coastguard Worker 58*61c4878aSAndroid Build Coastguard Worker def test_multiple_y(self): 59*61c4878aSAndroid Build Coastguard Worker self.assertEqual('3 thingies', plural(3, 'thingy')) 60*61c4878aSAndroid Build Coastguard Worker 61*61c4878aSAndroid Build Coastguard Worker def test_single_s(self): 62*61c4878aSAndroid Build Coastguard Worker self.assertEqual('1 bus', plural(1, 'bus')) 63*61c4878aSAndroid Build Coastguard Worker 64*61c4878aSAndroid Build Coastguard Worker def test_multiple_s(self): 65*61c4878aSAndroid Build Coastguard Worker self.assertEqual('3 buses', plural(3, 'bus')) 66*61c4878aSAndroid Build Coastguard Worker 67*61c4878aSAndroid Build Coastguard Worker def test_format_hex(self): 68*61c4878aSAndroid Build Coastguard Worker self.assertEqual( 69*61c4878aSAndroid Build Coastguard Worker '14 items', 70*61c4878aSAndroid Build Coastguard Worker plural(20, 'item', count_format='x'), 71*61c4878aSAndroid Build Coastguard Worker ) 72*61c4878aSAndroid Build Coastguard Worker 73*61c4878aSAndroid Build Coastguard Worker 74*61c4878aSAndroid Build Coastguard Workerif __name__ == '__main__': 75*61c4878aSAndroid Build Coastguard Worker unittest.main() 76