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 package org.apache.hc.core5.http.config;
29
30 import org.hamcrest.CoreMatchers;
31 import org.hamcrest.MatcherAssert;
32 import org.junit.Test;
33
34
35
36
37 public class TestNamedElementChain {
38
39 @Test
40 public void testBasics() {
41 final NamedElementChain<Character> list = new NamedElementChain<>();
42 MatcherAssert.assertThat(list.getFirst(), CoreMatchers.nullValue());
43 MatcherAssert.assertThat(list.getLast(), CoreMatchers.nullValue());
44
45 final NamedElementChain<Character>.Node nodeA = list.addFirst('a', "a");
46
47 MatcherAssert.assertThat(list.getFirst(), CoreMatchers.sameInstance(nodeA));
48 MatcherAssert.assertThat(list.getLast(), CoreMatchers.sameInstance(nodeA));
49
50 final NamedElementChain<Character>.Node nodeB = list.addLast('b', "b");
51
52 MatcherAssert.assertThat(list.getFirst(), CoreMatchers.sameInstance(nodeA));
53 MatcherAssert.assertThat(list.getLast(), CoreMatchers.sameInstance(nodeB));
54
55 final NamedElementChain<Character>.Node nodeZ = list.addLast('z', "z");
56
57 MatcherAssert.assertThat(list.getFirst(), CoreMatchers.sameInstance(nodeA));
58 MatcherAssert.assertThat(list.getLast(), CoreMatchers.sameInstance(nodeZ));
59
60 MatcherAssert.assertThat(nodeA.getPrevious(), CoreMatchers.nullValue());
61 MatcherAssert.assertThat(nodeA.getNext(), CoreMatchers.sameInstance(nodeB));
62 MatcherAssert.assertThat(nodeB.getPrevious(), CoreMatchers.sameInstance(nodeA));
63 MatcherAssert.assertThat(nodeB.getNext(), CoreMatchers.sameInstance(nodeZ));
64 MatcherAssert.assertThat(nodeZ.getPrevious(), CoreMatchers.sameInstance(nodeB));
65 MatcherAssert.assertThat(nodeZ.getNext(), CoreMatchers.nullValue());
66
67 final NamedElementChain<Character>.Node nodeD = list.addAfter("b", 'd', "d");
68 MatcherAssert.assertThat(nodeD.getPrevious(), CoreMatchers.sameInstance(nodeB));
69 MatcherAssert.assertThat(nodeD.getNext(), CoreMatchers.sameInstance(nodeZ));
70 MatcherAssert.assertThat(nodeB.getNext(), CoreMatchers.sameInstance(nodeD));
71 MatcherAssert.assertThat(nodeZ.getPrevious(), CoreMatchers.sameInstance(nodeD));
72
73 final NamedElementChain<Character>.Node nodeC = list.addBefore("d", 'c', "c");
74 MatcherAssert.assertThat(nodeC.getPrevious(), CoreMatchers.sameInstance(nodeB));
75 MatcherAssert.assertThat(nodeC.getNext(), CoreMatchers.sameInstance(nodeD));
76 MatcherAssert.assertThat(nodeB.getNext(), CoreMatchers.sameInstance(nodeC));
77 MatcherAssert.assertThat(nodeD.getPrevious(), CoreMatchers.sameInstance(nodeC));
78 MatcherAssert.assertThat(list.getSize(), CoreMatchers.equalTo(5));
79
80 MatcherAssert.assertThat(list.remove("a"), CoreMatchers.is(true));
81 MatcherAssert.assertThat(list.remove("z"), CoreMatchers.is(true));
82 MatcherAssert.assertThat(list.remove("c"), CoreMatchers.is(true));
83 MatcherAssert.assertThat(list.remove("c"), CoreMatchers.is(false));
84 MatcherAssert.assertThat(list.remove("blah"), CoreMatchers.is(false));
85
86 MatcherAssert.assertThat(list.getFirst(), CoreMatchers.sameInstance(nodeB));
87 MatcherAssert.assertThat(list.getLast(), CoreMatchers.sameInstance(nodeD));
88
89 MatcherAssert.assertThat(list.getSize(), CoreMatchers.equalTo(2));
90 MatcherAssert.assertThat(list.addBefore("blah", 'e', "e"), CoreMatchers.nullValue());
91 MatcherAssert.assertThat(list.getSize(), CoreMatchers.equalTo(2));
92
93 MatcherAssert.assertThat(list.addAfter("yada", 'e', "e"), CoreMatchers.nullValue());
94 MatcherAssert.assertThat(list.getSize(), CoreMatchers.equalTo(2));
95 }
96
97 }