| #!/usr/bin/env python |
| # Copyright 2020 the V8 project authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| from __future__ import absolute_import |
| |
| import os |
| import sys |
| import unittest |
| |
| TOOLS_PATH = os.path.dirname(os.path.dirname(os.path.dirname( |
| os.path.abspath(__file__)))) |
| sys.path.append(TOOLS_PATH) |
| |
| from testrunner.testproc.util import FixedSizeTopList |
| |
| class TestOrderedFixedSizeList(unittest.TestCase): |
| def test_empty(self): |
| ofsl = FixedSizeTopList(3) |
| self.assertEqual(ofsl.as_list(), []) |
| |
| def test_12(self): |
| ofsl = FixedSizeTopList(3) |
| ofsl.add(1) |
| ofsl.add(2) |
| self.assertEqual(ofsl.as_list(), [2,1]) |
| |
| def test_4321(self): |
| ofsl = FixedSizeTopList(3) |
| ofsl.add(4) |
| ofsl.add(3) |
| ofsl.add(2) |
| ofsl.add(1) |
| data = ofsl.as_list() |
| self.assertEqual(data, [4,3,2]) |
| |
| def test_544321(self): |
| ofsl = FixedSizeTopList(4) |
| ofsl.add(5) |
| ofsl.add(4) |
| ofsl.add(4) |
| ofsl.add(3) |
| ofsl.add(2) |
| ofsl.add(1) |
| data = ofsl.as_list() |
| self.assertEqual(data, [5, 4, 4, 3]) |
| |
| def test_withkey(self): |
| ofsl = FixedSizeTopList(3,key=lambda x: x['val']) |
| ofsl.add({'val':4, 'something': 'four'}) |
| ofsl.add({'val':3, 'something': 'three'}) |
| ofsl.add({'val':-1, 'something': 'minusone'}) |
| ofsl.add({'val':5, 'something': 'five'}) |
| ofsl.add({'val':0, 'something': 'zero'}) |
| data = [e['something'] for e in ofsl.as_list()] |
| self.assertEqual(data, ['five', 'four', 'three']) |
| |
| def test_withkeyclash(self): |
| # Test that a key clash does not throw exeption |
| ofsl = FixedSizeTopList(2,key=lambda x: x['val']) |
| ofsl.add({'val':2, 'something': 'two'}) |
| ofsl.add({'val':2, 'something': 'two'}) |
| ofsl.add({'val':0, 'something': 'zero'}) |
| data = [e['something'] for e in ofsl.as_list()] |
| self.assertEqual(data, ['two', 'two']) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |