#!/usr/bin/env python3 # 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. 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()