+ def test_no_branches(self):
+ library = MercurialLibrary(self.path + '/testrepoII')
+ n4 = library.shelf(4)
+ n3 = library.shelf(3)
+ n2 = library.shelf(2)
+ n1 = library.shelf(1)
+ n0 = library.shelf(0)
+
+ assert_true( n3.parentof(n4) )
+ assert_false( n4.parentof(n3) )
+ assert_true( n0.parentof(n1) )
+ assert_false( n1.parentof(n0) )
+ assert_false( n0.parentof(n4) )
+
+ # def test_ancestor_of_simple(self):
+ assert_true( n3.ancestorof(n4) )
+ assert_true( n2.ancestorof(n4) )
+ assert_true( n1.ancestorof(n4) )
+ assert_true( n0.ancestorof(n4) )
+
+ assert_true( n2.ancestorof(n3) )
+ assert_true( n1.ancestorof(n3) )
+ assert_true( n0.ancestorof(n3) )
+
+ assert_false( n4.ancestorof(n4) )
+ assert_false( n4.ancestorof(n3) )
+ assert_false( n3.ancestorof(n2) )
+ assert_false( n3.ancestorof(n1) )
+ assert_false( n3.ancestorof(n0) )
+
+ # def test_common_ancestor_simple(self):
+ assert_true( n3.has_common_ancestor(n4) )
+ assert_true( n3.has_common_ancestor(n3) )
+ assert_true( n3.has_common_ancestor(n3) )
+
+
+ def test_once_branched(self):
+ library = MercurialLibrary(self.path + '/test3')
+
+ n7 = library.shelf(7)
+ n6 = library.shelf(6)
+ n5 = library.shelf(5)
+ n4 = library.shelf(4)
+ n3 = library.shelf(3)
+ n2 = library.shelf(2)
+
+ assert_true( n2.parentof(n3) )
+ assert_false( n3.parentof(n2) )
+
+ assert_true( n2.parentof(n5) )
+ assert_false( n5.parentof(n2) )
+
+ assert_false( n2.parentof(n4) )
+ assert_false( n2.parentof(n6) )
+ assert_false( n3.parentof(n5) )
+ assert_false( n5.parentof(n3) )
+
+ # def test_ancestorof_branched(self):
+ assert_true( n2.ancestorof(n7) )
+ assert_false( n7.ancestorof(n2) )
+ assert_true( n2.ancestorof(n6) )
+ assert_false( n6.ancestorof(n2) )
+ assert_true( n2.ancestorof(n5) )
+ assert_false( n5.ancestorof(n2) )
+
+ assert_false( n3.ancestorof(n5) )
+ assert_false( n5.ancestorof(n3) )
+ assert_false( n4.ancestorof(n5) )
+ assert_false( n5.ancestorof(n4) )
+ assert_false( n3.ancestorof(n7) )
+ assert_false( n7.ancestorof(n3) )
+ assert_false( n4.ancestorof(n6) )
+ assert_false( n6.ancestorof(n4) )
+
+ # def test_common_ancestor_branched(self):
+ assert_true( n2.has_common_ancestor(n4) )
+ assert_true( n2.has_common_ancestor(n7) )
+ assert_true( n2.has_common_ancestor(n6) )
+
+ # cause it's not in the right branch
+ assert_false( n5.has_common_ancestor(n3) )
+ assert_false( n7.has_common_ancestor(n4) )
+
+ def test_after_merge(self):
+ library = MercurialLibrary(self.path + '/test4')
+ n8 = library.shelf(8)
+ n7 = library.shelf(7)
+ n6 = library.shelf(6)
+
+ assert_true( n7.parentof(n8) )
+ assert_false( n8.parentof(n7) )
+
+ assert_true( n7.ancestorof(n8) )
+ assert_true( n6.ancestorof(n8) )
+
+
+ assert_true( n7.has_common_ancestor(n8) )
+ # cause it's not in the right branch
+ assert_false( n8.has_common_ancestor(n7) )
+
+
+ def test_after_merge_and_local_commit(self):
+ library = MercurialLibrary(self.path + '/test5b')
+ n9 = library.shelf(9)
+ n8 = library.shelf(8)
+ n7 = library.shelf(7)
+ n6 = library.shelf(6)
+
+ assert_true( n7.parentof(n8) )
+ assert_false( n8.parentof(n7) )
+
+ assert_true( n9.has_common_ancestor(n8) )
+ # cause it's not in the right branch
+ assert_false( n8.has_common_ancestor(n9) )
+
+
+ def test_merge_personal_to_default(self):
+ library = MercurialLibrary(self.path + '/test3')
+
+ main = library.shelf(2)
+ local = library.shelf(7)
+
+ document = library.document("ala", "admin")
+ shared = document.shared()
+ print document, shared
+
+ document.share("Here is my copy!")
+
+ assert_equal( document.shelf(), local) # local didn't change
+
+
+ new_main = shared.shelf()
+ assert_not_equal( new_main, main) # main has new revision
+
+ # check for parents
+ assert_true( main.parentof(new_main) )
+ assert_true( local.parentof(new_main) )
+
+