1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 package org.eclipse.jgit.internal.transport.parser;
44
45 import static org.junit.Assert.assertEquals;
46 import static org.junit.Assert.assertNull;
47 import static org.junit.Assert.assertTrue;
48 import static org.junit.Assert.fail;
49
50 import java.util.Arrays;
51 import java.util.HashSet;
52 import java.util.List;
53 import java.util.Set;
54
55 import org.eclipse.jgit.errors.PackProtocolException;
56 import org.junit.Test;
57
58 public class FirstWantTest {
59
60 @Test
61 public void testFirstWantWithOptions() throws PackProtocolException {
62 String line = "want b9d4d1eb2f93058814480eae9e1b67550f46ee38 "
63 + "no-progress include-tag ofs-delta agent=JGit/unknown";
64
65 FirstWant r = FirstWant.fromLine(line);
66 assertEquals("want b9d4d1eb2f93058814480eae9e1b67550f46ee38",
67 r.getLine());
68 Set<String> capabilities = r.getCapabilities();
69 Set<String> expectedCapabilities = new HashSet<>(
70 Arrays.asList("no-progress", "include-tag", "ofs-delta"));
71 assertEquals(expectedCapabilities, capabilities);
72 assertEquals("JGit/unknown", r.getAgent());
73 }
74
75 @Test
76 public void testFirstWantWithoutOptions() throws PackProtocolException {
77 String line = "want b9d4d1eb2f93058814480eae9e1b67550f46ee38";
78
79 FirstWant r = FirstWant.fromLine(line);
80 assertEquals("want b9d4d1eb2f93058814480eae9e1b67550f46ee38",
81 r.getLine());
82 assertTrue(r.getCapabilities().isEmpty());
83 assertNull(r.getAgent());
84 }
85
86 private String makeFirstWantLine(String capability) {
87 return String.format("want b9d4d1eb2f93058814480eae9e1b67550f46ee38 %s", capability);
88 }
89
90 @Test
91 public void testFirstWantNoWhitespace() {
92 try {
93 FirstWant.fromLine(
94 "want b9d4d1eb2f93058814480eae9e1b67550f400000capability");
95 fail("Accepting first want line without SP between oid and first capability");
96 } catch (PackProtocolException e) {
97
98 }
99 }
100
101 @Test
102 public void testFirstWantOnlyWhitespace() throws PackProtocolException {
103 FirstWant r = FirstWant
104 .fromLine("want b9d4d1eb2f93058814480eae9e1b67550f46ee38 ");
105 assertEquals("want b9d4d1eb2f93058814480eae9e1b67550f46ee38",
106 r.getLine());
107 }
108
109 @Test
110 public void testFirstWantValidCapabilityNames()
111 throws PackProtocolException {
112 List<String> validNames = Arrays.asList(
113 "c", "cap", "C", "CAP", "1", "1cap", "cap-64k_test",
114 "-", "-cap",
115 "_", "_cap");
116
117 for (String capability: validNames) {
118 FirstWant r = FirstWant.fromLine(makeFirstWantLine(capability));
119 assertEquals(r.getCapabilities().size(), 1);
120 assertTrue(r.getCapabilities().contains(capability));
121 }
122 }
123
124 @Test
125 public void testFirstWantValidAgentName() throws PackProtocolException {
126 FirstWant r = FirstWant.fromLine(makeFirstWantLine("agent=pack.age/Version"));
127 assertEquals(r.getCapabilities().size(), 0);
128 assertEquals("pack.age/Version", r.getAgent());
129 }
130 }