Advertisement
NeverRIEght

CashBoxTest.java

May 4th, 2024 (edited)
955
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.50 KB | None | 0 0
  1. package com.epam.rd.autocode.queue;
  2.  
  3. import java.util.Deque;
  4.  
  5. import org.junit.jupiter.api.Assertions;
  6. import org.junit.jupiter.api.Test;
  7.  
  8. import static org.junit.jupiter.api.Assertions.*;
  9.  
  10. /**
  11.  * @author D. Kolesnikov
  12.  */
  13. public class CashBoxTest {
  14.  
  15.     private static boolean isAllTestsMustFailed;
  16.  
  17.     private static Throwable complianceTestFailedCause;
  18.  
  19.     static {
  20.         try {
  21.             String testClassName = new Exception().getStackTrace()[0].getClassName();
  22.             String className = testClassName.substring(0, testClassName.lastIndexOf("Test"));
  23.             Class<?> c = Class.forName(className);
  24.  
  25.             java.lang.reflect.Method[] methods = {
  26.                     c.getDeclaredMethod("getQueue"),
  27.                     c.getDeclaredMethod("serveBuyer"),
  28.                     c.getDeclaredMethod("inState", CashBox.State.class),
  29.                     c.getDeclaredMethod("notInState", CashBox.State.class),
  30.                     c.getDeclaredMethod("addLast", Buyer.class),
  31.                     c.getDeclaredMethod("removeLast"),
  32.                     c.getDeclaredMethod("toString"),
  33.                     c.getDeclaredMethod("setState", CashBox.State.class),
  34.                     c.getDeclaredMethod("getState")
  35.                 };
  36.  
  37.                
  38.             org.apache.bcel.classfile.JavaClass jc = org.apache.bcel.Repository.lookupClass(c);
  39.             for (java.lang.reflect.Method method : methods) {
  40.                 org.apache.bcel.classfile.Method m = jc.getMethod(method);
  41.                 org.apache.bcel.classfile.Code code = m.getCode();
  42.                 Assertions.assertTrue(code.getCode().length > 2, () -> m + " is not a stub");
  43.             }
  44.         } catch (Throwable t) {
  45.             isAllTestsMustFailed = true;
  46.             complianceTestFailedCause = t;
  47.             t.printStackTrace();
  48.         }
  49.     }
  50.  
  51.     {
  52.         if (isAllTestsMustFailed) {
  53.             Assertions.fail(() -> "Compliance test failed: " + complianceTestFailedCause.getMessage());
  54.         }
  55.     }
  56.    
  57.     @Test
  58.     void test() {
  59.         CashBox cb = new CashBox(0);
  60.         cb.addLast(Buyer.nextBuyer());
  61.         Deque<Buyer> q1 = cb.getQueue();
  62.         Deque<Buyer> q2 = cb.getQueue();
  63.        
  64.         Assertions.assertIterableEquals(q1, q2);
  65.         Assertions.assertNotSame(q1, q2);
  66.    
  67.            
  68.     }
  69.  
  70.     @Test
  71.     void neverCashBoxStatesTest() {
  72.         CashBox cashBox = new CashBox(1);
  73.         assertTrue(cashBox.inState(CashBox.State.DISABLED));
  74.  
  75.         cashBox.setState(CashBox.State.ENABLED);
  76.         assertFalse(cashBox.inState(CashBox.State.DISABLED));
  77.         assertTrue(cashBox.notInState(CashBox.State.DISABLED));
  78.         assertEquals(CashBox.State.ENABLED, cashBox.getState());
  79.  
  80.         cashBox.setState(CashBox.State.IS_CLOSING);
  81.         assertFalse(cashBox.inState(CashBox.State.ENABLED));
  82.         assertTrue(cashBox.notInState(CashBox.State.DISABLED));
  83.         assertEquals(CashBox.State.IS_CLOSING, cashBox.getState());
  84.  
  85.         cashBox.setState(CashBox.State.ENABLED);
  86.         assertFalse(cashBox.inState(CashBox.State.DISABLED));
  87.         assertTrue(cashBox.notInState(CashBox.State.IS_CLOSING));
  88.         assertEquals(CashBox.State.ENABLED, cashBox.getState());
  89.     }
  90.  
  91.     @Test
  92.     void neverCashBoxAddRemoveTest() {
  93.         CashBox cashBox = new CashBox(1);
  94.  
  95.         Buyer.resetNames();
  96.         cashBox.addLast(Buyer.nextBuyer()); //A
  97.         assertEquals("#1[-]", cashBox.toString());
  98.  
  99.         cashBox.setState(CashBox.State.IS_CLOSING);
  100.         cashBox.addLast(Buyer.nextBuyer()); //B
  101.         assertEquals("#1[|]", cashBox.toString());
  102.  
  103.         cashBox.setState(CashBox.State.ENABLED);
  104.         cashBox.addLast(Buyer.nextBuyer()); //C
  105.         assertEquals("#1[+]C", cashBox.toString());
  106.  
  107.         cashBox.setState(CashBox.State.IS_CLOSING);
  108.         cashBox.addLast(Buyer.nextBuyer()); //D
  109.         assertEquals("#1[|]C", cashBox.toString());
  110.  
  111.         cashBox.setState(CashBox.State.ENABLED);
  112.         cashBox.addLast(Buyer.nextBuyer()); //E
  113.         cashBox.addLast(Buyer.nextBuyer()); //F
  114.         assertEquals("#1[+]CEF", cashBox.toString());
  115.  
  116.         cashBox.removeLast();
  117.         assertEquals("#1[+]CE", cashBox.toString());
  118.  
  119.         cashBox.setState(CashBox.State.DISABLED);
  120.         cashBox.removeLast();
  121.         assertEquals("#1[-]CE", cashBox.toString());
  122.  
  123.         cashBox.setState(CashBox.State.IS_CLOSING);
  124.         cashBox.removeLast();
  125.         assertEquals("#1[|]C", cashBox.toString());
  126.  
  127.         cashBox.removeLast();
  128.         assertEquals("#1[-]", cashBox.toString());
  129.     }
  130.  
  131.     @Test
  132.     void neverCashBoxAutoClosureTest() {
  133.         CashBox cashBox = new CashBox(1);
  134.  
  135.         Buyer.resetNames();
  136.         cashBox.addLast(Buyer.nextBuyer()); //A
  137.         cashBox.addLast(Buyer.nextBuyer()); //B
  138.         assertEquals("#1[-]", cashBox.toString());
  139.  
  140.         cashBox.setState(CashBox.State.IS_CLOSING);
  141.         cashBox.addLast(Buyer.nextBuyer()); //C
  142.         assertEquals("#1[|]", cashBox.toString());
  143.  
  144.         cashBox.setState(CashBox.State.ENABLED);
  145.         cashBox.addLast(Buyer.nextBuyer()); //D
  146.         cashBox.addLast(Buyer.nextBuyer()); //E
  147.         assertEquals("#1[+]DE", cashBox.toString());
  148.  
  149.         cashBox.serveBuyer();
  150.         cashBox.serveBuyer();
  151.         assertEquals("#1[+]", cashBox.toString());
  152.  
  153.         cashBox.addLast(Buyer.nextBuyer()); //F
  154.         cashBox.addLast(Buyer.nextBuyer()); //G
  155.         assertEquals("#1[+]FG", cashBox.toString());
  156.  
  157.         cashBox.setState(CashBox.State.IS_CLOSING);
  158.         cashBox.serveBuyer();
  159.         assertEquals("#1[|]G", cashBox.toString());
  160.  
  161.         cashBox.serveBuyer();
  162.         assertEquals("#1[-]", cashBox.toString());
  163.     }
  164.  
  165.     @Test
  166.     void neverCashBoxTest() {
  167.         CashBox cashBox = new CashBox(1);
  168.         assertEquals("#1[-]", cashBox.toString());
  169.  
  170.         cashBox = new CashBox(254);
  171.         assertEquals("#254[-]", cashBox.toString());
  172.  
  173.         cashBox.addLast(Buyer.nextBuyer());
  174.         assertEquals("#254[-]", cashBox.toString());
  175.  
  176.         cashBox.setState(CashBox.State.ENABLED);
  177.         Buyer.resetNames();
  178.         cashBox.addLast(Buyer.nextBuyer()); //A
  179.         assertEquals("#254[+]A", cashBox.toString());
  180.  
  181.         cashBox.addLast(Buyer.nextBuyer()); //B
  182.         cashBox.addLast(Buyer.nextBuyer()); //C
  183.         assertEquals("#254[+]ABC", cashBox.toString());
  184.  
  185.         cashBox.setState(CashBox.State.IS_CLOSING);
  186.         cashBox.addLast(Buyer.nextBuyer()); //D
  187.         cashBox.addLast(Buyer.nextBuyer()); //E
  188.         assertEquals("#254[|]ABC", cashBox.toString());
  189.  
  190.         cashBox.setState(CashBox.State.DISABLED);
  191.         cashBox.addLast(Buyer.nextBuyer()); //F
  192.         cashBox.addLast(Buyer.nextBuyer()); //G
  193.         assertEquals("#254[-]ABC", cashBox.toString());
  194.  
  195.         cashBox.setState(CashBox.State.DISABLED);
  196.         cashBox.addLast(Buyer.nextBuyer()); //H
  197.         assertEquals("#254[-]ABC", cashBox.toString());
  198.  
  199.         cashBox.setState(CashBox.State.ENABLED);
  200.         cashBox.addLast(Buyer.nextBuyer()); //I
  201.         assertEquals("#254[+]ABCI", cashBox.toString());
  202.  
  203.         cashBox.serveBuyer();
  204.         assertEquals("#254[+]BCI", cashBox.toString());
  205.  
  206.         Buyer.resetNames();
  207.         cashBox.addLast(Buyer.nextBuyer()); //A
  208.         assertEquals("#254[+]BCIA", cashBox.toString());
  209.  
  210.         cashBox.serveBuyer();
  211.         cashBox.serveBuyer();
  212.         assertEquals("#254[+]IA", cashBox.toString());
  213.  
  214.         cashBox.serveBuyer();
  215.         cashBox.serveBuyer();
  216.         assertEquals("#254[+]", cashBox.toString());
  217.     }
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement