Advertisement
Guest User

hwk6

a guest
Oct 22nd, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 17.61 KB | None | 0 0
  1. package hwk6;
  2.  
  3. // This class contains the configuration of a type of apartment
  4. public class Apartment {
  5.     int numOfUnits; // the number of apartments of this type
  6.     Room[] rooms; // rooms in this type of apartment
  7.    
  8.     Apartment(int numOfUnits, Room[] rooms) {
  9.         this.numOfUnits = numOfUnits;
  10.         this.rooms = rooms;
  11.     }
  12.    
  13.     // return an array of window orders for one unit of this type of apartment
  14.     WindowOrder[] orderForOneUnit() {
  15.         // TODO
  16.     }
  17.    
  18.     // return an array of window orders for all units of this type of apartment
  19.     WindowOrder[] totalOrder() {
  20.         // TODO
  21.     }
  22.    
  23.     // return text like:
  24.     //
  25.     // 15 apartments with (Living room: 5 (6 X 8 window)) (Master bedroom: 3 (4 X 6 window)) (Guest room: 2 (5 X 6 window))
  26.     public String toString() {
  27.         // TODO
  28.     }
  29. }
  30.  
  31. class OneBedroom extends Apartment {
  32.     OneBedroom(int numOfUnits) {
  33.         super(numOfUnits, new Room[] { new LivingRoom(), new MasterBedroom() });
  34.     }
  35. }
  36.  
  37. class TwoBedroom extends Apartment {
  38.     TwoBedroom(int numOfUnits) {
  39.         super(numOfUnits, new Room[] { new LivingRoom(), new MasterBedroom(), new GuestRoom() });
  40.     }
  41. }
  42.  
  43. class ThreeBedroom extends Apartment {
  44.     ThreeBedroom(int numOfUnits) {
  45.         super(numOfUnits, new Room[] { new LivingRoom(), new MasterBedroom(), new GuestRoom(), new GuestRoom() });
  46.     }
  47.    
  48.     // return an array of window orders for all units of this type of apartment
  49.     //
  50.     // Notice we have two guest rooms and they have the same size of windows.
  51.     // override the inherited method to merge the order for the two guest rooms since their windows have the same size
  52.     @Override
  53.     WindowOrder[] orderForOneUnit() {
  54.         // TODO
  55.     }
  56. }
  57. ----------------------------------------------------------------------------------------------------------------------------
  58. package hwk6;
  59.  
  60. public class Building {
  61.     Apartment[] apartments;
  62.    
  63.     public Building(Apartment[] apartments) {
  64.         this.apartments= apartments;
  65.     }
  66.    
  67.     // Return an array of window orders for all apartments in the building
  68.     // Ensure that the orders for windows of the same sizes are merged.
  69.     WindowOrder[] order() {
  70.         // TODO
  71.     }
  72.    
  73.     // return a string to represent all types of apartments in the building such as:
  74.     // 20 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))
  75.     // 15 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))(Guest room: 2 (5 X 6 window))
  76.     // 10 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))(Guest room: 2 (5 X 6 window))(Guest room: 2 (5 X 6 window))
  77.     //
  78.     public String toString() {
  79.         // TODO
  80.     }
  81. }
  82. ----------------------------------------------------------------------------------------------------------------------------
  83. package hwk6;
  84.  
  85. public class Room {
  86.     Window window;
  87.     int numOfWindows;
  88.    
  89.     Room(Window window, int numOfWindows) {
  90.         this.window = window;
  91.         this.numOfWindows = numOfWindows;
  92.     }
  93.      
  94.     WindowOrder order() {
  95.         return new WindowOrder(window, numOfWindows);
  96.     }
  97.  
  98.     // Print text like: 5 (6 X 8 window)
  99.     @Override
  100.     public String toString() {
  101.         // TODO
  102.     }
  103.  
  104.     // Two rooms are equal if they contain the same number of windows of the same size
  105.     @Override
  106.     public boolean equals(Object that) {
  107.         // TODO
  108.     }
  109. }
  110.  
  111. class MasterBedroom extends Room {
  112.     MasterBedroom() {
  113.         super(new Window(4, 6), 3);
  114.     }
  115.  
  116.     // Call parent's toString method
  117.     //
  118.     // return text like: Master bedroom: 3 (4 X 6 window)
  119.     @Override
  120.     public String toString() {
  121.         // TODO
  122.     }
  123. }
  124.  
  125. class GuestRoom extends Room {
  126.     GuestRoom() {
  127.         super(new Window(5, 6), 2);
  128.     }
  129.  
  130.     // Call parent's toString method
  131.     //
  132.     // return text like: Guest room: 2 (5 X 6 window)
  133.     @Override
  134.     public String toString() {
  135.         // TODO
  136.     }
  137. }
  138.  
  139. class LivingRoom extends Room {
  140.     LivingRoom() {
  141.         super(new Window(6, 8), 5);
  142.     }
  143.  
  144.     // Call parent's toString method
  145.     //
  146.     // return text like: Living room: 5 (6 X 8 window)
  147.     @Override
  148.     public String toString() {
  149.         // TODO
  150.     }
  151. }
  152. ----------------------------------------------------------------------------------------------------------------------------
  153. package hwk6;
  154.  
  155. public class Window {
  156.     private final int width, height;
  157.    
  158.     public Window(int width, int height) {
  159.         this.width = width;
  160.         this.height = height;
  161.     }
  162.    
  163.     // print text like: 4 X 6 window
  164.     public String toString() {
  165.         // TODO
  166.     }
  167.    
  168.     // compare window objects by their dimensions
  169.     public boolean equals(Object that) {
  170.         // TODO
  171.     }
  172. }
  173.  
  174. class WindowOrder {
  175.     final Window window; // window description (its width and height)
  176.     int num;             // number of windows for this order
  177.    
  178.     WindowOrder(Window window, int num) {
  179.         this.window = window;
  180.         this.num = num;
  181.     }
  182.  
  183.     // add the num field of the parameter to the num field of this object
  184.     //
  185.     // BUT
  186.     //
  187.     //   do the merging only of two windows have the same size
  188.     //   do nothing if the size does not match
  189.     //
  190.     // return the current object
  191.     WindowOrder add (WindowOrder order) {
  192.         // TODO
  193.     }
  194.  
  195.     // update the num field of this object by multiplying it with the parameter
  196.     // and then return the current object
  197.     WindowOrder times(int number) {
  198.         // TODO
  199.     }
  200.    
  201.     // print text like: 20 4 X 6 window
  202.     @Override
  203.     public String toString() {
  204.         // TODO
  205.     }
  206.  
  207.     // Two orders are equal if they contain the same number of windows of the same size.
  208.     @Override
  209.     public boolean equals(Object that) {
  210.         // TODO
  211.     }
  212. }
  213.  
  214. ----------------------------------------------------------------------------------------------------------------------------
  215. package hwk6;
  216.  
  217. public class Hwk6 {
  218.     public static void main(String[] args) {
  219.         Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15), new ThreeBedroom(10) };
  220.        
  221.         Building building = new Building(apartments);
  222.        
  223.         WindowOrder[] orders = building.order();
  224.        
  225.         System.out.println(building);
  226.        
  227.         System.out.println("Window orders are: ");
  228.         for(WindowOrder order: orders) {
  229.             System.out.println(order);
  230.         }
  231.     }
  232. }
  233.  
  234. ----------------------------------------------------------------------------------------------------------------------------
  235. package hwk6;
  236.  
  237.  
  238. import org.junit.*;
  239. import static org.junit.Assert.*;
  240. import java.lang.reflect.Field;
  241. import org.junit.FixMethodOrder;
  242. import org.junit.runners.MethodSorters;
  243.  
  244.  
  245. @FixMethodOrder(MethodSorters.NAME_ASCENDING)
  246.  
  247. public class Testing {
  248.  
  249.     Window window;
  250.    
  251.     WindowOrder windoworder;
  252.    
  253.     Room room;
  254.     Room masterbedroom;
  255.     Room guestroom;
  256.     Room livingroom;
  257.    
  258.     Apartment apartment;
  259.     Apartment onebedroom;
  260.     Apartment twobedrom;
  261.     Apartment threebedroom;
  262.    
  263.     Building building;
  264.     Room []rooms ;
  265.     Apartment [] apartments;
  266.  
  267.     @Before
  268.     public void setUp()
  269.     {
  270.         this.window= new Window(10, 20);
  271.         windoworder = new WindowOrder(window, 100);
  272.         this.room= new Room(window, 5);
  273.         this.masterbedroom= new MasterBedroom();
  274.         this.guestroom= new GuestRoom();
  275.         this.livingroom= new LivingRoom();
  276.        
  277.         rooms =new Room[5];
  278.         rooms[0]=masterbedroom;
  279.         rooms[1]=guestroom;
  280.         rooms[2]=livingroom;
  281.         rooms[3]=masterbedroom;
  282.         rooms[4]=livingroom;
  283.        
  284.         this.apartment= new Apartment(30, rooms);
  285.         this.onebedroom= new OneBedroom(10);
  286.         this.twobedrom=new TwoBedroom(5);
  287.         this.threebedroom=new ThreeBedroom(15);
  288.        
  289.         apartments = new Apartment[6];
  290.         apartments[0] = onebedroom;
  291.         apartments[1] = twobedrom;
  292.         apartments[2] = threebedroom;
  293.         apartments[3] = onebedroom;
  294.         apartments[4] = onebedroom;
  295.         apartments[5] = twobedrom;
  296.  
  297.         this.building= new Building(apartments);
  298.     }
  299.  
  300.     @After
  301.     public void tearDown()
  302.     {      
  303.         this.window= null;
  304.         this.windoworder=null;
  305.         this.room= null;
  306.         this.masterbedroom= null;
  307.         this.guestroom= null;
  308.         this.livingroom= null;
  309.         this.apartment= null;
  310.         this.onebedroom= null;
  311.         this.twobedrom=null;
  312.         this.threebedroom=null;
  313.         this.building=null;
  314.     }
  315.    
  316.     private Object getField( Object instance, String name ) throws Exception
  317.     {
  318.         Class c = instance.getClass();
  319.         Field f = c.getDeclaredField( name );
  320.         f.setAccessible( true );
  321.         return f.get( instance );
  322.     }
  323.  
  324.     @Test
  325.     public void AA_TestWindowConstructor() throws Exception{
  326.         assertEquals(this.window.getClass().getSimpleName().toString(), "Window");
  327.         assertEquals(10,(int)getField(window,"width"));
  328.         assertEquals(20,getField(window,"height"));
  329.     }
  330.     @Test
  331.     public void AB_TestWindowEquals() throws Exception{
  332.         assertTrue(this.window.equals(new Window(10,20)));
  333.         assertTrue(this.window.equals(this.window));
  334.         assertFalse(this.window.equals(new Window(1,20)));
  335.        
  336.     }
  337.     @Test
  338.     public void BA_TestWindowOrderConstructor(){
  339.         assertEquals(this.windoworder.getClass().getSimpleName().toString(), "WindowOrder");
  340.         assertEquals(this.window,windoworder.window);
  341.         assertEquals(100,windoworder.num);
  342.     }
  343.     @Test
  344.     public void BB_Testwindoworderadd(){
  345.         WindowOrder w=windoworder.add(new WindowOrder(new Window(10,20), 1000));
  346.         assertEquals(windoworder,w);
  347.         assertEquals(1100,windoworder.num);
  348.         windoworder=null;
  349.     }
  350.     @Test
  351.     public void BC_Testwindoworderadd(){
  352.         WindowOrder w= windoworder.add(new WindowOrder(new Window(20,20), 1000));
  353.         assertEquals(windoworder,w);
  354.         assertEquals(100,windoworder.num);
  355.     }
  356.     @Test
  357.     public void BD_Testwindoworderadd(){
  358.         WindowOrder w= windoworder.add(windoworder);
  359.         assertEquals(windoworder,w);
  360.         assertEquals(200,windoworder.num);
  361.     }
  362.     @Test
  363.     public void BE_Testwindowordertimes(){
  364.         WindowOrder w= windoworder.times(0);
  365.         assertEquals(windoworder,w);
  366.         assertEquals(0,windoworder.num);
  367.     }
  368.     @Test
  369.     public void BF_Testwindowordertimes(){
  370.         WindowOrder w= windoworder.times(3);
  371.         assertEquals(windoworder,w);
  372.         assertEquals(300,windoworder.num);
  373.     }
  374.     @Test
  375.     public void CA_TestRoomConstructor(){
  376.         assertEquals(this.room.getClass().getSimpleName().toString(), "Room");
  377.         assertEquals(5,room.numOfWindows);
  378.         assertEquals(window,room.window);
  379.     }
  380.     @Test
  381.     public void CB_TestRoomOrder(){
  382.        
  383.         assertEquals( new WindowOrder(window, 5),room.order());
  384.         assertEquals( new WindowOrder(new Window(4, 6), 3),masterbedroom.order());
  385.     }
  386.     @Test
  387.     public void D_TestMasterBedRoomConstructor(){
  388.         assertEquals(this.masterbedroom.getClass().getSimpleName().toString(), "MasterBedroom");
  389.         assertEquals(3,masterbedroom.numOfWindows);
  390.         assertEquals(new Window(4, 6),masterbedroom.window);
  391.     }
  392.     @Test
  393.     public void E_TestGuestRoomConstructor(){
  394.         assertEquals(this.guestroom.getClass().getSimpleName().toString(), "GuestRoom");
  395.         assertEquals(2,guestroom.numOfWindows);
  396.         assertEquals(new Window(5, 6),guestroom.window);
  397.     }
  398.     @Test
  399.     public void F_TestLivingRoomConstructor(){
  400.         assertEquals(this.livingroom.getClass().getSimpleName().toString(), "LivingRoom");
  401.         assertEquals(5,livingroom.numOfWindows);
  402.         assertEquals(new Window(6, 8),livingroom.window);
  403.     }
  404.     @Test
  405.     public void GA_TestApartmentConstructor(){
  406.         assertEquals(this.apartment.getClass().getSimpleName().toString(), "Apartment");
  407.         assertEquals(30,apartment.numOfUnits);
  408.         assertArrayEquals(rooms,apartment.rooms);
  409.     }
  410.     @Test
  411.     public void GB_TestApartmentTotalOrder(){
  412.         WindowOrder[] wo = new WindowOrder [5];
  413.         wo[0] = new WindowOrder(new Window(4, 6), 90);
  414.         wo[1] = new WindowOrder(new Window(5, 6), 60);
  415.         wo[2] = new WindowOrder(new Window(6, 8), 150);
  416.         wo[3] = new WindowOrder(new Window(4, 6), 90);
  417.         wo[4] = new WindowOrder(new Window(6, 8), 150);
  418.        
  419.         assertArrayEquals(wo ,apartment.totalOrder());
  420.        
  421.     }
  422.     @Test
  423.     public void HA_TestOneBedroomConstructor(){
  424.         assertEquals(this.onebedroom.getClass().getSimpleName().toString(), "OneBedroom");
  425.         assertEquals(10,onebedroom.numOfUnits);
  426.         assertArrayEquals(new Room[] { new LivingRoom(), new MasterBedroom() },onebedroom.rooms);
  427.     }
  428.     @Test
  429.     public void HB_TestOneBedroomorDerForOneUnit(){
  430.         WindowOrder[] wo = new WindowOrder [2];
  431.         wo[0] = new WindowOrder(new Window(6, 8), 5);
  432.         wo[1] = new WindowOrder(new Window(4, 6), 3);
  433.  
  434.         assertArrayEquals(wo ,onebedroom.orderForOneUnit());
  435.     }
  436.     @Test
  437.     public void HC_TestOneBedroomTotalOrder(){
  438.         WindowOrder[] wo = new WindowOrder [2];
  439.         wo[0] = new WindowOrder(new Window(6, 8), 50);
  440.         wo[1] = new WindowOrder(new Window(4, 6), 30);
  441.  
  442.         assertArrayEquals(wo ,onebedroom.totalOrder());
  443.     }
  444.  
  445.     @Test
  446.     public void IA_TestTwoBedroomConstructor(){
  447.         assertEquals(this.twobedrom.getClass().getSimpleName().toString(), "TwoBedroom");
  448.         assertEquals(5,twobedrom.numOfUnits);
  449.         assertArrayEquals(new Room[] { new LivingRoom(), new MasterBedroom(), new GuestRoom() },twobedrom.rooms);
  450.     }
  451.     @Test
  452.     public void IB_TestTwoBedroomOrderForOneUnit(){
  453.         WindowOrder[] wo = new WindowOrder [3];
  454.         wo[0] = new WindowOrder(new Window(6, 8), 5);
  455.         wo[1] = new WindowOrder(new Window(4, 6), 3);
  456.         wo[2] = new WindowOrder(new Window(5, 6), 2);
  457.  
  458.         assertArrayEquals(wo ,twobedrom.orderForOneUnit());
  459.     }
  460.     @Test
  461.     public void IC_TestTwoBedroomTotalOrder(){
  462.         WindowOrder[] wo = new WindowOrder [3];
  463.         wo[0] = new WindowOrder(new Window(6, 8), 25);
  464.         wo[1] = new WindowOrder(new Window(4, 6), 15);
  465.         wo[2] = new WindowOrder(new Window(5, 6), 10);
  466.  
  467.         assertArrayEquals(wo ,twobedrom.totalOrder());
  468.     }
  469.    
  470.     @Test
  471.     public void JA_TestThreeBedroomConstructor(){
  472.         assertEquals(this.threebedroom.getClass().getSimpleName().toString(), "ThreeBedroom");
  473.         assertEquals(15,threebedroom.numOfUnits);
  474.         assertArrayEquals(new Room[] { new LivingRoom(), new MasterBedroom(), new GuestRoom(), new GuestRoom() },threebedroom.rooms);
  475.     }
  476.     @Test
  477.     public void JB_TestThreeBedroomOrderForOneUnit(){
  478.         WindowOrder[] wo = new WindowOrder [3];
  479.         wo[0] = new WindowOrder(new Window(6, 8), 5);
  480.         wo[1] = new WindowOrder(new Window(4, 6), 3);
  481.         wo[2] = new WindowOrder(new Window(5, 6), 4);
  482.  
  483.         assertArrayEquals(wo ,threebedroom.orderForOneUnit());
  484.     }
  485.     @Test
  486.     public void JC_TestThreeBedroomTotalOrder(){
  487.         WindowOrder[] wo = new WindowOrder [3];
  488.         wo[0] = new WindowOrder(new Window(6, 8), 75);
  489.         wo[1] = new WindowOrder(new Window(4, 6), 45);
  490.         wo[2] = new WindowOrder(new Window(5, 6), 60);
  491.  
  492.         assertArrayEquals(wo ,threebedroom.totalOrder());
  493.     }
  494.    
  495.     @Test
  496.     public void KA_TestBuildingConstructor(){
  497.         assertEquals(this.building.getClass().getSimpleName().toString(), "Building");
  498.         assertArrayEquals(apartments,building.apartments);
  499.     }
  500.     @Test
  501.     public void KB_TestBuildingOrderr(){
  502.         WindowOrder[] wo = new WindowOrder [3];
  503.         wo[0] = new WindowOrder(new Window(6, 8), 275);
  504.         wo[1] = new WindowOrder(new Window(4, 6), 165);
  505.         wo[2] = new WindowOrder(new Window(5, 6), 80);
  506.        
  507.         assertArrayEquals(wo,building.order());
  508.     }
  509.    
  510.  
  511.     @Test
  512.     public void L_TestWindowToString(){
  513.         String expected= "10 X 20 window";
  514.        
  515.         assertEquals(expected,window.toString());
  516.     }
  517.     @Test
  518.     public void M_TestWindowOrderToString(){
  519.         String expected= "100 10 X 20 window";
  520.        
  521.         assertEquals(expected,windoworder.toString());
  522.     }
  523.     @Test
  524.     public void N_TestApartmentToString(){
  525.         String expected= "30 apartments with (Master bedroom: 3 (4 X 6 window))(Guest room: 2 (5 X 6 window))(Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))(Living room: 5 (6 X 8 window))";
  526.        
  527.         assertEquals(expected,apartment.toString());
  528.     }
  529.    
  530.     @Test
  531.     public void O_TestoneBedRoomToString(){
  532.         String expected= "10 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))";
  533.        
  534.         assertEquals(expected,onebedroom.toString());
  535.     }
  536.    
  537.     @Test
  538.     public void P_TestTwoBedRoomToString(){
  539.         String expected= "5 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))(Guest room: 2 (5 X 6 window))";
  540.        
  541.         assertEquals(expected,twobedrom.toString());
  542.     }
  543.    
  544.     @Test
  545.     public void Q_TestThreeBedRoomToString(){
  546.         String expected= "15 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))(Guest room: 2 (5 X 6 window))(Guest room: 2 (5 X 6 window))";
  547.        
  548.         assertEquals(expected,threebedroom.toString());
  549.     }
  550.    
  551.     @Test
  552.     public void R_TestMasterRoomToString(){
  553.         String expected= "Master bedroom: 3 (4 X 6 window)";
  554.        
  555.         assertEquals(expected,masterbedroom.toString());
  556.     }
  557.     @Test
  558.     public void S_TestGuestRoomToString(){
  559.         String expected= "Guest room: 2 (5 X 6 window)";
  560.        
  561.         assertEquals(expected,guestroom.toString());
  562.     }
  563.     @Test
  564.     public void T_TestLivingRoomToString(){
  565.         String expected= "Living room: 5 (6 X 8 window)";
  566.        
  567.         assertEquals(expected,livingroom.toString());
  568.     }
  569.    
  570.     @Test
  571.     public void UTestBuildingToString(){
  572.         String expected= "10 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))\n"+
  573. "5 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))(Guest room: 2 (5 X 6 window))\n"+
  574. "15 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))(Guest room: 2 (5 X 6 window))(Guest room: 2 (5 X 6 window))\n"+
  575. "10 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))\n"+
  576. "10 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))\n"+
  577. "5 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))(Guest room: 2 (5 X 6 window))\n";
  578.        
  579.         assertEquals(expected,building.toString());
  580.     }
  581.  
  582. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement