View Javadoc
1   /*
2    * SPDX-FileCopyrightText: Copyright (c) 2012-2026 Yegor Bugayenko
3    * SPDX-License-Identifier: MIT
4    */
5   package com.jcabi.dynamo.retry;
6   
7   import java.util.ArrayList;
8   import java.util.Arrays;
9   import java.util.Iterator;
10  import java.util.List;
11  import org.hamcrest.MatcherAssert;
12  import org.hamcrest.Matchers;
13  import org.junit.jupiter.api.Test;
14  
15  /**
16   * Test case for {@link ReIterator}.
17   * @since 0.9
18   */
19  final class ReIteratorTest {
20  
21      @Test
22      void delegatesHasNextToOrigin() {
23          MatcherAssert.assertThat(
24              "does not delegate hasNext to origin iterator",
25              new ReIterator<>(
26                  Arrays.asList("f\u00f6o", "b\u00e4r").iterator()
27              ).hasNext(),
28              Matchers.is(true)
29          );
30      }
31  
32      @Test
33      void delegatesNextToOrigin() {
34          MatcherAssert.assertThat(
35              "does not delegate next to origin iterator",
36              new ReIterator<>(
37                  Arrays.asList("f\u00f6o", "b\u00e4r").iterator()
38              ).next(),
39              Matchers.equalTo("f\u00f6o")
40          );
41      }
42  
43      @Test
44      void delegatesRemoveToOrigin() {
45          final List<String> items = new ArrayList<>(
46              Arrays.asList("\u00fcbung")
47          );
48          final Iterator<String> iter = items.iterator();
49          iter.next();
50          new ReIterator<>(iter).remove();
51          MatcherAssert.assertThat(
52              "does not delegate remove to origin iterator",
53              items,
54              Matchers.empty()
55          );
56      }
57  
58      @Test
59      void returnsFalseWhenOriginIsExhausted() {
60          final List<String> items = Arrays.asList("\u00f6nly");
61          final Iterator<String> iter = items.iterator();
62          iter.next();
63          MatcherAssert.assertThat(
64              "does not return false when origin is exhausted",
65              new ReIterator<>(iter).hasNext(),
66              Matchers.is(false)
67          );
68      }
69  }