Question: /** * * all functions must be completed using the instance variable array (data). * it's an array of arrays of integers. * * for

/** * * all functions must be completed using the instance variable array (data). * it's an array of arrays of integers. * * for example: * * int[][] example1 = new int[2][3]; * * results in an array containing 2 sub-arrays, each containing 3 integers each. * * int[][] example2 = {{10,20},{40,50},{70,80}}; * * results in an array containing 3 sub-arrays - * first being {10, 20}, second begin {40, 50}, third being {70, 80} * * int[][] example3 = {{10,20,30},{40},null,{},{70,80}}; * * results in an array containing 5 sub-arrays - * first being {10, 20, 30}, second begin {40}, third being null, fourth being empty and fifth being {70, 80} * * You can traverse an array of arrays (i hate the term 2-dimensional) as: * * for(int i=0; i < example3.length; i++) { //for each sub-array * if(data[i] != null) { //ONLY if current sub-array is not null * for(int k=0; k < example3[i].length; k++) { //for each item in sub-array at index i * //data[i][k] gives sub-array i, item k * } * } * } * */ public class Analytics { public int[][] data;

/** * Populating the array - DO NOT MODIFY * @param source */ public Analytics(int[][] source) { data = source; }

/** * * @param idx1 index of sub-array * @param idx2 index of item within the sub-array * @return true if an item exists at sub-array at index idx1 and * at index idx2 within that sub-array, false otherwise */ public boolean itemExistsAt(int idx1, int idx2) { return false; }

/** * * @param idx index of the sub-array whose size is required * @return the number of items in the sub-array at passed index (idx) * if idx = 0, we want the size of the first sub-array * if idx = 1, we want the size of the second sub-array * ... * if the index passed is invalid, return 0 */ public int subsetSize(int idx) { return 0; }

/** * * @param idx * @return sum of all items in sub-array at index idx * return 0 if index is invalid */ public int sum(int idx) { return 0; }

@Test @Order(9) @Graded(description="testItemExistsAtP", marks=2.5) public void testItemExistsAtP() { assertFalse(aP.itemExistsAt(-1, 0)); assertFalse(aP.itemExistsAt(0, -1)); for(int i=0; i < 3; i++) { assertTrue(aP.itemExistsAt(i, 0)); assertTrue(aP.itemExistsAt(i, 1)); assertTrue(aP.itemExistsAt(i, 2)); } assertFalse(aP.itemExistsAt(4, 0)); assertFalse(aP.itemExistsAt(0, 3)); assertFalse(aP.itemExistsAt(0, 3 + (int)(Math.random()*1000))); currentMethodName = new Throwable().getStackTrace()[0].getMethodName(); } @Test @Order(10) @Graded(description="testItemExistsAtCR", marks=2.5) public void testItemExistsAtCR() { testItemExistsAtP(); assertFalse(aCR.itemExistsAt(-1, 0)); assertFalse(aCR.itemExistsAt(0, -1)); for(int i=0; i < 4; i++) { assertTrue(aCR.itemExistsAt(i, 0)); assertTrue(aCR.itemExistsAt(i, 1)); assertTrue(aCR.itemExistsAt(i, 2)); } assertFalse(aCR.itemExistsAt(5, 0)); assertFalse(aCR.itemExistsAt(0, 4)); assertFalse(aCR.itemExistsAt(0, 4 + (int)(Math.random()*1000))); currentMethodName = new Throwable().getStackTrace()[0].getMethodName(); } @Test @Order(11) @Graded(description="testItemExistsAtD", marks=2.5) public void testItemExistsAtD() { testItemExistsAtCR(); assertFalse(aD.itemExistsAt(-1, 0)); assertFalse(aD.itemExistsAt(0, -1)); for(int i=0; i < 11; i++) { for(int k=0; k < aD.data[i].length; k++) { assertTrue(aD.itemExistsAt(i, k)); } for(int k=aD.data[i].length; k < 20; k++) { assertFalse(aD.itemExistsAt(i, k)); } } assertFalse(aD.itemExistsAt(11, 0)); assertFalse(aEmpty.itemExistsAt(10, 0)); currentMethodName = new Throwable().getStackTrace()[0].getMethodName(); }

@Test @Order(12) @Graded(description="testItemExistsAtHD", marks=2.5) public void testItemExistsAtHD() { testItemExistsAtD(); assertFalse(aHD.itemExistsAt(-1, 0)); assertFalse(aHD.itemExistsAt(0, -1)); for(int i=0; i < 10; i++) { for(int k=0; k < aHD.data[i].length; k++) { assertTrue(aHD.itemExistsAt(i, k)); } for(int k=aHD.data[i].length; k < 20; k++) { assertFalse(aHD.itemExistsAt(i, k)); } } assertFalse(aHD.itemExistsAt(10, 0)); currentMethodName = new Throwable().getStackTrace()[0].getMethodName(); } @Test @Order(13) @Graded(description="testSubsetSizeP", marks=2.5) public void testSubsetSizeP() { assertEquals(0, aP.subsetSize(-1)); assertEquals(0, aP.subsetSize(4)); int[] pSize = {3, 3, 3, 3}; for(int i=0; i < pSize.length; i++) { assertEquals(pSize[i], aP.subsetSize(i)); } currentMethodName = new Throwable().getStackTrace()[0].getMethodName(); }

@Test @Order(14) @Graded(description="testSubsetSizeCR", marks=2.5) public void testSubsetSizeCR() { testSubsetSizeP(); assertEquals(0, aCR.subsetSize(-1)); assertEquals(0, aCR.subsetSize(5)); int[] crSize = {3, 3, 3, 3, 3}; for(int i=0; i < crSize.length; i++) { assertEquals(crSize[i], aCR.subsetSize(i)); } currentMethodName = new Throwable().getStackTrace()[0].getMethodName(); }

@Test @Order(15) @Graded(description="testSubsetSizeD", marks=2.5) public void testSubsetSizeD() { testSubsetSizeCR(); assertEquals(0, aD.subsetSize(-1)); assertEquals(0, aD.subsetSize(11)); int[] dSize = {3, 0, 2, 1, 5, 5, 5, 5, 5, 5, 5}; for(int i=0; i < dSize.length; i++) { assertEquals(dSize[i], aD.subsetSize(i)); } assertEquals(0, aEmpty.subsetSize(-1)); assertEquals(0, aEmpty.subsetSize(0)); assertEquals(0, aEmpty.subsetSize(1)); currentMethodName = new Throwable().getStackTrace()[0].getMethodName(); }

@Test @Order(16) @Graded(description="testSubsetSizeHD", marks=2.5) public void testSubsetSizeHD() { testSubsetSizeD(); assertEquals(0, aHD.subsetSize(-1)); assertEquals(0, aHD.subsetSize(10)); int[] hdSize = {3, 0, 2, 1, 5, 2, 1, 0, 1, 3}; for(int i=0; i < hdSize.length; i++) { assertEquals(hdSize[i], aHD.subsetSize(i)); } currentMethodName = new Throwable().getStackTrace()[0].getMethodName(); } @Test @Order(17) @Graded(description="testSumP", marks=2.5) public void testSumP() { assertEquals(80, aP.sum(0)); assertEquals(150, aP.sum(1)); assertEquals(100, aP.sum(2)); assertEquals(180, aP.sum(3)); assertEquals(0, aP.sum(-1)); assertEquals(0, aP.sum(4)); currentMethodName = new Throwable().getStackTrace()[0].getMethodName(); } @Test @Order(18) @Graded(description="testSumCR", marks=2.5) public void testSumCR() { testSumP(); assertEquals(-60, aCR.sum(0)); assertEquals(-30, aCR.sum(1)); assertEquals(80, aCR.sum(2)); assertEquals(60, aCR.sum(3)); assertEquals(-60, aCR.sum(4)); assertEquals(0, aCR.sum(-1)); assertEquals(0, aCR.sum(5)); currentMethodName = new Throwable().getStackTrace()[0].getMethodName(); }

@Test @Order(19) @Graded(description="testSumD", marks=2.5) public void testSumD() { testSumCR(); int[] sumD = {-60, 0, 50, -60, -100, -100, -100, -100, -100, -100, -100}; for(int i=0; i < sumD.length; i++) { assertEquals(sumD[i], aD.sum(i)); } assertEquals(0, aD.sum(-1)); assertEquals(0, aD.sum(11)); for(int i=-100; i<=100; i++) { assertEquals(0, aEmpty.sum(i)); } currentMethodName = new Throwable().getStackTrace()[0].getMethodName(); }

@Test @Order(20) @Graded(description="testSumHD", marks=2.5) public void testSumHD() { testSumD(); int[] sumHD = {-60, 0, 50, -60, -100, -40, -20, 0, 50, 60}; for(int i=0; i < sumHD.length; i++) { assertEquals(sumHD[i], aHD.sum(i)); } assertEquals(0, aHD.sum(-1)); assertEquals(0, aHD.sum(10));

currentMethodName = new Throwable().getStackTrace()[0].getMethodName(); }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!