ChaizOFF3123123

Untitled

Aug 28th, 2022 (edited)
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 12.06 KB | None | 0 0
  1. package com.epam.rd.autotasks;
  2.  
  3. import org.junit.jupiter.params.ParameterizedTest;
  4. import org.junit.jupiter.params.provider.Arguments;
  5. import org.junit.jupiter.params.provider.MethodSource;
  6.  
  7. import java.io.IOException;
  8. import java.nio.file.Files;
  9. import java.nio.file.Path;
  10. import java.nio.file.StandardOpenOption;
  11. import java.util.ArrayList;
  12. import java.util.List;
  13. import java.util.Random;
  14. import java.util.regex.Pattern;
  15. import java.util.stream.Collectors;
  16. import java.util.stream.IntStream;
  17. import java.util.stream.Stream;
  18.  
  19. import static org.junit.jupiter.api.Assertions.assertEquals;
  20. import static org.junit.jupiter.params.provider.Arguments.arguments;
  21.  
  22. class GraduallyDecreasingCarouselRunRandomTest {
  23.  
  24.     private static String variant = "gradual";
  25.  
  26.  
  27.     @ParameterizedTest(name = "[1] {0} {1}")
  28.     @MethodSource({"fullCases", "halfEmptyCases", "overflowCases"})
  29.     void testCarouselRunWhileNotFinished(String collection, int seed) {
  30.         Random random = new Random(seed);
  31.  
  32.         GraduallyDecreasingCarousel carousel = generateCarousel(random, collection);
  33.         CarouselRun run = carousel.run();
  34.  
  35.         List<Integer> runResult = new ArrayList<>();
  36.  
  37.         while (!run.isFinished()) {
  38.             runResult.add(run.next());
  39.         }
  40.  
  41.         List<Boolean> isFinishedResult = new ArrayList<>();
  42.         for (int i = 0; i < runResult.size(); i++) {
  43.             isFinishedResult.add(false);
  44.         }
  45.         isFinishedResult.add(true);
  46.  
  47.         assertEquals(getExpectedRunResult(collection, seed), runResult);
  48.         assertEquals(getExpectedIsFinishedResult(collection, seed), isFinishedResult);
  49.     }
  50.  
  51.     @ParameterizedTest(name = "[{index}] {1}")
  52.     @MethodSource({"fullCases", "halfEmptyCases", "overflowCases"})
  53.     void testCarouselRunWhileNotNegative(String collection, int seed) {
  54.         Random random = new Random(seed);
  55.  
  56.         GraduallyDecreasingCarousel carousel = generateCarousel(random, collection);
  57.         CarouselRun run = carousel.run();
  58.  
  59.         List<Integer> runResult = new ArrayList<>();
  60.         List<Boolean> isFinishedResult = new ArrayList<>();
  61.  
  62.         isFinishedResult.add(run.isFinished());
  63.         int nextVal;
  64.         while ((nextVal = run.next()) != -1) {
  65.             runResult.add(nextVal);
  66.             isFinishedResult.add(run.isFinished());
  67.         }
  68.  
  69.         assertEquals(getExpectedRunResult(collection, seed), runResult);
  70.         assertEquals(getExpectedIsFinishedResult(collection, seed), isFinishedResult);
  71.     }
  72.  
  73.     public static Stream<Arguments> fullCases() {
  74.         return IntStream.of(
  75.                         1,
  76.                         56,
  77.                         133976,
  78.                         8513884,
  79.                         322368,
  80.                         6854)
  81.                 .mapToObj(i -> arguments("full", i));
  82.     }
  83.  
  84.     public static Stream<Arguments> halfEmptyCases() {
  85.         return IntStream.of(
  86.                         1,
  87.                         56,
  88.                         133976,
  89.                         3678,
  90.                         264807,
  91.                         1238732)
  92.                 .mapToObj(i -> arguments("half", i));
  93.     }
  94.  
  95.     public static Stream<Arguments> overflowCases() {
  96.         return IntStream.of(
  97.                         1,
  98.                         56,
  99.                         133976,
  100.                         8526458,
  101.                         9656836,
  102.                         98512357)
  103.                 .mapToObj(i -> arguments("over", i));
  104.     }
  105.  
  106.     private static GraduallyDecreasingCarousel generateCarousel(final Random random, final String collection) {
  107.         int elements = 10 + random.nextInt(10);
  108.         GraduallyDecreasingCarousel carousel = new GraduallyDecreasingCarousel(elements);
  109.  
  110.         if (collection.equals("half")) {
  111.             elements -= (random.nextInt(7) + 1);
  112.         } else if (collection.equals("over")) {
  113.             elements += (random.nextInt(7) + 1);
  114.         }
  115.         for (int i = 0; i < elements; i++) {
  116.             carousel.addElement(1 + random.nextInt(10));
  117.         }
  118.         return carousel;
  119.     }
  120.  
  121.     private List<Boolean> getExpectedIsFinishedResult(final String collection, final int seed) {
  122.         int size = getExpectedRunResult(collection, seed).size();
  123.         List<Boolean> result = new ArrayList<>();
  124.         for (int i = 0; i < size; i++) {
  125.             result.add(false);
  126.         }
  127.         result.add(true);
  128.         return result;
  129.     }
  130.  
  131.     private List<Integer> getExpectedRunResult(final String collection, final int seed) {
  132.         return readExpectedList(collection, seed);
  133.     }
  134.  
  135.     private static List<Integer> readExpectedList(String collection, int seed) {
  136.         try {
  137.             return Pattern.compile("\\D+").splitAsStream(
  138.                             Files.readString(
  139.                                     Path.of("src", "test", "resources", variant, collection, seed + ".txt")))
  140.                     .filter(token -> !token.isBlank())
  141.                     .map(Integer::parseInt)
  142.                     .collect(Collectors.toList());
  143.         } catch (IOException e) {
  144.             e.printStackTrace();
  145.             return List.of();
  146.         }
  147.     }
  148.  
  149.     private void writeFile(String collection, int seed, String actual) {
  150.         try {
  151.             Files.writeString(
  152.                     Path.of("src", "test", "resources", variant, collection, seed + ".txt"),
  153.                     actual + "\n", StandardOpenOption.WRITE, StandardOpenOption.CREATE);
  154.         } catch (IOException e) {
  155.             throw new RuntimeException(e);
  156.         }
  157.     }
  158. }
  159. package com.epam.rd.autotasks;
  160.  
  161. import org.junit.jupiter.api.Test;
  162.  
  163. import static org.junit.jupiter.api.Assertions.assertEquals;
  164. import static org.junit.jupiter.api.Assertions.assertTrue;
  165.  
  166. class GraduallyDecreasingCarouselRunTest {
  167.  
  168.     @Test
  169.     void testEmptyCase() {
  170.         CarouselRun run = new GraduallyDecreasingCarousel(7).run();
  171.  
  172.         assertTrue(run.isFinished());
  173.         assertEquals(-1, run.next());
  174.         assertEquals(-1, run.next());
  175.  
  176.         assertTrue(run.isFinished());
  177.         assertEquals(-1, run.next());
  178.         assertEquals(-1, run.next());
  179.     }
  180.  
  181.     @Test
  182.     void testHalfEmptyCase1() {
  183.         GraduallyDecreasingCarousel carousel = new GraduallyDecreasingCarousel(7);
  184.  
  185.         carousel.addElement(3);
  186.         carousel.addElement(7);
  187.         carousel.addElement(4);
  188.         CarouselRun run = carousel.run();
  189.  
  190.         assertEquals(3, run.next());
  191.         assertEquals(7, run.next());
  192.         assertEquals(4, run.next());
  193.  
  194.         assertEquals(2, run.next());
  195.         assertEquals(6, run.next());
  196.         assertEquals(3, run.next());
  197.  
  198.         assertEquals(4, run.next());
  199.         assertEquals(1, run.next());
  200.  
  201.         assertEquals(1, run.next());
  202.  
  203.         assertEquals(-1, run.next());
  204.         assertTrue(run.isFinished());
  205.     }
  206.  
  207.     @Test
  208.     void testHalfEmptyCase2() {
  209.         GraduallyDecreasingCarousel carousel = new GraduallyDecreasingCarousel(7);
  210.  
  211.         carousel.addElement(7);
  212.         carousel.addElement(3);
  213.         carousel.addElement(4);
  214.         CarouselRun run = carousel.run();
  215.  
  216.         assertEquals(7, run.next());
  217.         assertEquals(3, run.next());
  218.         assertEquals(4, run.next());
  219.  
  220.         assertEquals(6, run.next());
  221.         assertEquals(2, run.next());
  222.         assertEquals(3, run.next());
  223.  
  224.         assertEquals(4, run.next());
  225.         assertEquals(1, run.next());
  226.  
  227.         assertEquals(1, run.next());
  228.  
  229.         assertEquals(-1, run.next());
  230.         assertTrue(run.isFinished());
  231.     }
  232.  
  233.     @Test
  234.     void testFullCase1() {
  235.         GraduallyDecreasingCarousel carousel = new GraduallyDecreasingCarousel(5);
  236.  
  237.         carousel.addElement(7);
  238.         carousel.addElement(2);
  239.         carousel.addElement(3);
  240.         carousel.addElement(1);
  241.         carousel.addElement(4);
  242.         CarouselRun run = carousel.run();
  243.  
  244.         assertEquals(7, run.next());
  245.         assertEquals(2, run.next());
  246.         assertEquals(3, run.next());
  247.         assertEquals(1, run.next());
  248.         assertEquals(4, run.next());
  249.  
  250.         assertEquals(6, run.next());
  251.         assertEquals(1, run.next());
  252.         assertEquals(2, run.next());
  253.         assertEquals(3, run.next());
  254.  
  255.         assertEquals(4, run.next());
  256.         assertEquals(1, run.next());
  257.  
  258.         assertEquals(1, run.next());
  259.  
  260.         assertEquals(-1, run.next());
  261.         assertTrue(run.isFinished());
  262.     }
  263.  
  264.     @Test
  265.     void testFullCase2() {
  266.         GraduallyDecreasingCarousel carousel = new GraduallyDecreasingCarousel(6);
  267.  
  268.         carousel.addElement(7);
  269.         carousel.addElement(2);
  270.         carousel.addElement(100);
  271.         carousel.addElement(3);
  272.         carousel.addElement(1);
  273.         carousel.addElement(4);
  274.         CarouselRun run = carousel.run();
  275.  
  276.         assertEquals(7, run.next());
  277.         assertEquals(2, run.next());
  278.         assertEquals(100, run.next());
  279.         assertEquals(3, run.next());
  280.         assertEquals(1, run.next());
  281.         assertEquals(4, run.next());
  282.  
  283.         assertEquals(6, run.next());
  284.         assertEquals(1, run.next());
  285.         assertEquals(99, run.next());
  286.         assertEquals(2, run.next());
  287.         assertEquals(3, run.next());
  288.  
  289.         assertEquals(4, run.next());
  290.         assertEquals(97, run.next());
  291.         assertEquals(1, run.next());
  292.  
  293.         assertEquals(1, run.next());
  294.         assertEquals(94, run.next());
  295.  
  296.         assertEquals(90, run.next());
  297.         assertEquals(85, run.next());
  298.         assertEquals(79, run.next());
  299.         assertEquals(72, run.next());
  300.         assertEquals(64, run.next());
  301.         assertEquals(55, run.next());
  302.         assertEquals(45, run.next());
  303.         assertEquals(34, run.next());
  304.         assertEquals(22, run.next());
  305.         assertEquals(9, run.next());
  306.  
  307.         assertEquals(-1, run.next());
  308.         assertTrue(run.isFinished());
  309.     }
  310. }package com.epam.rd.autotasks;
  311.  
  312. import org.junit.jupiter.api.Test;
  313.  
  314. import static org.junit.jupiter.api.Assertions.assertFalse;
  315. import static org.junit.jupiter.api.Assertions.assertNotNull;
  316. import static org.junit.jupiter.api.Assertions.assertNull;
  317. import static org.junit.jupiter.api.Assertions.assertTrue;
  318.  
  319. class GraduallyDecreasingCarouselTest {
  320.  
  321.     @Test
  322.     void checkAddElement() {
  323.         GraduallyDecreasingCarousel carousel = new GraduallyDecreasingCarousel(5);
  324.         assertFalse(carousel.addElement(0));
  325.         assertFalse(carousel.addElement(-1));
  326.         assertFalse(carousel.addElement(-123456));
  327.         assertFalse(carousel.addElement(0));
  328.  
  329.         assertTrue(carousel.addElement(1));
  330.         assertTrue(carousel.addElement(2));
  331.  
  332.         assertFalse(carousel.addElement(0));
  333.         assertFalse(carousel.addElement(-123));
  334.  
  335.         assertTrue(carousel.addElement(1234));
  336.         assertTrue(carousel.addElement(1234));
  337.  
  338.         assertFalse(carousel.addElement(0));
  339.         assertFalse(carousel.addElement(-456));
  340.  
  341.         assertTrue(carousel.addElement(22));
  342.  
  343.         assertFalse(carousel.addElement(22));
  344.  
  345.         assertFalse(carousel.addElement(-856));
  346.         assertFalse(carousel.addElement(0));
  347.  
  348.         assertFalse(carousel.addElement(357));
  349.         assertFalse(carousel.addElement(159));
  350.         assertFalse(carousel.addElement(1));
  351.     }
  352.  
  353.     @Test
  354.     void checkAddElementAfterRun() {
  355.         GraduallyDecreasingCarousel carousel = new GraduallyDecreasingCarousel(5);
  356.  
  357.         assertTrue(carousel.addElement(1));
  358.         assertTrue(carousel.addElement(2));
  359.         assertTrue(carousel.addElement(3));
  360.  
  361.         carousel.run();
  362.  
  363.         assertFalse(carousel.addElement(4));
  364.         assertFalse(carousel.addElement(5));
  365.         assertFalse(carousel.addElement(6));
  366.  
  367.         assertFalse(carousel.addElement(0));
  368.         assertFalse(carousel.addElement(-123));
  369.         assertFalse(carousel.addElement(-4568));
  370.     }
  371.  
  372.     @Test
  373.     void testCarouselRunsSingleTimeOnly() {
  374.         GraduallyDecreasingCarousel carousel = new GraduallyDecreasingCarousel(4);
  375.         carousel.addElement(4);
  376.  
  377.         assertNotNull(carousel.run());
  378.         assertNull(carousel.run());
  379.         assertNull(carousel.run());
  380.     }
  381.  
  382.  
  383. }
Advertisement
Add Comment
Please, Sign In to add comment