• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#    Copyright 2015-2017 ARM Limited
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#     http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14#
15
16
17import unittest
18from trappy import utils
19import pandas
20from pandas.util.testing import assert_series_equal
21
22
23class TestUtils(unittest.TestCase):
24
25    def test_handle_duplicate_index(self):
26        """Test Util Function: handle_duplicate_index
27        """
28
29        # Refer to the example in the function doc string
30        values = [0, 1, 2, 3, 4]
31        index = [0.0, 1.0, 1.0, 6.0, 7.0]
32        series = pandas.Series(values, index=index)
33        new_index = [0.0, 1.0, 2.0, 3.0, 4.0, 6.0, 7.0]
34
35        with self.assertRaises(ValueError):
36            series.reindex(new_index)
37
38        max_delta = 0.001
39        expected_index = [0.0, 1.0, 1 + max_delta, 6.0, 7.0]
40        expected_series = pandas.Series(values, index=expected_index)
41        series = utils.handle_duplicate_index(series, max_delta)
42        assert_series_equal(series, expected_series)
43
44        # Make sure that the reindex doesn't raise ValueError any more
45        series.reindex(new_index)
46
47    def test_handle_duplicate_index_duplicate_end(self):
48        """handle_duplicate_index copes with duplicates at the end of the series"""
49
50        max_delta = 0.001
51        values = [0, 1, 2, 3, 4]
52        index = [0.0, 1.0, 2.0, 6.0, 6.0]
53        expected_index = index[:]
54        expected_index[-1] += max_delta
55        series = pandas.Series(values, index=index)
56        expected_series = pandas.Series(values, index=expected_index)
57
58        series = utils.handle_duplicate_index(series, max_delta)
59        assert_series_equal(series, expected_series)
60