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