Ejemplo n.º 1
0
    def test_insert(self):

        # Test proper initialization
        ab = TimeNode(self.a, self.b, "ab")
        self.assertEquals("ab", ab.id)
        self.assertEquals(self.a, ab.start)
        self.assertEquals(self.b, ab.end)
        self.assertIsNone(ab.next)
        chain1 = TimeNodeChain()
        self.assertIsNone(chain1.get_head())
        chain2 = TimeNodeChain()
        self.assertEquals(ab, chain2.insert(ab))
        self.assertEquals(ab, chain2.get_head())

        # AB CD EF Insert at front
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ef, chain.insert(ef))
        head = chain.get_head()
        self.check_ordering(head, ab, cd, ef)

        # EF CD AB (inserted backwards)
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ab, chain.insert(ab))
        head = chain.get_head()
        self.check_ordering(head, ab, cd, ef)

        # CD EF AB (mixed ordering)
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(ab, chain.insert(ab))
        head = chain.get_head()
        self.check_ordering(head, ab, cd, ef)

        # AB EF CD (more mixed orderings)
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(cd, chain.insert(cd))
        head = chain.get_head()
        self.check_ordering(head, ab, cd, ef)

        # AB BC CD (exactly equal start/end times, out of order)
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        bc = TimeNode(self.c, self.d, "bc")
        cd = TimeNode(self.e, self.f, "cd")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(bc, chain.insert(bc))
        self.assertEquals(cd, chain.insert(cd))
        head = chain.get_head()
        self.check_ordering(head, ab, bc, cd)

        # AB CD BC (exactly equal start/end times, out of order)
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        bc = TimeNode(self.c, self.d, "bc")
        cd = TimeNode(self.e, self.f, "cd")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(bc, chain.insert(bc))
        head = chain.get_head()
        self.check_ordering(head, ab, bc, cd)
Ejemplo n.º 2
0
 def time_log(self):
     """
     Forms a TimeNodeChain based off events in this Calendar
     """
     return TimeNodeChain(
         GEvent.objects.filter(calendar=self).order_by('updated'))
Ejemplo n.º 3
0
    def test_insert_all_with_overwrite(self):

        # AB1 CD EF + AB2 = AB2 CD EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ab1 = TimeNode(self.a, self.b, "ab")
        chain.insert_all([ab, cd, ef, ab1])
        head = chain.get_head()
        self.check_ordering(head, ab1, cd, ef)

        # CD EF AB1 + AB2 = AB2 CD EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ab1 = TimeNode(self.a, self.b, "ab")
        chain.insert_all([cd, ef, ab, ab1])
        head = chain.get_head()
        self.check_ordering(head, ab1, cd, ef)

        # AB CD EF + AD = AD EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ad = TimeNode(self.a, self.d, "ad")
        chain.insert_all([ab, cd, ef, ad])
        head = chain.get_head()
        self.check_ordering(head, ad, ef, None)

        # AB CD EF + AD + DE = AD DE EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ad = TimeNode(self.a, self.d, "ad")
        de = TimeNode(self.d, self.e, "de")
        chain.insert_all([ab, cd, ef, ad, de])
        head = chain.get_head()
        self.check_ordering(head, ad, de, ef)

        # AC DE EF + BD = BD DE EF
        chain = TimeNodeChain()
        ac = TimeNode(self.a, self.c, "ac")
        de = TimeNode(self.d, self.e, "de")
        ef = TimeNode(self.e, self.f, "ef")
        bd = TimeNode(self.b, self.d, "bd")
        chain.insert_all([ac, de, ef, bd])
        head = chain.get_head()
        self.check_ordering(head, bd, de, ef)

        # AC DE EF + BD + BE = BE EF
        chain = TimeNodeChain()
        ac = TimeNode(self.a, self.c, "ac")
        de = TimeNode(self.d, self.e, "de")
        ef = TimeNode(self.e, self.f, "ef")
        bd = TimeNode(self.b, self.d, "bd")
        be = TimeNode(self.b, self.e, "be")
        chain.insert_all([ac, de, ef, bd, be])
        head = chain.get_head()
        self.check_ordering(head, be, ef, None)

        # BE EF FG + EG = BE EG
        chain = TimeNodeChain()
        be = TimeNode(self.b, self.e, "be")
        ef = TimeNode(self.e, self.f, "ef")
        fg = TimeNode(self.f, self.g, "fg")
        eg = TimeNode(self.e, self.g, "eg")
        chain.insert_all([be, ef, fg, eg])
        head = chain.get_head()
        self.check_ordering(head, be, eg, None)

        # AB CD EF + GH + AG = AG GH
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        gh = TimeNode(self.g, self.h, "gh")
        ag = TimeNode(self.a, self.g, "ag")
        chain.insert_all([ab, cd, ef, gh, ag])
        head = chain.get_head()
        self.check_ordering(head, ag, gh, None)
Ejemplo n.º 4
0
    def test_insert_with_overwrite(self):

        # AB1 CD EF + AB2 = AB2 CD EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ab1 = TimeNode(self.a, self.b, "ab")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(ab1, chain.insert(ab1))
        head = chain.get_head()
        self.check_ordering(head, ab1, cd, ef)

        # CD EF AB1 + AB2 = AB2 CD EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ab1 = TimeNode(self.a, self.b, "ab")
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(ab1, chain.insert(ab1))
        head = chain.get_head()
        self.check_ordering(head, ab1, cd, ef)

        # AB CD EF + AD = AD EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ad = TimeNode(self.a, self.d, "ad")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(ad, chain.insert(ad))
        head = chain.get_head()
        self.check_ordering(head, ad, ef, None)

        # AB CD EF + AD + DE = AD DE EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ad = TimeNode(self.a, self.d, "ad")
        de = TimeNode(self.d, self.e, "de")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(ad, chain.insert(ad))
        self.assertEquals(de, chain.insert(de))
        head = chain.get_head()
        self.check_ordering(head, ad, de, ef)

        # AC DE EF + BD = BD DE EF
        chain = TimeNodeChain()
        ac = TimeNode(self.a, self.c, "ac")
        de = TimeNode(self.d, self.e, "de")
        ef = TimeNode(self.e, self.f, "ef")
        bd = TimeNode(self.b, self.d, "bd")
        self.assertEquals(ac, chain.insert(ac))
        self.assertEquals(de, chain.insert(de))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(bd, chain.insert(bd))
        head = chain.get_head()
        self.check_ordering(head, bd, de, ef)

        # AC DE EF + BD + BE = BE EF
        chain = TimeNodeChain()
        ac = TimeNode(self.a, self.c, "ac")
        de = TimeNode(self.d, self.e, "de")
        ef = TimeNode(self.e, self.f, "ef")
        bd = TimeNode(self.b, self.d, "bd")
        be = TimeNode(self.b, self.e, "be")
        self.assertEquals(ac, chain.insert(ac))
        self.assertEquals(de, chain.insert(de))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(bd, chain.insert(bd))
        self.assertEquals(be, chain.insert(be))
        head = chain.get_head()
        self.check_ordering(head, be, ef, None)

        # BE EF FG + EG = BE EG
        chain = TimeNodeChain()
        be = TimeNode(self.b, self.e, "be")
        ef = TimeNode(self.e, self.f, "ef")
        fg = TimeNode(self.f, self.g, "fg")
        eg = TimeNode(self.e, self.g, "eg")
        self.assertEquals(be, chain.insert(be))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(fg, chain.insert(fg))
        self.assertEquals(eg, chain.insert(eg))
        head = chain.get_head()
        self.check_ordering(head, be, eg, None)

        # AB CD EF + GH + AG = AG GH
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        gh = TimeNode(self.g, self.h, "gh")
        ag = TimeNode(self.a, self.g, "ag")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(gh, chain.insert(gh))
        self.assertEquals(ag, chain.insert(ag))
        head = chain.get_head()
        self.check_ordering(head, ag, gh, None)
Ejemplo n.º 5
0
    def test_insert(self):

        # Test proper initialization
        ab = TimeNode(self.a, self.b, "ab")
        self.assertEquals("ab", ab.id)
        self.assertEquals(self.a, ab.start)
        self.assertEquals(self.b, ab.end)
        self.assertIsNone(ab.next)
        chain1 = TimeNodeChain()
        self.assertIsNone(chain1.get_head())
        chain2 = TimeNodeChain()
        self.assertEquals(ab, chain2.insert(ab))
        self.assertEquals(ab, chain2.get_head())

        # AB CD EF Insert at front
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ef, chain.insert(ef))
        head = chain.get_head()
        self.check_ordering(head, ab, cd, ef)

        # EF CD AB (inserted backwards)
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ab, chain.insert(ab))
        head = chain.get_head()
        self.check_ordering(head, ab, cd, ef)

        # CD EF AB (mixed ordering)
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(ab, chain.insert(ab))
        head = chain.get_head()
        self.check_ordering(head, ab, cd, ef)

        # AB EF CD (more mixed orderings)
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(cd, chain.insert(cd))
        head = chain.get_head()
        self.check_ordering(head, ab, cd, ef)

        # AB BC CD (exactly equal start/end times, out of order)
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        bc = TimeNode(self.c, self.d, "bc")
        cd = TimeNode(self.e, self.f, "cd")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(bc, chain.insert(bc))
        self.assertEquals(cd, chain.insert(cd))
        head = chain.get_head()
        self.check_ordering(head, ab, bc, cd)

        # AB CD BC (exactly equal start/end times, out of order)
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        bc = TimeNode(self.c, self.d, "bc")
        cd = TimeNode(self.e, self.f, "cd")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(bc, chain.insert(bc))
        head = chain.get_head()
        self.check_ordering(head, ab, bc, cd)
Ejemplo n.º 6
0
    def test_insert_all_with_overwrite(self):

        # AB1 CD EF + AB2 = AB2 CD EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ab1 = TimeNode(self.a, self.b, "ab")
        chain.insert_all([ab, cd, ef, ab1])
        head = chain.get_head()
        self.check_ordering(head, ab1, cd, ef)

        # CD EF AB1 + AB2 = AB2 CD EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ab1 = TimeNode(self.a, self.b, "ab")
        chain.insert_all([cd, ef, ab, ab1])
        head = chain.get_head()
        self.check_ordering(head, ab1, cd, ef)

        # AB CD EF + AD = AD EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ad = TimeNode(self.a, self.d, "ad")
        chain.insert_all([ab, cd, ef, ad])
        head = chain.get_head()
        self.check_ordering(head, ad, ef, None)

        # AB CD EF + AD + DE = AD DE EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ad = TimeNode(self.a, self.d, "ad")
        de = TimeNode(self.d, self.e, "de")
        chain.insert_all([ab, cd, ef, ad, de])
        head = chain.get_head()
        self.check_ordering(head, ad, de, ef)

        # AC DE EF + BD = BD DE EF
        chain = TimeNodeChain()
        ac = TimeNode(self.a, self.c, "ac")
        de = TimeNode(self.d, self.e, "de")
        ef = TimeNode(self.e, self.f, "ef")
        bd = TimeNode(self.b, self.d, "bd")
        chain.insert_all([ac, de, ef, bd])
        head = chain.get_head()
        self.check_ordering(head, bd, de, ef)

        # AC DE EF + BD + BE = BE EF
        chain = TimeNodeChain()
        ac = TimeNode(self.a, self.c, "ac")
        de = TimeNode(self.d, self.e, "de")
        ef = TimeNode(self.e, self.f, "ef")
        bd = TimeNode(self.b, self.d, "bd")
        be = TimeNode(self.b, self.e, "be")
        chain.insert_all([ac, de, ef, bd, be])
        head = chain.get_head()
        self.check_ordering(head, be, ef, None)

        # BE EF FG + EG = BE EG
        chain = TimeNodeChain()
        be = TimeNode(self.b, self.e, "be")
        ef = TimeNode(self.e, self.f, "ef")
        fg = TimeNode(self.f, self.g, "fg")
        eg = TimeNode(self.e, self.g, "eg")
        chain.insert_all([be, ef, fg, eg])
        head = chain.get_head()
        self.check_ordering(head, be, eg, None)

        # AB CD EF + GH + AG = AG GH
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        gh = TimeNode(self.g, self.h, "gh")
        ag = TimeNode(self.a, self.g, "ag")
        chain.insert_all([ab, cd, ef, gh, ag])
        head = chain.get_head()
        self.check_ordering(head, ag, gh, None)
Ejemplo n.º 7
0
    def test_insert_with_overwrite(self):

        # AB1 CD EF + AB2 = AB2 CD EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ab1 = TimeNode(self.a, self.b, "ab")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(ab1, chain.insert(ab1))
        head = chain.get_head()
        self.check_ordering(head, ab1, cd, ef)

        # CD EF AB1 + AB2 = AB2 CD EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ab1 = TimeNode(self.a, self.b, "ab")
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(ab1, chain.insert(ab1))
        head = chain.get_head()
        self.check_ordering(head, ab1, cd, ef)

        # AB CD EF + AD = AD EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ad = TimeNode(self.a, self.d, "ad")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(ad, chain.insert(ad))
        head = chain.get_head()
        self.check_ordering(head, ad, ef, None)

        # AB CD EF + AD + DE = AD DE EF
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        ad = TimeNode(self.a, self.d, "ad")
        de = TimeNode(self.d, self.e, "de")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(ad, chain.insert(ad))
        self.assertEquals(de, chain.insert(de))
        head = chain.get_head()
        self.check_ordering(head, ad, de, ef)

        # AC DE EF + BD = BD DE EF
        chain = TimeNodeChain()
        ac = TimeNode(self.a, self.c, "ac")
        de = TimeNode(self.d, self.e, "de")
        ef = TimeNode(self.e, self.f, "ef")
        bd = TimeNode(self.b, self.d, "bd")
        self.assertEquals(ac, chain.insert(ac))
        self.assertEquals(de, chain.insert(de))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(bd, chain.insert(bd))
        head = chain.get_head()
        self.check_ordering(head, bd, de, ef)

        # AC DE EF + BD + BE = BE EF
        chain = TimeNodeChain()
        ac = TimeNode(self.a, self.c, "ac")
        de = TimeNode(self.d, self.e, "de")
        ef = TimeNode(self.e, self.f, "ef")
        bd = TimeNode(self.b, self.d, "bd")
        be = TimeNode(self.b, self.e, "be")
        self.assertEquals(ac, chain.insert(ac))
        self.assertEquals(de, chain.insert(de))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(bd, chain.insert(bd))
        self.assertEquals(be, chain.insert(be))
        head = chain.get_head()
        self.check_ordering(head, be, ef, None)

        # BE EF FG + EG = BE EG
        chain = TimeNodeChain()
        be = TimeNode(self.b, self.e, "be")
        ef = TimeNode(self.e, self.f, "ef")
        fg = TimeNode(self.f, self.g, "fg")
        eg = TimeNode(self.e, self.g, "eg")
        self.assertEquals(be, chain.insert(be))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(fg, chain.insert(fg))
        self.assertEquals(eg, chain.insert(eg))
        head = chain.get_head()
        self.check_ordering(head, be, eg, None)

        # AB CD EF + GH + AG = AG GH
        chain = TimeNodeChain()
        ab = TimeNode(self.a, self.b, "ab")
        cd = TimeNode(self.c, self.d, "cd")
        ef = TimeNode(self.e, self.f, "ef")
        gh = TimeNode(self.g, self.h, "gh")
        ag = TimeNode(self.a, self.g, "ag")
        self.assertEquals(ab, chain.insert(ab))
        self.assertEquals(cd, chain.insert(cd))
        self.assertEquals(ef, chain.insert(ef))
        self.assertEquals(gh, chain.insert(gh))
        self.assertEquals(ag, chain.insert(ag))
        head = chain.get_head()
        self.check_ordering(head, ag, gh, None)