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 com.jcabi.dynamo.Dosage;
8   import java.util.Collections;
9   import java.util.List;
10  import java.util.Map;
11  import org.hamcrest.MatcherAssert;
12  import org.hamcrest.Matchers;
13  import org.junit.jupiter.api.Test;
14  import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
15  
16  /**
17   * Test case for {@link ReDosage}.
18   * @since 0.9
19   */
20  final class ReDosageTest {
21  
22      @Test
23      void delegatesItemsToOrigin() {
24          MatcherAssert.assertThat(
25              "does not delegate items to origin dosage",
26              new ReDosage(new Dosage.Empty()).items(),
27              Matchers.empty()
28          );
29      }
30  
31      @Test
32      void delegatesHasNextToOrigin() {
33          MatcherAssert.assertThat(
34              "does not delegate hasNext to origin dosage",
35              new ReDosage(new Dosage.Empty()).hasNext(),
36              Matchers.is(false)
37          );
38      }
39  
40      @Test
41      void wrapsNextResultInReDosage() {
42          MatcherAssert.assertThat(
43              "does not wrap next result in ReDosage",
44              new ReDosage(
45                  new Dosage() {
46                      @Override
47                      public List<Map<String, AttributeValue>> items() {
48                          return Collections.emptyList();
49                      }
50  
51                      @Override
52                      public boolean hasNext() {
53                          return true;
54                      }
55  
56                      @Override
57                      public Dosage next() {
58                          return new Dosage.Empty();
59                      }
60                  }
61              ).next(),
62              Matchers.instanceOf(ReDosage.class)
63          );
64      }
65  }