~free.ekanayaka/storm/any-expr

« back to all changes in this revision

Viewing changes to tests/variables.py

  • Committer: Gustavo Niemeyer
  • Date: 2007-02-07 12:01:11 UTC
  • mto: This revision was merged to the branch mainline in revision 97.
  • Revision ID: gustavo@niemeyer.net-20070207120111-p0wc0hekbute8260
- Some additional tests for List variables.
- Fixed pickling of Undef type.

Show diffs side-by-side

added added

removed removed

Lines of Context:
500
500
        variable.get()["b"] = 2
501
501
        self.assertEquals(variable.get(), {"a": 1, "b": 2})
502
502
 
 
503
    def test_pickle_events(self):
 
504
        event = EventSystem(marker)
 
505
 
 
506
        variable = PickleVariable(event=event, value_factory=list)
 
507
 
 
508
        changes = []
 
509
        def changed(owner, variable, old_value, new_value, fromdb):
 
510
            changes.append((variable, old_value, new_value, fromdb))
 
511
 
 
512
        event.hook("changed", changed)
 
513
 
 
514
        variable.checkpoint()
 
515
 
 
516
        event.emit("flush")
 
517
 
 
518
        self.assertEquals(changes, [])
 
519
 
 
520
        lst = variable.get()
 
521
 
 
522
        self.assertEquals(lst, [])
 
523
        self.assertEquals(changes, [])
 
524
 
 
525
        lst.append("a")
 
526
 
 
527
        self.assertEquals(changes, [])
 
528
 
 
529
        event.emit("flush")
 
530
 
 
531
        self.assertEquals(changes, [(variable, None, ["a"], False)])
 
532
 
 
533
        del changes[:]
 
534
 
 
535
        event.emit("object-deleted")
 
536
        self.assertEquals(changes, [(variable, None, ["a"], False)])
 
537
 
 
538
 
 
539
class ListVariableTest(TestHelper):
 
540
 
 
541
    def test_get_set(self):
 
542
        l = [1, 2]
 
543
        l_dump = pickle.dumps(l, -1)
 
544
 
 
545
        variable = ListVariable(IntVariable)
 
546
 
 
547
        variable.set(l)
 
548
        self.assertEquals(variable.get(), l)
 
549
        self.assertEquals(variable.get(to_db=True),
 
550
                          [IntVariable(1), IntVariable(2)])
 
551
 
 
552
        variable.set([1.1, 2.2], from_db=True)
 
553
        self.assertEquals(variable.get(), l)
 
554
        self.assertEquals(variable.get(to_db=True),
 
555
                          [IntVariable(1), IntVariable(2)])
 
556
 
 
557
        self.assertEquals(variable.get_state(), (Undef, l_dump))
 
558
 
 
559
        variable.set([])
 
560
        variable.set_state((Undef, l_dump))
 
561
        self.assertEquals(variable.get(), l)
 
562
 
 
563
        variable.get().append(3)
 
564
        self.assertEquals(variable.get(), [1, 2, 3])
 
565
 
 
566
    def test_list_events(self):
 
567
        event = EventSystem(marker)
 
568
 
 
569
        variable = ListVariable(StrVariable, event=event, value_factory=list)
 
570
 
 
571
        changes = []
 
572
        def changed(owner, variable, old_value, new_value, fromdb):
 
573
            changes.append((variable, old_value, new_value, fromdb))
 
574
 
 
575
        event.hook("changed", changed)
 
576
 
 
577
        variable.checkpoint()
 
578
 
 
579
        event.emit("flush")
 
580
 
 
581
        self.assertEquals(changes, [])
 
582
 
 
583
        lst = variable.get()
 
584
 
 
585
        self.assertEquals(lst, [])
 
586
        self.assertEquals(changes, [])
 
587
 
 
588
        lst.append("a")
 
589
 
 
590
        self.assertEquals(changes, [])
 
591
 
 
592
        event.emit("flush")
 
593
 
 
594
        self.assertEquals(changes, [(variable, None, ["a"], False)])
 
595
 
 
596
        del changes[:]
 
597
 
 
598
        event.emit("object-deleted")
 
599
        self.assertEquals(changes, [(variable, None, ["a"], False)])
 
600