diff --git a/examples/string_tools/__init__.py b/examples/string_tools/__init__.py new file mode 100644 index 00000000..856b55c2 --- /dev/null +++ b/examples/string_tools/__init__.py @@ -0,0 +1 @@ +# string_tools package for Python Fire examples diff --git a/examples/string_tools/string_tools.py b/examples/string_tools/string_tools.py new file mode 100644 index 00000000..2bcf40f8 --- /dev/null +++ b/examples/string_tools/string_tools.py @@ -0,0 +1,50 @@ +# Copyright (C) 2018 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""String tools example Fire CLI. + +This module demonstrates the use of Fire without specifying a target component. +By calling Fire() without arguments in main(), all functions defined in this +module become available as CLI commands. + +Example usage: + string_tools reverse "Hello World" + string_tools uppercase "hello" + string_tools count-words "Hello world from Fire" +""" + +import fire + + +def reverse(text=''): + """Return the reversed string.""" + return text[::-1] + + +def uppercase(text=''): + """Return the text in uppercase.""" + return text.upper() + + +def count_words(text=''): + """Return the number of words in the text.""" + return len(text.split()) + + +def main(): + fire.Fire(name='string_tools') + + +if __name__ == '__main__': + main() diff --git a/examples/string_tools/string_tools_test.py b/examples/string_tools/string_tools_test.py new file mode 100644 index 00000000..701874a1 --- /dev/null +++ b/examples/string_tools/string_tools_test.py @@ -0,0 +1,37 @@ +# Copyright (C) 2018 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Tests for the string_tools module.""" + +from fire import testutils + +from examples.string_tools import string_tools + + +class StringToolsTest(testutils.BaseTestCase): + + def testStringTools(self): + # reverse + self.assertEqual(string_tools.reverse("Hello"), "olleh") + + # uppercase + self.assertEqual(string_tools.uppercase("hello"), "HELLO") + + # count_words + self.assertEqual(string_tools.count_words("Hello world"), 2) + self.assertEqual(string_tools.count_words("one two three four"), 4) + + +if __name__ == '__main__': + testutils.main()