1# This program is free software; you can redistribute it and/or modify 2# it under the terms of the GNU General Public License as published by 3# the Free Software Foundation; either version 2 of the License, or 4# (at your option) any later version. 5 6from tests import TestCase 7 8from quodlibet import _ 9from quodlibet.qltk.notif import Task, TaskController 10 11 12class FakeStatusBar(object): 13 def __init__(self): 14 self.count = 0 15 16 def update(self): 17 self.count += 1 18 19 20class TTaskController(TestCase): 21 def setUp(self): 22 self.c = TaskController() 23 self.f = FakeStatusBar() 24 self.c.parent = self.f 25 26 def test_reparent(self): 27 def set_parent(p): 28 self.c.parent = p 29 set_parent(None) 30 set_parent(FakeStatusBar()) 31 self.assertRaises(ValueError, set_parent, FakeStatusBar()) 32 33 def test_multiple_tasks(self): 34 self.assertEquals(self.c.active_tasks, []) 35 self.assertNotEqual(self.c.source, "") 36 t1 = Task("src", "desc", controller=self.c) 37 self.assertEquals(self.c.source, "src") 38 self.assertEquals(self.c.active_tasks, [t1]) 39 t1.update(0.5) 40 self.assertEquals(self.c.frac, 0.5) 41 t2 = Task("src2", "desc2", controller=self.c) 42 self.assertEquals(self.c.source, _("Active tasks")) 43 self.assertEquals(self.c.frac, 0.25) 44 Task("src3", "desc3", controller=self.c, known_length=False) 45 self.assertAlmostEqual(self.c.frac, 0.5 / 3) 46 t1.finish() 47 t2.finish() 48 self.assertEquals(self.c.desc, "desc3") 49 self.assertEquals(self.c.frac, None) 50