1
2
3
4
5
6
7
8
9
10
11 package org.eclipse.jgit.util;
12
13 import static org.eclipse.jgit.util.Paths.compare;
14 import static org.eclipse.jgit.util.Paths.compareSameName;
15 import static org.junit.Assert.assertEquals;
16 import static org.junit.Assert.assertFalse;
17 import static org.junit.Assert.assertNull;
18 import static org.junit.Assert.assertTrue;
19
20 import org.eclipse.jgit.lib.Constants;
21 import org.eclipse.jgit.lib.FileMode;
22 import org.junit.Test;
23
24 public class PathsTest {
25 @Test
26 public void testStripTrailingSeparator() {
27 assertNull(Paths.stripTrailingSeparator(null));
28 assertEquals("", Paths.stripTrailingSeparator(""));
29 assertEquals("a", Paths.stripTrailingSeparator("a"));
30 assertEquals("a/boo", Paths.stripTrailingSeparator("a/boo"));
31 assertEquals("a/boo", Paths.stripTrailingSeparator("a/boo/"));
32 assertEquals("a/boo", Paths.stripTrailingSeparator("a/boo//"));
33 assertEquals("a/boo", Paths.stripTrailingSeparator("a/boo///"));
34 }
35
36 @Test
37 public void testPrefix() {
38 assertTrue(Paths.isEqualOrPrefix("a", "a"));
39 assertTrue(Paths.isEqualOrPrefix("a", "a/b"));
40 assertTrue(Paths.isEqualOrPrefix("a", "a/a.txt"));
41 assertFalse(Paths.isEqualOrPrefix("a", "ab"));
42 assertFalse(Paths.isEqualOrPrefix("a", "a.txt"));
43 assertFalse(Paths.isEqualOrPrefix("a", "b/a.txt"));
44 assertFalse(Paths.isEqualOrPrefix("a", "b/a"));
45 assertFalse(Paths.isEqualOrPrefix("a", "ab/a.txt"));
46 assertFalse(Paths.isEqualOrPrefix("", "a"));
47 assertTrue(Paths.isEqualOrPrefix("", ""));
48 assertTrue(Paths.isEqualOrPrefix("a/b", "a/b"));
49 assertTrue(Paths.isEqualOrPrefix("a/b", "a/b/c"));
50 assertFalse(Paths.isEqualOrPrefix("a/b", "a/bc"));
51 }
52
53 @Test
54 public void testPathCompare() {
55 byte[] a = Constants.encode("afoo/bar.c");
56 byte[] b = Constants.encode("bfoo/bar.c");
57
58 assertEquals(0, compare(a, 1, a.length, 0, b, 1, b.length, 0));
59 assertEquals(-1, compare(a, 0, a.length, 0, b, 0, b.length, 0));
60 assertEquals(1, compare(b, 0, b.length, 0, a, 0, a.length, 0));
61
62 a = Constants.encode("a");
63 b = Constants.encode("aa");
64 assertEquals(-97, compare(a, 0, a.length, 0, b, 0, b.length, 0));
65 assertEquals(0, compare(a, 0, a.length, 0, b, 0, 1, 0));
66 assertEquals(0, compare(a, 0, a.length, 0, b, 1, 2, 0));
67 assertEquals(0, compareSameName(a, 0, a.length, b, 1, b.length, 0));
68 assertEquals(0, compareSameName(a, 0, a.length, b, 0, 1, 0));
69 assertEquals(-50, compareSameName(a, 0, a.length, b, 0, b.length, 0));
70 assertEquals(97, compareSameName(b, 0, b.length, a, 0, a.length, 0));
71
72 a = Constants.encode("a");
73 b = Constants.encode("a");
74 assertEquals(0, compare(
75 a, 0, a.length, FileMode.TREE.getBits(),
76 b, 0, b.length, FileMode.TREE.getBits()));
77 assertEquals(0, compare(
78 a, 0, a.length, FileMode.REGULAR_FILE.getBits(),
79 b, 0, b.length, FileMode.REGULAR_FILE.getBits()));
80 assertEquals(-47, compare(
81 a, 0, a.length, FileMode.REGULAR_FILE.getBits(),
82 b, 0, b.length, FileMode.TREE.getBits()));
83 assertEquals(47, compare(
84 a, 0, a.length, FileMode.TREE.getBits(),
85 b, 0, b.length, FileMode.REGULAR_FILE.getBits()));
86
87 assertEquals(0, compareSameName(
88 a, 0, a.length,
89 b, 0, b.length, FileMode.TREE.getBits()));
90 assertEquals(0, compareSameName(
91 a, 0, a.length,
92 b, 0, b.length, FileMode.REGULAR_FILE.getBits()));
93
94 a = Constants.encode("a.c");
95 b = Constants.encode("a");
96 byte[] c = Constants.encode("a0c");
97 assertEquals(-1, compare(
98 a, 0, a.length, FileMode.REGULAR_FILE.getBits(),
99 b, 0, b.length, FileMode.TREE.getBits()));
100 assertEquals(-1, compare(
101 b, 0, b.length, FileMode.TREE.getBits(),
102 c, 0, c.length, FileMode.REGULAR_FILE.getBits()));
103 }
104 }