Пример #1
0
    def test_todo_ge(self):
        t1 = Todo()
        t2 = Todo(name='a')
        t3 = Todo(name='b')
        t4 = Todo(due=datetime.fromtimestamp(10))
        t5 = Todo(due=datetime.fromtimestamp(20))

        # Check comparison by name
        self.assertTrue(t1 >= t1)
        self.assertTrue(t1 <= t2)
        self.assertFalse(t2 <= t1)
        self.assertFalse(t2 >= t3)
        self.assertTrue(t2 >= t2)
        self.assertTrue(t3 >= t2)

        # Check comparison by due time
        self.assertFalse(t4 >= t5)
        self.assertTrue(t4 >= t4)
        self.assertTrue(t5 >= t4)

        # Check invalid call
        with self.assertRaises(TypeError):
            t4 > t4.due
        with self.assertRaises(TypeError):
            t2 >= 1
Пример #2
0
    def test_invalid_time_attributes(self):
        # due and duration must not be set at the same time
        with self.assertRaises(ValueError):
            Todo(begin=1, due=2, duration=1)

        # duration requires begin
        with self.assertRaises(ValueError):
            Todo(duration=1)
Пример #3
0
    def test_neq_todos(self):
        c0, c1 = Calendar(), Calendar()
        t0, t1 = Todo(), Todo()

        c0.events.add(t0)
        c1.events.add(t1)

        self.assertNotEqual(c0, c1)
Пример #4
0
 def test_priority(self):
     t1 = Todo(priority=0)
     self.assertEqual(t1.priority, 0)
     t2 = Todo(priority=9)
     self.assertEqual(t2.priority, 9)
     with self.assertRaises(ValueError):
         Todo(priority=-1)
     with self.assertRaises(ValueError):
         Todo(priority=10)
Пример #5
0
    def test_begin(self):
        begin = datetime(2018, 2, 18, 12, 19, tzinfo=utc)
        t = Todo(begin=begin)
        self.assertEqual(t.begin, arrow.get(begin))

        # begin after due
        t = Todo(due=1)
        with self.assertRaises(ValueError):
            t.begin = 2
Пример #6
0
    def test_begin(self):
        begin = datetime(2018, 2, 18, 12, 19, tzinfo=utc)
        t = Todo(begin=begin)
        self.assertEqual(t.begin, arrow.get(begin))

        # begin after due
        t = Todo(due=1)
        with self.assertRaises(ValueError):
            t.begin = 2
Пример #7
0
 def test_percent(self):
     t1 = Todo(percent=0)
     self.assertEqual(t1.percent, 0)
     t2 = Todo(percent=100)
     self.assertEqual(t2.percent, 100)
     with self.assertRaises(ValueError):
         Todo(percent=-1)
     with self.assertRaises(ValueError):
         Todo(percent=101)
Пример #8
0
    def test_begin(self):
        begin = datetime(2018, 2, 18, 12, 19, tzinfo=datetime_tzutc)
        t = Todo(begin=begin)
        self.assertEqual(t.begin, begin)

        # begin after due
        t = Todo(due=datetime.fromtimestamp(1))
        with self.assertRaises(ValueError):
            t.begin = datetime.fromtimestamp(2)
Пример #9
0
    def test_begin(self):
        begin = arrow.get('2018-02-18T12:19')
        t = Todo(begin=begin)
        self.assertEqual(t.begin, begin)

        # begin after due
        with self.assertRaises(ValueError):
            t = Todo(due=1)
            t.begin = 2
Пример #10
0
    def test_todo_ne(self):
        t1 = Todo()
        t2 = Todo()

        self.assertFalse(t1 != t1)
        self.assertTrue(t1 != t2)

        with self.assertRaises(NotImplementedError):
            t1 != 1
Пример #11
0
    def test_invalid_time_attributes(self):
        # due and duration must not be set at the same time
        with self.assertRaises(ValueError):
            Todo(begin=datetime.now(),
                 due=datetime.now() + timedelta(1),
                 duration=timedelta(1))

        # duration requires begin
        with self.assertRaises(ValueError):
            Todo(duration=timedelta(1))
Пример #12
0
    def test_repr(self):
        c = Calendar()
        self.assertEqual(c.__repr__(), '<Calendar with 0 event and 0 todo>')

        c.events.append(Event())
        c.todos.append(Todo())
        self.assertEqual(c.__repr__(), '<Calendar with 1 event and 1 todo>')

        c.events.append(Event())
        c.todos.append(Todo())
        self.assertEqual(c.__repr__(), '<Calendar with 2 events and 2 todos>')
Пример #13
0
    def test_duration(self):
        begin = datetime(2018, 2, 18, 12, 19, tzinfo=utc)
        t1 = Todo(begin=begin, duration={'hours': 1})
        self.assertEqual(t1.duration, timedelta(hours=1))
        t2 = Todo(begin=begin, duration=1)
        self.assertEqual(t2.duration, timedelta(days=1))
        t3 = Todo(begin=begin, duration=timedelta(minutes=1))
        self.assertEqual(t3.duration, timedelta(minutes=1))

        # Calculate duration from begin and due values
        t4 = Todo(begin=begin, due=begin + timedelta(1))
        self.assertEqual(t4.duration, timedelta(1))
Пример #14
0
    def test_duration(self):
        begin = arrow.get('2018-02-18T12:19')
        t1 = Todo(begin=begin, duration={'hours': 1})
        self.assertEqual(t1.duration, timedelta(hours=1))
        t2 = Todo(begin=begin, duration=1)
        self.assertEqual(t2.duration, timedelta(days=1))
        t3 = Todo(begin=begin, duration=timedelta(minutes=1))
        self.assertEqual(t3.duration, timedelta(minutes=1))

        # Calculate duration from begin and due values
        t4 = Todo(begin=begin, due=begin.shift(days=1))
        self.assertEqual(t4.duration, timedelta(1))
Пример #15
0
    def test_urepr(self):
        # TODO : more cases
        c = Calendar()
        self.assertEqual(c.__urepr__(), '<Calendar with 0 event and 0 todo>')

        c.events.add(Event())
        c.todos.add(Todo())
        self.assertEqual(c.__urepr__(), '<Calendar with 1 event and 1 todo>')

        c.events.add(Event())
        c.todos.add(Todo())
        self.assertEqual(c.__urepr__(), '<Calendar with 2 events and 2 todos>')
Пример #16
0
    def test_due(self):
        begin = datetime(2018, 2, 18, 12, 19, tzinfo=utc)
        due = begin + timedelta(1)
        t1 = Todo(due=due)
        self.assertEqual(t1.due, begin + timedelta(1))

        due = begin - timedelta(1)
        with self.assertRaises(ValueError):
            Todo(begin=begin, due=due)

        # Calculate due from begin and duration value
        t2 = Todo(begin=begin, duration=1)
        self.assertEqual(t2.due, begin + timedelta(1))
Пример #17
0
    def test_due(self):
        begin = arrow.get('2018-02-18T12:19')
        due = begin.shift(days=1)
        with freeze_time(begin.format()):
            t1 = Todo(due=due)
        self.assertEqual(t1.due, begin.shift(days=1))

        due = begin.shift(days=-1)
        with self.assertRaises(ValueError):
            Todo(begin=begin, due=due)

        # Calculate due from begin and duration value
        t2 = Todo(begin=begin, duration=1)
        self.assertEqual(t2.due, begin.shift(days=1))
Пример #18
0
    def test_escape_output(self):
        dtstamp = datetime(2018, 2, 19, 21, 00, tzinfo=utc)
        t = Todo(dtstamp=dtstamp, uid='Uid')

        t.name = "Hello, with \\ special; chars and \n newlines"
        t.location = "Here; too"
        t.description = "Every\nwhere ! Yes, yes !"

        test_str = CRLF.join(
            ("BEGIN:VTODO", "DESCRIPTION:Every\\nwhere ! Yes\\, yes !",
             "DTSTAMP:20180219T210000Z", "LOCATION:Here\\; too",
             "SUMMARY:Hello\\, with \\\\ special\\; chars and \\n newlines",
             "UID:Uid", "END:VTODO"))
        self.assertEqual(str(t), test_str)
Пример #19
0
    def test_escape_output(self):
        dtstamp = datetime(2018, 2, 19, 21, 00, tzinfo=utc)
        t = Todo(dtstamp=dtstamp, uid='Uid')

        t.name = "Hello, with \\ special; chars and \n newlines"
        t.location = "Here; too"
        t.description = "Every\nwhere ! Yes, yes !"

        test_str = CRLF.join(("BEGIN:VTODO",
                              "DTSTAMP:20180219T210000Z",
                              "UID:Uid",
                              "DESCRIPTION:Every\\nwhere ! Yes\\, yes !",
                              "LOCATION:Here\\; too",
                              "SUMMARY:Hello\\, with \\\\ special\\; chars and \\n newlines",
                              "END:VTODO"))
        self.assertEqual(str(t), test_str)
Пример #20
0
    def test_init_non_exclusive_arguments(self):
        # attributes percent, priority, begin, due, and duration
        # aren't tested here
        dtstamp = datetime(2018, 2, 18, 12, 19, tzinfo=datetime_tzutc)
        completed = dtstamp + timedelta(days=1)
        created = dtstamp + timedelta(seconds=1)
        alarms = [DisplayAlarm]

        t = Todo(uid='uid',
                 dtstamp=dtstamp,
                 completed=completed,
                 created=created,
                 description='description',
                 location='location',
                 name='name',
                 url='url',
                 alarms=alarms)

        self.assertEqual(t.uid, 'uid')
        self.assertEqual(t.dtstamp, dtstamp)
        self.assertEqual(t.completed, completed)
        self.assertEqual(t.created, created)
        self.assertEqual(t.description, 'description')
        self.assertEqual(t.location, 'location')
        self.assertEqual(t.name, 'name')
        self.assertEqual(t.url, 'url')
        self.assertEqual(t.alarms, alarms)
Пример #21
0
    def test_init_non_exclusive_arguments(self):
        # attributes percent, priority, begin, due, and duration
        # aren't tested here
        dtstamp = datetime(2018, 2, 18, 12, 19, tzinfo=utc)
        completed = dtstamp + timedelta(days=1)
        created = dtstamp + timedelta(seconds=1)
        alarm = [AlarmFactory().get_type_from_action('DISPLAY')]
        alarms = set()
        alarms.update(alarm)

        t = Todo(uid='uid',
                 dtstamp=dtstamp,
                 completed=completed,
                 created=created,
                 description='description',
                 location='location',
                 name='name',
                 url='url',
                 alarms=alarm)

        self.assertEqual(t.uid, 'uid')
        self.assertEqual(t.dtstamp, arrow.get(dtstamp))
        self.assertEqual(t.completed, arrow.get(completed))
        self.assertEqual(t.created, arrow.get(created))
        self.assertEqual(t.description, 'description')
        self.assertEqual(t.location, 'location')
        self.assertEqual(t.name, 'name')
        self.assertEqual(t.url, 'url')
        self.assertSetEqual(t.alarms, alarms)
Пример #22
0
    def test_todos_setter(self):

        c = Calendar(cal1)
        t = Todo()
        c.todos = [t]

        self.assertEqual(c.todos, [t])
Пример #23
0
    def test_output_due(self):
        dtstamp = datetime(2018, 2, 19, 21, 00, tzinfo=utc)
        due = datetime(2018, 2, 20, 1, 00, tzinfo=utc)
        t = Todo(dtstamp=dtstamp, uid='Uid', due=due)

        test_str = CRLF.join(("BEGIN:VTODO", "DTSTAMP:20180219T210000Z",
                              "UID:Uid", "DUE:20180220T010000Z", "END:VTODO"))
        self.assertEqual(str(t), test_str)
Пример #24
0
    def test_todo_ge(self):
        t1 = Todo()
        t2 = Todo(name='a')
        t3 = Todo(name='b')
        t4 = Todo(due=10)
        t5 = Todo(due=20)
        due_time = datetime(2018, 2, 18, 12, 19, tzinfo=utc)
        t6 = Todo(due=due_time)
        t7 = Todo(due=due_time + timedelta(days=1))

        # Check comparison by name
        self.assertTrue(t1 >= t1)
        self.assertTrue(t1 >= t2)
        self.assertFalse(t2 >= t1)
        self.assertFalse(t2 >= t3)
        self.assertTrue(t2 >= t2)
        self.assertTrue(t3 >= t2)

        # Check comparison by due time
        self.assertFalse(t4 >= t5)
        self.assertTrue(t4 >= t4)
        self.assertTrue(t5 >= t4)

        # Check comparison with datetime
        self.assertFalse(t4 >= due_time)
        self.assertTrue(t6 >= due_time)
        self.assertTrue(t7 >= due_time)

        # Check invalid call
        with self.assertRaises(NotImplementedError):
            t1 >= due_time
        with self.assertRaises(NotImplementedError):
            t2 >= due_time
        with self.assertRaises(NotImplementedError):
            t2 >= 1
Пример #25
0
    def test_repr(self):
        begin = datetime(2018, 2, 18, 12, 19, tzinfo=utc)

        t1 = Todo()
        self.assertEqual(repr(t1), '<Todo>')

        t2 = Todo(name='foo')
        self.assertEqual(repr(t2), "<Todo 'foo'>")

        t3 = Todo(name='foo', begin=begin)
        self.assertEqual(repr(t3), "<Todo 'foo' begin:2018-02-18T12:19:00+00:00>")

        t4 = Todo(name='foo', due=begin)
        self.assertEqual(repr(t4), "<Todo 'foo' due:2018-02-18T12:19:00+00:00>")

        t4 = Todo(name='foo', begin=begin, due=begin + timedelta(1))
        self.assertEqual(repr(t4),
                         "<Todo 'foo' begin:2018-02-18T12:19:00+00:00 due:2018-02-19T12:19:00+00:00>")
Пример #26
0
    def test_output_due(self):
        dtstamp = arrow.get('2018-02-19T21:00')
        due = arrow.get('2018-02-20T01:00')
        with freeze_time(dtstamp.format()):
            t = Todo(dtstamp=dtstamp, uid='Uid', due=due)

        test_str = CRLF.join(("BEGIN:VTODO", "DTSTAMP:20180219T210000Z",
                              "UID:Uid", "DUE:20180220T010000Z", "END:VTODO"))
        self.assertEqual(str(t), test_str)
Пример #27
0
    def test_clone(self):
        c0 = Calendar()
        e = Event()
        t = Todo()
        c0.events.add(e)
        c0.todos.add(t)
        c1 = c0.clone()

        self.assertEqual(c0.events, c1.events)
        self.assertEqual(c0.todos, c1.todos)
        self.assertEqual(c0, c1)
Пример #28
0
    def test_neq_len(self):
        c0, c1 = Calendar(), Calendar()
        e1 = Event()
        e2 = Event()

        c0.events.add(e1)
        c0.events.add(e2)

        c1.events.add(e1)

        self.assertNotEqual(c0, c1)

        t1 = Todo()
        t2 = Todo()

        c0.todos.add(t1)
        c0.todos.add(t2)

        c1.todos.add(t1)

        self.assertNotEqual(c0, c1)
Пример #29
0
    def test_todo_lt(self):
        t1 = Todo()
        t2 = Todo(name='a')
        t3 = Todo(name='b')
        with freeze_time('1970-01-01'):
            t4 = Todo(due=10)
            t5 = Todo(due=20)
        due_time = arrow.get('2018-02-18T12:19')
        due_datetime = due_time.datetime
        with freeze_time(due_time.shift(days=-1).format()):
            t6 = Todo(due=due_time)

        # Check comparison by name
        self.assertFalse(t1 < t1)
        self.assertTrue(t1 < t2)
        self.assertFalse(t2 < t1)
        self.assertTrue(t2 < t3)
        self.assertFalse(t3 < t2)

        # Check comparison by due time
        self.assertTrue(t4 < t5)
        self.assertFalse(t4 < t4)
        self.assertFalse(t5 < t4)

        # Check comparison with datetime
        self.assertTrue(t4 < due_datetime)
        self.assertFalse(t6 < due_datetime)

        # Check invalid call
        with self.assertRaises(NotImplementedError):
            t1 < due_time
        with self.assertRaises(NotImplementedError):
            t2 < due_time
        with self.assertRaises(NotImplementedError):
            t2 < 1
Пример #30
0
    def test_todo_lt(self):
        t1 = Todo()
        t2 = Todo(name='a')
        t3 = Todo(name='b')
        t4 = Todo(due=10)
        t5 = Todo(due=20)
        due_time = datetime(2018, 2, 18, 12, 19, tzinfo=utc)
        t6 = Todo(due=due_time)

        # Check comparison by name
        self.assertFalse(t1 < t1)
        self.assertTrue(t1 < t2)
        self.assertFalse(t2 < t1)
        self.assertTrue(t2 < t3)
        self.assertFalse(t3 < t2)

        # Check comparison by due time
        self.assertTrue(t4 < t5)
        self.assertFalse(t4 < t4)
        self.assertFalse(t5 < t4)

        # Check comparison with datetime
        self.assertTrue(t4 < due_time)
        self.assertFalse(t6 < due_time)

        # Check invalid call
        with self.assertRaises(NotImplementedError):
            t1 < due_time
        with self.assertRaises(NotImplementedError):
            t2 < due_time
        with self.assertRaises(NotImplementedError):
            t2 < 1
Пример #31
0
    def test_repr(self):
        begin = datetime(2018, 2, 18, 12, 19, tzinfo=datetime_tzutc)

        t1 = Todo()
        self.assertEqual(repr(t1), '<floating Todo>')

        t2 = Todo(name='foo')
        self.assertEqual(repr(t2), "<floating Todo 'foo'>")

        t3 = Todo(name='foo', begin=begin)
        self.assertEqual(repr(t3),
                         "<Todo 'foo' begin: 2018-02-18 12:19:00+00:00>")

        t4 = Todo(name='foo', due=begin)
        self.assertEqual(repr(t4),
                         "<Todo 'foo' fixed due: 2018-02-18 12:19:00+00:00>")

        t4 = Todo(name='foo', begin=begin, due=begin + timedelta(1))
        self.assertEqual(
            repr(t4),
            "<Todo 'foo' begin: 2018-02-18 12:19:00+00:00 fixed due: 2018-02-19 12:19:00+00:00 duration: 1 day, 0:00:00>"
        )
Пример #32
0
    def test_eq(self):
        c0, c1 = Calendar(), Calendar()
        e = Event()

        c0.events.append(e)
        c1.events.append(e)

        self.assertEqual(c0, c1)

        t = Todo()

        c0.todos.append(t)
        c1.todos.append(t)