99
99
class MergeInfoPropertyParserTests(TestCase):
100
100
def test_simple_range(self):
101
self.assertEquals({"/trunk": [(1,2,True)]}, properties.parse_mergeinfo_property("/trunk:1-2\n"))
101
self.assertEquals({"/trunk": [(1, 2, True)]}, properties.parse_mergeinfo_property("/trunk:1-2\n"))
103
103
def test_simple_range_uninheritable(self):
104
self.assertEquals({"/trunk": [(1,2,False)]}, properties.parse_mergeinfo_property("/trunk:1-2*\n"))
104
self.assertEquals({"/trunk": [(1, 2, False)]}, properties.parse_mergeinfo_property("/trunk:1-2*\n"))
106
106
def test_simple_individual(self):
107
self.assertEquals({"/trunk": [(1,1,True)]}, properties.parse_mergeinfo_property("/trunk:1\n"))
107
self.assertEquals({"/trunk": [(1, 1, True)]}, properties.parse_mergeinfo_property("/trunk:1\n"))
109
109
def test_empty(self):
110
110
self.assertEquals({}, properties.parse_mergeinfo_property(""))
124
124
class RevnumRangeTests(TestCase):
125
125
def test_add_revnum_empty(self):
126
self.assertEquals([(1,1,True)], properties.range_add_revnum([], 1))
126
self.assertEquals([(1, 1, True)], properties.range_add_revnum([], 1))
128
128
def test_add_revnum_before(self):
129
self.assertEquals([(2,2,True), (8,8,True)], properties.range_add_revnum([(2,2,True)], 8))
129
self.assertEquals([(2, 2, True), (8, 8, True)], properties.range_add_revnum([(2, 2, True)], 8))
131
131
def test_add_revnum_included(self):
132
self.assertEquals([(1,3,True)], properties.range_add_revnum([(1,3,True)], 2))
132
self.assertEquals([(1, 3, True)], properties.range_add_revnum([(1, 3, True)], 2))
134
134
def test_add_revnum_after(self):
135
self.assertEquals([(1,3,True),(5,5,True)], properties.range_add_revnum([(1,3,True)], 5))
135
self.assertEquals([(1, 3, True), (5, 5, True)], properties.range_add_revnum([(1, 3, True)], 5))
137
137
def test_add_revnum_extend_before(self):
138
self.assertEquals([(1,3,True)], properties.range_add_revnum([(2,3,True)], 1))
138
self.assertEquals([(1, 3, True)], properties.range_add_revnum([(2, 3, True)], 1))
140
140
def test_add_revnum_extend_after(self):
141
self.assertEquals([(1,3,True)], properties.range_add_revnum([(1,2,True)], 3))
141
self.assertEquals([(1, 3, True)], properties.range_add_revnum([(1, 2, True)], 3))
143
143
def test_revnum_includes_empty(self):
144
144
self.assertFalse(properties.range_includes_revnum([], 2))
146
146
def test_revnum_includes_oor(self):
147
self.assertFalse(properties.range_includes_revnum([(1,3,True), (4,5, True)], 10))
147
self.assertFalse(properties.range_includes_revnum([(1, 3, True), (4, 5, True)], 10))
149
149
def test_revnum_includes_in(self):
150
self.assertTrue(properties.range_includes_revnum([(1,3,True), (4,5, True)], 2))
150
self.assertTrue(properties.range_includes_revnum([(1, 3, True), (4, 5, True)], 2))
153
153
class MergeInfoIncludeTests(TestCase):
154
154
def test_includes_individual(self):
155
self.assertTrue(properties.mergeinfo_includes_revision({"/trunk": [(1,1,True)]}, "/trunk", 1))
155
self.assertTrue(properties.mergeinfo_includes_revision({"/trunk": [(1, 1, True)]}, "/trunk", 1))
157
157
def test_includes_range(self):
158
self.assertTrue(properties.mergeinfo_includes_revision({"/trunk": [(1,5,True)]}, "/trunk", 3))
158
self.assertTrue(properties.mergeinfo_includes_revision({"/trunk": [(1, 5, True)]}, "/trunk", 3))
160
160
def test_includes_invalid_path(self):
161
self.assertFalse(properties.mergeinfo_includes_revision({"/somepath": [(1,5,True)]}, "/trunk", 3))
161
self.assertFalse(properties.mergeinfo_includes_revision({"/somepath": [(1, 5, True)]}, "/trunk", 3))
163
163
def test_includes_invalid_revnum(self):
164
self.assertFalse(properties.mergeinfo_includes_revision({"/trunk": [(1,5,True)]}, "/trunk", 30))
164
self.assertFalse(properties.mergeinfo_includes_revision({"/trunk": [(1, 5, True)]}, "/trunk", 30))