Add oving 2
This commit is contained in:
75
src/test/java/oving2/DigitTest.java
Normal file
75
src/test/java/oving2/DigitTest.java
Normal file
@@ -0,0 +1,75 @@
|
||||
package oving2;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class DigitTest {
|
||||
|
||||
private Digit digit;
|
||||
|
||||
private void testIncrement(int base, boolean checkValue, boolean checkToString) {
|
||||
digit = new Digit(base);
|
||||
int i = 0;
|
||||
String digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
|
||||
while (i < base) {
|
||||
if (checkValue) {
|
||||
assertEquals(i % base, digit.getValue());
|
||||
}
|
||||
if (checkToString) {
|
||||
assertEquals(String.valueOf(digits.charAt(i % base)),
|
||||
digit.toString().toUpperCase());
|
||||
}
|
||||
|
||||
boolean overflow = digit.increment();
|
||||
i++;
|
||||
|
||||
if (checkValue) {
|
||||
assertEquals(i % base == 0, overflow);
|
||||
assertEquals(i % base, digit.getValue());
|
||||
}
|
||||
if (checkToString) {
|
||||
assertEquals(String.valueOf(digits.charAt(i % base)),
|
||||
digit.toString().toUpperCase());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void testIncrement(boolean checkValue, boolean checkToString) {
|
||||
for (int base = 2; base <= 16; base++) {
|
||||
this.testIncrement(base, checkValue, checkToString);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("Private fields")
|
||||
public void testPrivateFields() {
|
||||
TestHelper.checkIfFieldsPrivate(Digit.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDigit() {
|
||||
digit = new Digit(10);
|
||||
assertEquals(0, digit.getValue());
|
||||
assertEquals(10, digit.getBase());
|
||||
|
||||
assertThrows(IllegalArgumentException.class, () -> {
|
||||
digit = new Digit(-1);
|
||||
}, "Should not be able to create digit with negative base");
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("Digit should increment correctly")
|
||||
public void testIncrement() {
|
||||
this.testIncrement(true, false);
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("Digit should be displayed by correct characters. For example 10 in base 16 "
|
||||
+ "should be displayed as A")
|
||||
public void testToString() {
|
||||
this.testIncrement(false, true);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user