Source code for ploneintranet.microblog.tests.test_utils

import time
import unittest
from BTrees.LLBTree import LLTreeSet

from ploneintranet.microblog.utils import longkeysortreverse


[docs]class TestLongkeysortreverse1(unittest.TestCase):
[docs] def setUp(self): self.treeset = LLTreeSet() self.k0 = long(1) self.treeset.insert(self.k0) self.k1 = long((time.time() - 3600 * 25) * 1e6) self.treeset.insert(self.k1) self.k2 = long((time.time() - 3600 * 4) * 1e6) self.treeset.insert(self.k2) self.k3 = long((time.time() - 3600 * 3) * 1e6) self.treeset.insert(self.k3) self.k10 = long(time.time() * 1e6 - 10) self.treeset.insert(self.k10) self.k11 = self.k10 + 1 self.treeset.insert(self.k11)
[docs] def test_all(self): values = list(longkeysortreverse(self.treeset)) expect = [self.k11, self.k10, self.k3, self.k2, self.k1, self.k0] self.assertEquals(values, expect)
[docs] def test_min_hour(self): minv = long((time.time() - 3600) * 1e6) values = list(longkeysortreverse(self.treeset, minv=minv)) expect = [self.k11, self.k10] self.assertEquals(values, expect)
[docs] def test_max_hour_direct(self): maxv = long((time.time() - 3600) * 1e6) values = list(longkeysortreverse(self.treeset, maxv=maxv)) expect = [self.k3, self.k2, self.k1, self.k0] self.assertEquals(values, expect)
[docs] def test_max_hour2_direct(self): maxv = long((time.time() - 3600 * 2) * 1e6) values = list(longkeysortreverse(self.treeset, maxv=maxv)) expect = [self.k3, self.k2, self.k1, self.k0] self.assertEquals(values, expect)
[docs] def test_max_hour_optimize(self): maxv = long((time.time() - 3600) * 1e6) values = list(longkeysortreverse(self.treeset, maxv=maxv, limit=100)) expect = [self.k3, self.k2, self.k1, self.k0] self.assertEquals(values, expect)
[docs] def test_max_hour2_optimize(self): maxv = long((time.time() - 3600 * 2) * 1e6) values = list(longkeysortreverse(self.treeset, maxv=maxv, limit=100)) expect = [self.k3, self.k2, self.k1, self.k0] self.assertEquals(values, expect)
[docs] def test_min_day(self): minv = long((time.time() - 3600 * 24) * 1e6) values = list(longkeysortreverse(self.treeset, minv=minv)) expect = [self.k11, self.k10, self.k3, self.k2] self.assertEquals(values, expect)
[docs] def test_max_day_direct(self): maxv = long((time.time() - 3600 * 24) * 1e6) values = list(longkeysortreverse(self.treeset, maxv=maxv)) expect = [self.k1, self.k0] self.assertEquals(values, expect)
[docs] def test_max_day_optimize(self): maxv = long((time.time() - 3600 * 24) * 1e6) values = list(longkeysortreverse(self.treeset, maxv=maxv, limit=100)) expect = [self.k1, self.k0] self.assertEquals(values, expect)
[docs] def test_min_day_max_hour(self): maxv = long((time.time() - 3600) * 1e6) minv = long((time.time() - 3600 * 24) * 1e6) values = list(longkeysortreverse(self.treeset, minv=minv, maxv=maxv)) expect = [self.k3, self.k2] self.assertEquals(values, expect)
[docs] def test_all_limit(self): values = list(longkeysortreverse(self.treeset, limit=3)) expect = [self.k11, self.k10, self.k3] self.assertEquals(values, expect)
[docs] def test_min_day_max_hour_limit(self): maxv = long((time.time() - 3600) * 1e6) minv = long((time.time() - 3600 * 24) * 1e6) values = list(longkeysortreverse(self.treeset, minv=minv, maxv=maxv, limit=1)) expect = [self.k3] self.assertEquals(values, expect)
[docs]class TestLongkeysortreverse2(unittest.TestCase): """Replay real-life problem"""
[docs] def setUp(self): self.treeset = LLTreeSet() for id in replay_ids: self.treeset.insert(id)
[docs] def test_replay_ids(self): self.assertEquals(replay_ids, sorted(replay_ids))
[docs] def test_all2(self): got = sorted(longkeysortreverse(self.treeset, None, None, None)) expect = replay_ids self.assertEquals(len(got), len(expect)) self.assertEquals(got, expect)
[docs] def test_minv(self): minv = 1465289825265391 got = sorted(longkeysortreverse(self.treeset, minv, None, None)) expect = [x for x in replay_ids if minv <= x] self.assertEquals(len(got), len(expect)) self.assertEquals(got, expect)
[docs] def test_maxv(self): maxv = 1465894624580543 got = sorted(longkeysortreverse(self.treeset, None, maxv, None)) expect = [x for x in replay_ids if x <= maxv] self.assertEquals(len(got), len(expect)) self.assertEquals(got, expect)
[docs] def test_limit_20(self): got = sorted(longkeysortreverse(self.treeset, None, None, 20)) expect = replay_ids[-20:] self.assertEquals(len(got), len(expect)) self.assertEquals(got, expect)
[docs] def test_limit_50(self): got = sorted(longkeysortreverse(self.treeset, None, None, 50)) expect = replay_ids[-50:] self.assertEquals(len(got), len(expect)) self.assertEquals(got, expect)
[docs] def test_minv_maxv(self): minv = 1465289825265391 maxv = 1465894624580543 got = sorted(longkeysortreverse(self.treeset, minv, maxv, None)) expect = [x for x in replay_ids if minv <= x <= maxv] self.assertEquals(len(got), len(expect)) self.assertEquals(got, expect)
[docs] def test_minv_limit(self): minv = 1465289825265391 got = sorted(longkeysortreverse(self.treeset, minv, None, 20)) expect = [x for x in replay_ids if minv <= x][-20:] self.assertEquals(len(got), len(expect)) self.assertEquals(got, expect)
[docs] def test_maxv_limit(self): maxv = 1465894624580543 got = sorted(longkeysortreverse(self.treeset, None, maxv, 20)) expect = [x for x in replay_ids if x <= maxv][-20:] self.assertEquals(len(got), len(expect)) self.assertEquals(got, expect)
[docs] def test_minv_maxv_limit(self): minv = 1465289825265391 maxv = 1465894624580543 got = sorted(longkeysortreverse(self.treeset, minv, maxv, 10)) expect = [x for x in replay_ids if minv <= x <= maxv][-10:] self.assertEquals(len(got), len(expect)) self.assertEquals(got, expect)
# this is a real set, but contains (at time of test coding) future updates!!! replay_ids = [ 1465289821764142, 1465289821814609, 1465289822248430, 1465289822807139, 1465289823102934, 1465289823177254, 1465289823237715, 1465289823445777, 1465289823477344, 1465289823548460, 1465289823652171, 1465289824396396, 1465289824433315, 1465289824506349, 1465289824543457, 1465289824766934, 1465289825064447, 1465289825137837, 1465289825265391, 1465289825445317, 1465290121916429, 1465290122065141, 1465290122413969, 1465290122451310, 1465290122558669, 1465290122659182, 1465290122843146, 1465290123140248, 1465290123381254, 1465290123413033, 1465290123713267, 1465290123804120, 1465290123934625, 1465290124136372, 1465290124211522, 1465290124248667, 1465290124877481, 1465290124952499, 1465290125356127, 1465290125533401, 1465290125685000, 1465376221879331, 1465376221990943, 1465376222212724, 1465376222302911, 1465376222357369, 1465376222590294, 1465376222733426, 1465376222955957, 1465376223065925, 1465376223284023, 1465376223524688, 1465376223572205, 1465376223595902, 1465376224024475, 1465376224617697, 1465376224655610, 1465376224692645, 1465376224840411, 1465376225101525, 1465419421693259, 1465419421716725, 1465419421740414, 1465419421790839, 1465419422027607, 1465419422138401, 1465419422231017, 1465419422285479, 1465419422696373, 1465419422880555, 1465419423619623, 1465419423891216, 1465419424061152, 1465419424173841, 1465419424285857, 1465419424803044, 1465419425220518, 1465419425488860, 1465419425610591, 1465894621622105, 1465894621670697, 1465894622102347, 1465894622266980, 1465894622320320, 1465894622487497, 1465894622525003, 1465894622621934, 1465894622769784, 1465894622917980, 1465894623213156, 1465894623261422, 1465894623501969, 1465894623682228, 1465894624321877, 1465894624580543, 1465894624914673, 1465894625401119, 1467968221838136, 1467968221953515, 1467968222175534, 1467968222338858, 1467968222375855, 1467968222991904, 1467968223028968, 1467968223316572, 1467968223348387, 1467968223759332, 1467968223847828, 1467968223979796, 1467968224098918, 1467968224359132, 1467968224469261, 1467968224729651, 1467968224990235, 1467968225027332, 1467968225175325, 1467968225310759, 1467968225573445, 1467968225647622, ]