Test 1 Version A marking scheme
Fields
1 / 1 -is there a field public static final int SIDES equal to 6?
Constructors
0 / 1 -is there a private constructor?
Methods
-neededToRoll
0 / 1 -returns the correct value when (value % SIDES != -0)?
0 / 2 -returns the correct value when (value % SIDES == -0)?
-median
1 / 1 -correctly throws the expected exception?
0 / 2 -returns the correct value when dice.size() is even?
2 / 2 -returns the correct value when dice.size() is odd?
-isSorted
0 / 1 -is there a loop over the dice?
0 / 2 -in the loop body, are adjacent elements compared correctly?
0 / 1 -is the correct result returned?
-isFullHouse
0 / 4 -is the correct value returned?
--------------------
TA Comments:
-every utility class has a private constructor
-neededToRoll: See solutions for complete "neededToRoll" implemetation
-median: your code does not work for lists of even size.
-median: See solutions for complete "median" implemetation
-isSorted: Using advanced for loop form does not work here.
-isSorted: See solutions for complete "isSorted" implemetation
-see solutions for complete "isFullHouse" implemetation
--------------------
Unit tester output:
YOUR SUMBISSION FAILED SOME UNIT TESTS
Here is the test output:
java -classpath .:/home/burton/work/teaching/2017F/2030/marking/secEtest1A/_jar/* org.junit.runner.JUnitCore test1.Test1Suite
JUnit version 4.12
.E..E.E..E.E.E.E
Time: 0.075
There were 7 failures:
1) test00(test1.DiceUtilTest)
java.lang.AssertionError: found a non-private constructor
2) test02_neededToRoll(test1.DiceUtilTest)
java.lang.AssertionError: neededToRoll(2) failed expected:<1> but was:<7>
3) test03_neededToRoll(test1.DiceUtilTest)
java.lang.AssertionError: neededToRoll(6) failed expected:<1> but was:<31>
4) test05_median(test1.DiceUtilTest)
java.lang.AssertionError: median([3, 4]) failed expected:<3> but was:<4>
5) test06_isSorted(test1.DiceUtilTest)
java.lang.IndexOutOfBoundsException: Index: 3, Size: 1
6) test07_isFullHouse(test1.DiceUtilTest)
java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
7) test08_isFullHouse(test1.DiceUtilTest)
java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
FAILURES!!!
Tests run: 9, Failures: 7
--------------------
Your submission:
package test1;
import java.util.ArrayList; // you may or may not need this
import java.util.Collections;
import java.util.List;
/**
* A utility class that provides methods related to 6-sided dice.
*
*/
public class DiceUtil {
public static final int SIDES = 6;
public static int neededToRoll(int value) {
int min = 1;
if (value > 0) {
for (int i = 1; i < value; i++) {
min += 6;
}
}
return min;
}
public static int median(List<Integer> dice) {
if (dice.size() == 0) {
throw new IllegalArgumentException();
}
int n = dice.size() / 2;
int median = dice.get(n);
return median;
}
public static boolean isSorted(List<Integer> dice) {
for (Integer d : dice) {
if (dice.get(d) <= dice.get(d + 1)) {
return true;
} else {
return false;
}
}
return true;
}
public static boolean isFullHouse(List<Integer> dice) {
// consider using Collections.sort
List<Integer> Two = new ArrayList();
List<Integer> Three = new ArrayList();
List<Integer> Five = new ArrayList();
for (Integer d : dice) {
Collections.sort(dice);
if (dice.get(d) == dice.get(d + 2)){
Three.add(d);
}
if (dice.get(d) == dice.get(d + 1)) {
Two.add(d);
}
if (dice.get(d) == dice.get(d + 4)) {
Five.add(d);
}
/*
if (List<Integer> Three && List<Integer> Two) {
return true;
}
if (List<Integer> Five) {
return false;
}
*/
}
return true;
}
}
--------------------
Written answers marking scheme
A
0 / 2 is a suitable definition given?
B
0.5 / 3 are the values for a, b, and c correct?
C
0 / 1 does the method description closely match the solution?
2 / 2 do the @param, @return, and @throws documentation exactly
match the solution?
D
2 / 2 is there a correct test case and suitable explanation?
2 / 2 is there a second correct test case and suitable explanation?
--------------------
TA Comments
A:
- Static means that the field belongs to the class (not to any particular object of the class).
B:
- value of "a" is "400a" not "400"
- value of "b" shall be the address of the myString object not the string value
- c is primative data type so c value is 5
C:
- Description is missing
--------------------
Your submission:
A. The keyword static means
B.
a: 400
b: 800a
c: abcabcabcabcabc
C.
/**
* @param median the value of the die in the middle of the list.
* @param dice a list of dice.
* @throw IllegalArgumentException if the list of dice is empty.
* @return the median value of the dice in the list.
*/
D.
Input list: []
Expected result: IllegalArgumentException is thrown.
explanation: Test if IllegalArgumentException will be thrown when the list of dice is empty.
Input list: [1]
Expected result: 1
explanation: Test when the size of dice is one.
--------------------