Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/keenwrite.git
src/main/java/com/keenwrite/util/CyclicIterator.java
private int computeIndex( final int direction ) {
final var i = mIndex + direction;
- final var result = i < 0 ? list.size() - 1 : (i % list.size());
+ final var size = list.size();
+ final var result = i < 0
+ ? size - 1
+ : size == 0 ? 0 : i % size;
// Ensure the invariant holds.
- assert 0 <= result && result < list.size();
+ assert 0 <= result && result < size || size == 0 && result <= 0;
return result;
src/main/resources/fonts/noto-serif/NotoSerif-Bold.ttf
Binary files differ
src/main/resources/fonts/noto-serif/NotoSerif-BoldItalic.ttf
Binary files differ
src/main/resources/fonts/noto-serif/NotoSerif-Italic.ttf
Binary files differ
src/main/resources/fonts/noto-serif/NotoSerif-Regular.ttf
Binary files differ
src/test/java/com/keenwrite/util/CyclicIteratorTest.java
import java.util.ListIterator;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
/**
assertEquals( iterator.previous(), list.get( list.size() - 1 ) );
+ }
+
+ @Test
+ public void test_Empty_Next_Exception() {
+ final var list = List.of();
+ final var iterator = CyclicIterator.of( list );
+ assertThrows( ArrayIndexOutOfBoundsException.class, iterator::next );
+ }
+
+ @Test
+ public void test_Empty_Previous_Exception() {
+ final var list = List.of();
+ final var iterator = CyclicIterator.of( list );
+ assertThrows( ArrayIndexOutOfBoundsException.class, iterator::previous );
}
}

Update Noto Serif font, fix cyclic iterator invariant

Author DaveJarvis <email>
Date 2020-12-13 15:16:23 GMT-0800
Commit 69a550d79a21c8da004548ae902f5cb50c59614b
Parent fcc94d9
Delta 20 lines added, 4 lines removed, 16-line increase