Templates Hwk6java package hwk6 public class Hwk6 public st
Templates
Hwk6.java
package hwk6;
public class Hwk6 {
public static void main(String[] args) {
Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15), new ThreeBedroom(10) };
Building building = new Building(apartments);
WindowOrder[] orders = building.order();
System.out.println(building);
System.out.println(\"Window orders are: \");
for(WindowOrder order: orders) {
System.out.println(order);
}
}
}
Apartment.java
package hwk6;
// This class contains the configuration of a type of apartment
public class Apartment {
int numOfUnits; // the number of apartments of this type
Room[] rooms; // rooms in this type of apartment
Apartment(int numOfUnits, Room[] rooms) {
this.numOfUnits = numOfUnits;
this.rooms = rooms;
}
// return an array of window orders for one unit of this type of apartment
WindowOrder[] orderForOneUnit() {
// TODO
}
// return an array of window orders for all units of this type of apartment
WindowOrder[] totalOrder() {
// TODO
}
// return text like:
//
// 15 apartments with (Living room: 5 (6 X 8 window)) (Master bedroom: 3 (4 X 6 window)) (Guest room: 2 (5 X 6 window))
public String toString() {
// TODO
}
}
class OneBedroom extends Apartment {
OneBedroom(int numOfUnits) {
super(numOfUnits, new Room[] { new LivingRoom(), new MasterBedroom() });
}
}
class TwoBedroom extends Apartment {
TwoBedroom(int numOfUnits) {
super(numOfUnits, new Room[] { new LivingRoom(), new MasterBedroom(), new GuestRoom() });
}
}
class ThreeBedroom extends Apartment {
ThreeBedroom(int numOfUnits) {
super(numOfUnits, new Room[] { new LivingRoom(), new MasterBedroom(), new GuestRoom(), new GuestRoom() });
}
// return an array of window orders for all units of this type of apartment
//
// Notice we have two guest rooms and they have the same size of windows.
// override the inherited method to merge the order for the two guest rooms since their windows have the same size
@Override
WindowOrder[] orderForOneUnit() {
// TODO
}
}
Building.java
package hwk6;
public class Building {
Apartment[] apartments;
public Building(Apartment[] apartments) {
this.apartments= apartments;
}
// Return an array of window orders for all apartments in the building
// Ensure that the orders for windows of the same sizes are merged.
WindowOrder[] order() {
// TODO
}
// return a string to represent all types of apartments in the building such as:
// 20 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))
// 15 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))(Guest room: 2 (5 X 6 window))
// 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))
//
public String toString() {
// TODO
}
}
Room.java
package hwk6;
public class Room {
Window window;
int numOfWindows;
Room(Window window, int numOfWindows) {
this.window = window;
this.numOfWindows = numOfWindows;
}
WindowOrder order() {
return new WindowOrder(window, numOfWindows);
}
// Print text like: 5 (6 X 8 window)
@Override
public String toString() {
// TODO
}
// Two rooms are equal if they contain the same number of windows of the same size
@Override
public boolean equals(Object that) {
// TODO
}
}
class MasterBedroom extends Room {
MasterBedroom() {
super(new Window(4, 6), 3);
}
// Call parent\'s toString method
//
// return text like: Master bedroom: 3 (4 X 6 window)
@Override
public String toString() {
// TODO
}
}
class GuestRoom extends Room {
GuestRoom() {
super(new Window(5, 6), 2);
}
// Call parent\'s toString method
//
// return text like: Guest room: 2 (5 X 6 window)
@Override
public String toString() {
// TODO
}
}
class LivingRoom extends Room {
LivingRoom() {
super(new Window(6, 8), 5);
}
// Call parent\'s toString method
//
// return text like: Living room: 5 (6 X 8 window)
@Override
public String toString() {
// TODO
}
}
Window.java
package hwk6;
public class Window {
private final int width, height;
public Window(int width, int height) {
this.width = width;
this.height = height;
}
// print text like: 4 X 6 window
public String toString() {
// TODO
}
// compare window objects by their dimensions
public boolean equals(Object that) {
// TODO
}
}
class WindowOrder {
final Window window; // window description (its width and height)
int num; // number of windows for this order
WindowOrder(Window window, int num) {
this.window = window;
this.num = num;
}
// add the num field of the parameter to the num field of this object
//
// BUT
//
// do the merging only of two windows have the same size
// do nothing if the size does not match
//
// return the current object
WindowOrder add (WindowOrder order) {
// TODO
}
// update the num field of this object by multiplying it with the parameter
// and then return the current object
WindowOrder times(int number) {
// TODO
}
// print text like: 20 4 X 6 window
@Override
public String toString() {
// TODO
}
// Two orders are equal if they contain the same number of windows of the same size.
@Override
public boolean equals(Object that) {
// TODO
}
}
Testing.java
package hwk6;
import org.junit.*;
import static org.junit.Assert.*;
import java.lang.reflect.Field;
import org.junit.FixMethodOrder;
import org.junit.runners.MethodSorters;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class Testing {
Window window;
WindowOrder windoworder;
Room room;
Room masterbedroom;
Room guestroom;
Room livingroom;
Apartment apartment;
Apartment onebedroom;
Apartment twobedrom;
Apartment threebedroom;
Building building;
Room []rooms ;
Apartment [] apartments;
@Before
public void setUp()
{
this.window= new Window(10, 20);
windoworder = new WindowOrder(window, 100);
this.room= new Room(window, 5);
this.masterbedroom= new MasterBedroom();
this.guestroom= new GuestRoom();
this.livingroom= new LivingRoom();
rooms =new Room[5];
rooms[0]=masterbedroom;
rooms[1]=guestroom;
rooms[2]=livingroom;
rooms[3]=masterbedroom;
rooms[4]=livingroom;
this.apartment= new Apartment(30, rooms);
this.onebedroom= new OneBedroom(10);
this.twobedrom=new TwoBedroom(5);
this.threebedroom=new ThreeBedroom(15);
apartments = new Apartment[6];
apartments[0] = onebedroom;
apartments[1] = twobedrom;
apartments[2] = threebedroom;
apartments[3] = onebedroom;
apartments[4] = onebedroom;
apartments[5] = twobedrom;
this.building= new Building(apartments);
}
@After
public void tearDown()
{
this.window= null;
this.windoworder=null;
this.room= null;
this.masterbedroom= null;
this.guestroom= null;
this.livingroom= null;
this.apartment= null;
this.onebedroom= null;
this.twobedrom=null;
this.threebedroom=null;
this.building=null;
}
private Object getField( Object instance, String name ) throws Exception
{
Class c = instance.getClass();
Field f = c.getDeclaredField( name );
f.setAccessible( true );
return f.get( instance );
}
@Test
public void AA_TestWindowConstructor() throws Exception{
assertEquals(this.window.getClass().getSimpleName().toString(), \"Window\");
assertEquals(10,(int)getField(window,\"width\"));
assertEquals(20,getField(window,\"height\"));
}
@Test
public void AB_TestWindowEquals() throws Exception{
assertTrue(this.window.equals(new Window(10,20)));
assertTrue(this.window.equals(this.window));
assertFalse(this.window.equals(new Window(1,20)));
}
@Test
public void BA_TestWindowOrderConstructor(){
assertEquals(this.windoworder.getClass().getSimpleName().toString(), \"WindowOrder\");
assertEquals(this.window,windoworder.window);
assertEquals(100,windoworder.num);
}
@Test
public void BB_Testwindoworderadd(){
WindowOrder w=windoworder.add(new WindowOrder(new Window(10,20), 1000));
assertEquals(windoworder,w);
assertEquals(1100,windoworder.num);
windoworder=null;
}
@Test
public void BC_Testwindoworderadd(){
WindowOrder w= windoworder.add(new WindowOrder(new Window(20,20), 1000));
assertEquals(windoworder,w);
assertEquals(100,windoworder.num);
}
@Test
public void BD_Testwindoworderadd(){
WindowOrder w= windoworder.add(windoworder);
assertEquals(windoworder,w);
assertEquals(200,windoworder.num);
}
@Test
public void BE_Testwindowordertimes(){
WindowOrder w= windoworder.times(0);
assertEquals(windoworder,w);
assertEquals(0,windoworder.num);
}
@Test
public void BF_Testwindowordertimes(){
WindowOrder w= windoworder.times(3);
assertEquals(windoworder,w);
assertEquals(300,windoworder.num);
}
@Test
public void CA_TestRoomConstructor(){
assertEquals(this.room.getClass().getSimpleName().toString(), \"Room\");
assertEquals(5,room.numOfWindows);
assertEquals(window,room.window);
}
@Test
public void CB_TestRoomOrder(){
assertEquals( new WindowOrder(window, 5),room.order());
assertEquals( new WindowOrder(new Window(4, 6), 3),masterbedroom.order());
}
@Test
public void D_TestMasterBedRoomConstructor(){
assertEquals(this.masterbedroom.getClass().getSimpleName().toString(), \"MasterBedroom\");
assertEquals(3,masterbedroom.numOfWindows);
assertEquals(new Window(4, 6),masterbedroom.window);
}
@Test
public void E_TestGuestRoomConstructor(){
assertEquals(this.guestroom.getClass().getSimpleName().toString(), \"GuestRoom\");
assertEquals(2,guestroom.numOfWindows);
assertEquals(new Window(5, 6),guestroom.window);
}
@Test
public void F_TestLivingRoomConstructor(){
assertEquals(this.livingroom.getClass().getSimpleName().toString(), \"LivingRoom\");
assertEquals(5,livingroom.numOfWindows);
assertEquals(new Window(6, 8),livingroom.window);
}
@Test
public void GA_TestApartmentConstructor(){
assertEquals(this.apartment.getClass().getSimpleName().toString(), \"Apartment\");
assertEquals(30,apartment.numOfUnits);
assertArrayEquals(rooms,apartment.rooms);
}
@Test
public void GB_TestApartmentTotalOrder(){
WindowOrder[] wo = new WindowOrder [5];
wo[0] = new WindowOrder(new Window(4, 6), 90);
wo[1] = new WindowOrder(new Window(5, 6), 60);
wo[2] = new WindowOrder(new Window(6, 8), 150);
wo[3] = new WindowOrder(new Window(4, 6), 90);
wo[4] = new WindowOrder(new Window(6, 8), 150);
assertArrayEquals(wo ,apartment.totalOrder());
}
@Test
public void HA_TestOneBedroomConstructor(){
assertEquals(this.onebedroom.getClass().getSimpleName().toString(), \"OneBedroom\");
assertEquals(10,onebedroom.numOfUnits);
assertArrayEquals(new Room[] { new LivingRoom(), new MasterBedroom() },onebedroom.rooms);
}
@Test
public void HB_TestOneBedroomorDerForOneUnit(){
WindowOrder[] wo = new WindowOrder [2];
wo[0] = new WindowOrder(new Window(6, 8), 5);
wo[1] = new WindowOrder(new Window(4, 6), 3);
assertArrayEquals(wo ,onebedroom.orderForOneUnit());
}
@Test
public void HC_TestOneBedroomTotalOrder(){
WindowOrder[] wo = new WindowOrder [2];
wo[0] = new WindowOrder(new Window(6, 8), 50);
wo[1] = new WindowOrder(new Window(4, 6), 30);
assertArrayEquals(wo ,onebedroom.totalOrder());
}
@Test
public void IA_TestTwoBedroomConstructor(){
assertEquals(this.twobedrom.getClass().getSimpleName().toString(), \"TwoBedroom\");
assertEquals(5,twobedrom.numOfUnits);
assertArrayEquals(new Room[] { new LivingRoom(), new MasterBedroom(), new GuestRoom() },twobedrom.rooms);
}
@Test
public void IB_TestTwoBedroomOrderForOneUnit(){
WindowOrder[] wo = new WindowOrder [3];
wo[0] = new WindowOrder(new Window(6, 8), 5);
wo[1] = new WindowOrder(new Window(4, 6), 3);
wo[2] = new WindowOrder(new Window(5, 6), 2);
assertArrayEquals(wo ,twobedrom.orderForOneUnit());
}
@Test
public void IC_TestTwoBedroomTotalOrder(){
WindowOrder[] wo = new WindowOrder [3];
wo[0] = new WindowOrder(new Window(6, 8), 25);
wo[1] = new WindowOrder(new Window(4, 6), 15);
wo[2] = new WindowOrder(new Window(5, 6), 10);
assertArrayEquals(wo ,twobedrom.totalOrder());
}
@Test
public void JA_TestThreeBedroomConstructor(){
assertEquals(this.threebedroom.getClass().getSimpleName().toString(), \"ThreeBedroom\");
assertEquals(15,threebedroom.numOfUnits);
assertArrayEquals(new Room[] { new LivingRoom(), new MasterBedroom(), new GuestRoom(), new GuestRoom() },threebedroom.rooms);
}
@Test
public void JB_TestThreeBedroomOrderForOneUnit(){
WindowOrder[] wo = new WindowOrder [3];
wo[0] = new WindowOrder(new Window(6, 8), 5);
wo[1] = new WindowOrder(new Window(4, 6), 3);
wo[2] = new WindowOrder(new Window(5, 6), 4);
assertArrayEquals(wo ,threebedroom.orderForOneUnit());
}
@Test
public void JC_TestThreeBedroomTotalOrder(){
WindowOrder[] wo = new WindowOrder [3];
wo[0] = new WindowOrder(new Window(6, 8), 75);
wo[1] = new WindowOrder(new Window(4, 6), 45);
wo[2] = new WindowOrder(new Window(5, 6), 60);
assertArrayEquals(wo ,threebedroom.totalOrder());
}
@Test
public void KA_TestBuildingConstructor(){
assertEquals(this.building.getClass().getSimpleName().toString(), \"Building\");
assertArrayEquals(apartments,building.apartments);
}
@Test
public void KB_TestBuildingOrderr(){
WindowOrder[] wo = new WindowOrder [3];
wo[0] = new WindowOrder(new Window(6, 8), 275);
wo[1] = new WindowOrder(new Window(4, 6), 165);
wo[2] = new WindowOrder(new Window(5, 6), 80);
assertArrayEquals(wo,building.order());
}
@Test
public void L_TestWindowToString(){
String expected= \"10 X 20 window\";
assertEquals(expected,window.toString());
}
@Test
public void M_TestWindowOrderToString(){
String expected= \"100 10 X 20 window\";
assertEquals(expected,windoworder.toString());
}
@Test
public void N_TestApartmentToString(){
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))\";
assertEquals(expected,apartment.toString());
}
@Test
public void O_TestoneBedRoomToString(){
String expected= \"10 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))\";
assertEquals(expected,onebedroom.toString());
}
@Test
public void P_TestTwoBedRoomToString(){
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))\";
assertEquals(expected,twobedrom.toString());
}
@Test
public void Q_TestThreeBedRoomToString(){
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))\";
assertEquals(expected,threebedroom.toString());
}
@Test
public void R_TestMasterRoomToString(){
String expected= \"Master bedroom: 3 (4 X 6 window)\";
assertEquals(expected,masterbedroom.toString());
}
@Test
public void S_TestGuestRoomToString(){
String expected= \"Guest room: 2 (5 X 6 window)\";
assertEquals(expected,guestroom.toString());
}
@Test
public void T_TestLivingRoomToString(){
String expected= \"Living room: 5 (6 X 8 window)\";
assertEquals(expected,livingroom.toString());
}
@Test
public void UTestBuildingToString(){
String expected= \"10 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))\ \"+
\"5 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))(Guest room: 2 (5 X 6 window))\ \"+
\"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))\ \"+
\"10 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))\ \"+
\"10 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))\ \"+
\"5 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))(Guest room: 2 (5 X 6 window))\ \";
assertEquals(expected,building.toString());
}
}
Solution
package hwk6;
public class Hwk6 {
public static void main(String[] args) {
Apartment[] apartments = {new OneBedroom(20), new TwoBedroom(15), new ThreeBedroom(10)};
Building building = new Building(apartments);
WindowOrder[] orders = building.order();
System.out.println(building);
System.out.println(\"Window orders are: \");
for (WindowOrder order : orders) {
System.out.println(order);
}
}
}
Apartment.java
package hwk6;
// This class contains the configuration of a type of apartment
public class Apartment {
int numOfUnits; // the number of apartments of this type
Room[] rooms; // rooms in this type of apartment
Apartment(int numOfUnits, Room[] rooms) {
this.numOfUnits = numOfUnits;
this.rooms = rooms;
}
// return an array of window orders for one unit of this type of apartment
WindowOrder[] orderForOneUnit() {
WindowOrder[] windowOrders = new WindowOrder[rooms.length];
for (int i = 0; i < rooms.length; i++) {
windowOrders[i] = rooms[i].order();
}
return windowOrders;
}
// return an array of window orders for all units of this type of apartment
WindowOrder[] totalOrder() {
WindowOrder[] windowOrders = orderForOneUnit();
for (WindowOrder order : windowOrders) {
order.times(numOfUnits);
}
return windowOrders;
}
// return text like:
//
// 15 apartments with (Living room: 5 (6 X 8 window)) (Master bedroom: 3 (4 X 6 window)) (Guest room: 2 (5 X 6 window))
public String toString() {
String[] roomsArr = new String[rooms.length];
for (int i = 0; i < roomsArr.length; i++) {
roomsArr[i] = rooms[i].toString();
}
return numOfUnits + \" apartments with (\" + String.join(\")(\", roomsArr) + \")\";
}
}
class OneBedroom extends Apartment {
OneBedroom(int numOfUnits) {
super(numOfUnits, new Room[]{new LivingRoom(), new MasterBedroom()});
}
}
class TwoBedroom extends Apartment {
TwoBedroom(int numOfUnits) {
super(numOfUnits, new Room[]{new LivingRoom(), new MasterBedroom(), new GuestRoom()});
}
}
class ThreeBedroom extends Apartment {
ThreeBedroom(int numOfUnits) {
super(numOfUnits, new Room[]{new LivingRoom(), new MasterBedroom(), new GuestRoom(), new GuestRoom()});
}
// return an array of window orders for all units of this type of apartment
//
// Notice we have two guest rooms and they have the same size of windows.
// override the inherited method to merge the order for the two guest rooms since their windows have the same size
//Override
WindowOrder[] orderForOneUnit() {
Room[] roomsArr = rooms;
return new WindowOrder[]{roomsArr[0].order(), roomsArr[1].order(), roomsArr[2].order().add(roomsArr[3].order())
};
}
}
Building.java
package hwk6;
public class Building {
Apartment[] apartments;
public Building(Apartment[] apartments) {
this.apartments = apartments;
}
// Return an array of window orders for all apartments in the building
// Ensure that the orders for windows of the same sizes are merged.
WindowOrder[] order() {
WindowOrder[] windowOrders = apartments[0].totalOrder();
for (int i = 1; i < apartments.length; i++) {
WindowOrder[] liveWindowOrder = apartments[i].totalOrder();
for (WindowOrder j : liveWindowOrder) {
boolean mergeOrder = false;
for (WindowOrder k : windowOrders) {
if (k.window.equals(j.window)) {
k.add(j);
mergeOrder = true;
break;
}
}
if (!mergeOrder) {
WindowOrder[] newWindowOrders = new WindowOrder[windowOrders.length + 1];
for (int l = 0; l < windowOrders.length; l++) {
newWindowOrders[l] = windowOrders[l];
}
newWindowOrders[windowOrders.length] = j;
windowOrders = newWindowOrders;
}
}
}
return windowOrders;
}
// return a string to represent all types of apartments in the building such as:
// 20 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))
// 15 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))(Guest room: 2 (5 X 6 window))
// 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))
//
public String toString() {
String[] roomsArr = new String[apartments.length];
for (int i = 0; i < apartments.length; i++) {
roomsArr[i] = apartments[i].toString();
}
return String.join(\"\ \", roomsArr) + \"\ \";
}
}
Room.java
package hwk6;
public class Room {
Window window;
int numOfWindows;
Room(Window window, int numOfWindows) {
this.window = window;
this.numOfWindows = numOfWindows;
}
WindowOrder order() {
return new WindowOrder(window, numOfWindows);
}
// Print text like: 5 (6 X 8 window)
//Override
public String toString() {
return String.format(\"%d (%s)\", numOfWindows, window);
}
// Two rooms are equal if they contain the same number of windows of the same size
//Override
public boolean equals(Object that) {
if (that instanceof Room) {
Room ob = (Room) that;
return this.window.equals(ob.window) &&
this.numOfWindows == ob.numOfWindows;
}
return false;
}
}
class MasterBedroom extends Room {
MasterBedroom() {
super(new Window(4, 6), 3);
}
// Call parent\'s toString method
//
// return text like: Master bedroom: 3 (4 X 6 window)
//Override
public String toString() {
return String.format(\"Master bedroom: %s\", super.toString());
}
}
class GuestRoom extends Room {
GuestRoom() {
super(new Window(5, 6), 2);
}
// Call parent\'s toString method
//
// return text like: Guest room: 2 (5 X 6 window)
//Override
public String toString() {
return String.format(\"Guest room: %s\", super.toString());
}
}
class LivingRoom extends Room {
LivingRoom() {
super(new Window(6, 8), 5);
}
// Call parent\'s toString method
//
// return text like: Living room: 5 (6 X 8 window)
//Override
public String toString() {
return String.format(\"Living room: %s\", super.toString());
}
}
Window.java
package hwk6;
public class Window {
private final int width, height;
public Window(int width, int height) {
this.width = width;
this.height = height;
}
// print text like: 4 X 6 window
public String toString() {
return String.format(\"%d X %d window\", this.width, this.height);
}
// compare window objects by their dimensions
public boolean equals(Object that) {
if (that instanceof Window) {
Window ob = (Window) that;
return this.width == ob.width &&
this.height == ob.height;
}
return false;
}
}
class WindowOrder {
final Window window; // window description (its width and height)
int num; // number of windows for this order
WindowOrder(Window window, int num) {
this.window = window;
this.num = num;
}
// add the num field of the parameter to the num field of this object
//
// BUT
//
// do the merging only of two windows have the same size
// do nothing if the size does not match
//
// return the current object
WindowOrder add(WindowOrder order) {
if (window.equals(order.window)) {
num += order.num;
}
return this;
}
// update the num field of this object by multiplying it with the parameter
// and then return the current object
WindowOrder times(int number) {
this.num *= number;
return this;
}
// print text like: 20 4 X 6 window
//Override
public String toString() {
return String.format(\"%d %s\", num, window);
}
// Two orders are equal if they contain the same number of windows of the same size.
//Override
public boolean equals(Object that) {
if (that instanceof WindowOrder) {
WindowOrder ob = (WindowOrder) that;
return window.equals(ob.window) && num == ob.num;
}
return false;
}
}
Testing.java
package hwk6;
import org.junit.*;
import static org.junit.Assert.*;
import java.lang.reflect.Field;
import org.junit.FixMethodOrder;
import org.junit.runners.MethodSorters;
//FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class Testing {
Window window;
WindowOrder windoworder;
Room room;
Room masterbedroom;
Room guestroom;
Room livingroom;
Apartment apartment;
Apartment onebedroom;
Apartment twobedrom;
Apartment threebedroom;
Building building;
Room[] rooms;
Apartment[] apartments;
//Before
public void setUp() {
this.window = new Window(10, 20);
windoworder = new WindowOrder(window, 100);
this.room = new Room(window, 5);
this.masterbedroom = new MasterBedroom();
this.guestroom = new GuestRoom();
this.livingroom = new LivingRoom();
rooms = new Room[5];
rooms[0] = masterbedroom;
rooms[1] = guestroom;
rooms[2] = livingroom;
rooms[3] = masterbedroom;
rooms[4] = livingroom;
this.apartment = new Apartment(30, rooms);
this.onebedroom = new OneBedroom(10);
this.twobedrom = new TwoBedroom(5);
this.threebedroom = new ThreeBedroom(15);
apartments = new Apartment[6];
apartments[0] = onebedroom;
apartments[1] = twobedrom;
apartments[2] = threebedroom;
apartments[3] = onebedroom;
apartments[4] = onebedroom;
apartments[5] = twobedrom;
this.building = new Building(apartments);
}
//After
public void tearDown() {
this.window = null;
this.windoworder = null;
this.room = null;
this.masterbedroom = null;
this.guestroom = null;
this.livingroom = null;
this.apartment = null;
this.onebedroom = null;
this.twobedrom = null;
this.threebedroom = null;
this.building = null;
}
private Object getField(Object instance, String name) throws Exception {
Class c = instance.getClass();
Field f = c.getDeclaredField(name);
f.setAccessible(true);
return f.get(instance);
}
//Test
public void AA_TestWindowConstructor() throws Exception {
assertEquals(this.window.getClass().getSimpleName().toString(), \"Window\");
assertEquals(10, (int) getField(window, \"width\"));
assertEquals(20, getField(window, \"height\"));
}
//Test
public void AB_TestWindowEquals() throws Exception {
assertTrue(this.window.equals(new Window(10, 20)));
assertTrue(this.window.equals(this.window));
assertFalse(this.window.equals(new Window(1, 20)));
}
//Test
public void BA_TestWindowOrderConstructor() {
assertEquals(this.windoworder.getClass().getSimpleName().toString(), \"WindowOrder\");
assertEquals(this.window, windoworder.window);
assertEquals(100, windoworder.num);
}
//Test
public void BB_Testwindoworderadd() {
WindowOrder w = windoworder.add(new WindowOrder(new Window(10, 20), 1000));
assertEquals(windoworder, w);
assertEquals(1100, windoworder.num);
windoworder = null;
}
//Test
public void BC_Testwindoworderadd() {
WindowOrder w = windoworder.add(new WindowOrder(new Window(20, 20), 1000));
assertEquals(windoworder, w);
assertEquals(100, windoworder.num);
}
//Test
public void BD_Testwindoworderadd() {
WindowOrder w = windoworder.add(windoworder);
assertEquals(windoworder, w);
assertEquals(200, windoworder.num);
}
//Test
public void BE_Testwindowordertimes() {
WindowOrder w = windoworder.times(0);
assertEquals(windoworder, w);
assertEquals(0, windoworder.num);
}
//Test
public void BF_Testwindowordertimes() {
WindowOrder w = windoworder.times(3);
assertEquals(windoworder, w);
assertEquals(300, windoworder.num);
}
//Test
public void CA_TestRoomConstructor() {
assertEquals(this.room.getClass().getSimpleName().toString(), \"Room\");
assertEquals(5, room.numOfWindows);
assertEquals(window, room.window);
}
//Test
public void CB_TestRoomOrder() {
assertEquals(new WindowOrder(window, 5), room.order());
assertEquals(new WindowOrder(new Window(4, 6), 3), masterbedroom.order());
}
//Test
public void D_TestMasterBedRoomConstructor() {
assertEquals(this.masterbedroom.getClass().getSimpleName().toString(), \"MasterBedroom\");
assertEquals(3, masterbedroom.numOfWindows);
assertEquals(new Window(4, 6), masterbedroom.window);
}
//Test
public void E_TestGuestRoomConstructor() {
assertEquals(this.guestroom.getClass().getSimpleName().toString(), \"GuestRoom\");
assertEquals(2, guestroom.numOfWindows);
assertEquals(new Window(5, 6), guestroom.window);
}
//Test
public void F_TestLivingRoomConstructor() {
assertEquals(this.livingroom.getClass().getSimpleName().toString(), \"LivingRoom\");
assertEquals(5, livingroom.numOfWindows);
assertEquals(new Window(6, 8), livingroom.window);
}
//Test
public void GA_TestApartmentConstructor() {
assertEquals(this.apartment.getClass().getSimpleName().toString(), \"Apartment\");
assertEquals(30, apartment.numOfUnits);
assertArrayEquals(rooms, apartment.rooms);
}
//Test
public void GB_TestApartmentTotalOrder() {
WindowOrder[] wo = new WindowOrder[5];
wo[0] = new WindowOrder(new Window(4, 6), 90);
wo[1] = new WindowOrder(new Window(5, 6), 60);
wo[2] = new WindowOrder(new Window(6, 8), 150);
wo[3] = new WindowOrder(new Window(4, 6), 90);
wo[4] = new WindowOrder(new Window(6, 8), 150);
assertArrayEquals(wo, apartment.totalOrder());
}
//Test
public void HA_TestOneBedroomConstructor() {
assertEquals(this.onebedroom.getClass().getSimpleName().toString(), \"OneBedroom\");
assertEquals(10, onebedroom.numOfUnits);
assertArrayEquals(new Room[]{new LivingRoom(), new MasterBedroom()}, onebedroom.rooms);
}
//Test
public void HB_TestOneBedroomorDerForOneUnit() {
WindowOrder[] wo = new WindowOrder[2];
wo[0] = new WindowOrder(new Window(6, 8), 5);
wo[1] = new WindowOrder(new Window(4, 6), 3);
assertArrayEquals(wo, onebedroom.orderForOneUnit());
}
//Test
public void HC_TestOneBedroomTotalOrder() {
WindowOrder[] wo = new WindowOrder[2];
wo[0] = new WindowOrder(new Window(6, 8), 50);
wo[1] = new WindowOrder(new Window(4, 6), 30);
assertArrayEquals(wo, onebedroom.totalOrder());
}
//Test
public void IA_TestTwoBedroomConstructor() {
assertEquals(this.twobedrom.getClass().getSimpleName().toString(), \"TwoBedroom\");
assertEquals(5, twobedrom.numOfUnits);
assertArrayEquals(new Room[]{new LivingRoom(), new MasterBedroom(), new GuestRoom()}, twobedrom.rooms);
}
//Test
public void IB_TestTwoBedroomOrderForOneUnit() {
WindowOrder[] wo = new WindowOrder[3];
wo[0] = new WindowOrder(new Window(6, 8), 5);
wo[1] = new WindowOrder(new Window(4, 6), 3);
wo[2] = new WindowOrder(new Window(5, 6), 2);
assertArrayEquals(wo, twobedrom.orderForOneUnit());
}
//Test
public void IC_TestTwoBedroomTotalOrder() {
WindowOrder[] wo = new WindowOrder[3];
wo[0] = new WindowOrder(new Window(6, 8), 25);
wo[1] = new WindowOrder(new Window(4, 6), 15);
wo[2] = new WindowOrder(new Window(5, 6), 10);
assertArrayEquals(wo, twobedrom.totalOrder());
}
//Test
public void JA_TestThreeBedroomConstructor() {
assertEquals(this.threebedroom.getClass().getSimpleName().toString(), \"ThreeBedroom\");
assertEquals(15, threebedroom.numOfUnits);
assertArrayEquals(new Room[]{new LivingRoom(), new MasterBedroom(), new GuestRoom(), new GuestRoom()}, threebedroom.rooms);
}
//Test
public void JB_TestThreeBedroomOrderForOneUnit() {
WindowOrder[] wo = new WindowOrder[3];
wo[0] = new WindowOrder(new Window(6, 8), 5);
wo[1] = new WindowOrder(new Window(4, 6), 3);
wo[2] = new WindowOrder(new Window(5, 6), 4);
assertArrayEquals(wo, threebedroom.orderForOneUnit());
}
//Test
public void JC_TestThreeBedroomTotalOrder() {
WindowOrder[] wo = new WindowOrder[3];
wo[0] = new WindowOrder(new Window(6, 8), 75);
wo[1] = new WindowOrder(new Window(4, 6), 45);
wo[2] = new WindowOrder(new Window(5, 6), 60);
assertArrayEquals(wo, threebedroom.totalOrder());
}
//Test
public void KA_TestBuildingConstructor() {
assertEquals(this.building.getClass().getSimpleName().toString(), \"Building\");
assertArrayEquals(apartments, building.apartments);
}
//Test
public void KB_TestBuildingOrderr() {
WindowOrder[] wo = new WindowOrder[3];
wo[0] = new WindowOrder(new Window(6, 8), 275);
wo[1] = new WindowOrder(new Window(4, 6), 165);
wo[2] = new WindowOrder(new Window(5, 6), 80);
assertArrayEquals(wo, building.order());
}
//Test
public void L_TestWindowToString() {
String expected = \"10 X 20 window\";
assertEquals(expected, window.toString());
}
//Test
public void M_TestWindowOrderToString() {
String expected = \"100 10 X 20 window\";
assertEquals(expected, windoworder.toString());
}
//Test
public void N_TestApartmentToString() {
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))\";
assertEquals(expected, apartment.toString());
}
//Test
public void O_TestoneBedRoomToString() {
String expected = \"10 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))\";
assertEquals(expected, onebedroom.toString());
}
//Test
public void P_TestTwoBedRoomToString() {
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))\";
assertEquals(expected, twobedrom.toString());
}
//Test
public void Q_TestThreeBedRoomToString() {
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))\";
assertEquals(expected, threebedroom.toString());
}
//Test
public void R_TestMasterRoomToString() {
String expected = \"Master bedroom: 3 (4 X 6 window)\";
assertEquals(expected, masterbedroom.toString());
}
//Test
public void S_TestGuestRoomToString() {
String expected = \"Guest room: 2 (5 X 6 window)\";
assertEquals(expected, guestroom.toString());
}
//Test
public void T_TestLivingRoomToString() {
String expected = \"Living room: 5 (6 X 8 window)\";
assertEquals(expected, livingroom.toString());
}
//Test
public void UTestBuildingToString() {
String expected = \"10 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))\ \" +
\"5 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))(Guest room: 2 (5 X 6 window))\ \" +
\"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))\ \" +
\"10 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))\ \" +
\"10 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))\ \" +
\"5 apartments with (Living room: 5 (6 X 8 window))(Master bedroom: 3 (4 X 6 window))(Guest room: 2 (5 X 6 window))\ \";
assertEquals(expected, building.toString());
}
}
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-0.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-1.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-2.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-3.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-4.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-5.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-6.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-7.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-8.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-9.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-10.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-11.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-12.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-13.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-14.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-15.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-16.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-17.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-18.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-19.webp)
![Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15) Templates Hwk6.java package hwk6; public class Hwk6 { public static void main(String[] args) { Apartment[] apartments = { new OneBedroom(20), new TwoBedroom(15)](/WebImages/8/templates-hwk6java-package-hwk6-public-class-hwk6-public-st-993315-1761511024-20.webp)