✅ The verified answer to this question is available below. Our community-reviewed solutions help you understand the material better.
Assume you specified the following test cases based on the requirements of an IoT (Internet of Things) system that is used for a smart home:
class TestMyIoTSystem { MyIoTSystem s = null; @BeforeEach void setUp() throws Exception { s = new MyIoTSystem("Home"); } // Test: Adding a home automation item (name, quantity) @Test void test1() { s.add("Vacuum cleaner",2); assertTrue(s.has("Vacuum cleaner")); } // Test: Adding a home automation item, querying the quantity of the item in the system @Test void test2() { s.add("Irrigation system",1); assertEquals(1,s.getQuantity("Irrigation system")); } // Test: Adding a home automation item, removing an existing item @Test void test3() { s.add("Irrigation system",1); s.add("Vacuum cleaner",1); assertEquals("Removed successfully",s.remove("Vacuum cleaner")); } // Test: Adding a home automation item, removing a non-existing item which should throw an exception @Test void test4() { s.add("Irrigation system",1); assertThrows(Exception.class, () -> s.remove("Vacuum cleaner")); }}
The following code has been implemented to fulfill the test cases following test-driven development:
public class MyIoTSystem { private final String name; private List<IoTComponent> list; private class IoTComponent { private String name; private int quantity; IoTComponent(String name, int quantity){ this.name = name; this.quantity = quantity; } public String getName () { return name; } public int getQuantity() { return quantity; } } public MyIoTSystem(String string) { name = string; list = new ArrayList<>(); } public void add(String name, int quantity) { list.add(new IoTComponent(name,quantity)); } public boolean has(String string) { for (IoTComponent c : list){ if (c.getName().compareTo(string) == 0) { return true; } } return false; } public String remove(String string) { for (IoTComponent c : list){ if (c.getName().compareTo(string) == 0) { list.remove(c); return ("Removed successfully"); } } return null; }}
Which of the test cases need additional implementations to run successfully?
a) test1()
b) test2()
c) test3()
d) test4()