# Path: stestr/commands/slowest.py
# def slowest(repo_type='file', repo_url=None, show_all=False,
#             stdout=sys.stdout):
#     """Print the slowest times from the last run in the repository
# 
#     This function will print to STDOUT the 10 slowests tests in the last run.
#     Optionally, using the ``show_all`` argument, it will print all the tests,
#     instead of just 10. sorted by time.
# 
#     :param str repo_type: This is the type of repository to use. Valid choices
#         are 'file' and 'sql'.
#     :param str repo_url: The url of the repository to use.
#     :param bool show_all: Show timing for all tests.
#     :param file stdout: The output file to write all output to. By default
#         this is sys.stdout
# 
#     :return return_code: The exit code for the command. 0 for success and > 0
#         for failures.
#     :rtype: int
#     """
# 
#     repo = util.get_repo_open(repo_type, repo_url)
#     try:
#         latest_id = repo.latest_id()
#     except KeyError:
#         return 3
#     # what happens when there is no timing info?
#     test_times = repo.get_test_times(repo.get_test_ids(latest_id))
#     known_times = list(test_times['known'].items())
#     known_times.sort(key=itemgetter(1), reverse=True)
#     if len(known_times) > 0:
#         # By default show 10 rows
#         if not show_all:
#             known_times = known_times[:10]
#         known_times = format_times(known_times)
#         header = ('Test id', 'Runtime (s)')
#         rows = [header] + known_times
#         output.output_table(rows, output=stdout)
#     return 0
# 
# Path: stestr/tests/base.py
# class TestCase(testtools.TestCase):
#     def setUp(self):


from stestr.commands import slowest
from stestr.tests import base
# 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.



class TestSlowest(base.TestCase):
    def test_format_times(self):
        times = [('test_id_a', 12.34), ('test_id_b', 1.34)]
        res = slowest.format_times(times)
        self.assertEqual([('test_id_a', '12.340'), ('test_id_b', ' 1.340')],
                         res)

    def test_format_times_with_zero(self):
        times = [('test_id_a', 0), ('test_id_b', 1.34)]
        res = slowest.format_times(times)
        self.assertEqual([('test_id_a', '0.000'), ('test_id_b', '1.340')],
                         res)

    def test_format_times_all_zero(self):
        times = [('test_id_a', 0), ('test_id_b', 0.00)]

# Path: stestr/commands/slowest.py
# def slowest(repo_type='file', repo_url=None, show_all=False,
#             stdout=sys.stdout):
#     """Print the slowest times from the last run in the repository
# 
#     This function will print to STDOUT the 10 slowests tests in the last run.
#     Optionally, using the ``show_all`` argument, it will print all the tests,
#     instead of just 10. sorted by time.
# 
#     :param str repo_type: This is the type of repository to use. Valid choices
#         are 'file' and 'sql'.
#     :param str repo_url: The url of the repository to use.
#     :param bool show_all: Show timing for all tests.
#     :param file stdout: The output file to write all output to. By default
#         this is sys.stdout
# 
#     :return return_code: The exit code for the command. 0 for success and > 0
#         for failures.
#     :rtype: int
#     """
# 
#     repo = util.get_repo_open(repo_type, repo_url)
#     try:
#         latest_id = repo.latest_id()
#     except KeyError:
#         return 3
#     # what happens when there is no timing info?
#     test_times = repo.get_test_times(repo.get_test_ids(latest_id))
#     known_times = list(test_times['known'].items())
#     known_times.sort(key=itemgetter(1), reverse=True)
#     if len(known_times) > 0:
#         # By default show 10 rows
#         if not show_all:
#             known_times = known_times[:10]
#         known_times = format_times(known_times)
#         header = ('Test id', 'Runtime (s)')
#         rows = [header] + known_times
#         output.output_table(rows, output=stdout)
#     return 0
# 
# Path: stestr/tests/base.py
# class TestCase(testtools.TestCase):
#     def setUp(self):


# Path: stestr/tests/test_slowest.py
from stestr.commands import slowest
from stestr.tests import base

# 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.



class TestSlowest(base.TestCase):
    def test_format_times(self):
        times = [('test_id_a', 12.34), ('test_id_b', 1.34)]
        res = slowest.format_times(times)
        self.assertEqual([('test_id_a', '12.340'), ('test_id_b', ' 1.340')],
                         res)

    def test_format_times_with_zero(self):
        times = [('test_id_a', 0), ('test_id_b', 1.34)]
        res = slowest.format_times(times)
        self.assertEqual([('test_id_a', '0.000'), ('test_id_b', '1.340')],
                         res)

    def test_format_times_all_zero(self):
        times = [('test_id_a', 0), ('test_id_b', 0.00)]

        res = slowest.format_times(times)