Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/keenwrite.git

Use range validator for exporting chapter subsets

AuthorDaveJarvis <email>
Date2022-08-27 15:36:07 GMT-0700
Commit41f5493ab2ce8a6c7301712b5abc7ade16ba07b1
Parent964deab
Delta90 lines added, 0 lines removed, 90-line increase
src/test/java/com/keenwrite/util/RangeValidatorTest.java
+package com.keenwrite.util;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * Tests that the range format specifiers correctly identify integer values
+ * inside and outside the range.
+ */
+class RangeValidatorTest {
+ @Test
+ void test_Validation_SingleRange_Valid() {
+ // Arbitrary start and end.
+ final var lo = 1;
+ final var hi = 5;
+ final var validator = new RangeValidator( lo + "-" + hi );
+
+ for( int i = lo; i < hi; i++ ) {
+ assertTrue( validator.test( i ) );
+ }
+
+ // Arbitrary bounds checks.
+ assertFalse( validator.test( lo - 1 ) );
+ assertFalse( validator.test( lo - 11 ) );
+ assertFalse( validator.test( hi + 1 ) );
+ assertFalse( validator.test( hi + 11 ) );
+ }
+
+ @Test
+ void test_Validation_SingleValue_Valid() {
+ // Arbitrary.
+ final var i = 7;
+ final var validator = new RangeValidator( Integer.toString( i ) );
+
+ assertTrue( validator.test( i ) );
+ }
+
+ @Test
+ void test_Validation_UnboundedMaxIntegerRange_Valid() {
+ // Arbitrary.
+ final var lo = 11;
+ final var validator = new RangeValidator( lo + "-" );
+
+ // Arbitrary end value.
+ for( int i = lo; i < lo + 101; i++ ) {
+ assertTrue( validator.test( i ) );
+ }
+
+ assertFalse( validator.test( 10 ) );
+ }
+
+ @Test
+ void test_Validation_UnboundedMinIntegerRange_Valid() {
+ // Arbitrary.
+ final var hi = 5;
+ final var validator = new RangeValidator( "-" + hi );
+
+ for( int i = 1; i < hi; i++ ) {
+ assertTrue( validator.test( i ) );
+ }
+
+ assertFalse( validator.test( 0 ) );
+ assertFalse( validator.test( -1 ) );
+ }
+
+ @Test
+ void test_Validation_MultipleRanges_Valid() {
+ // Arbitrary.
+ final var validator = new RangeValidator( "-5, 7-11, 13, 15-20, 30-" );
+
+ assertTrue( validator.test( 1 ) );
+ assertTrue( validator.test( 5 ) );
+ assertTrue( validator.test( 7 ) );
+ assertTrue( validator.test( 11 ) );
+ assertTrue( validator.test( 13 ) );
+ assertTrue( validator.test( 15 ) );
+ assertTrue( validator.test( 20 ) );
+ assertTrue( validator.test( 30 ) );
+ assertTrue( validator.test( 101 ) );
+
+ assertFalse( validator.test( -1 ) );
+ assertFalse( validator.test( 0 ) );
+ assertFalse( validator.test( 6 ) );
+ assertFalse( validator.test( 12 ) );
+ assertFalse( validator.test( 14 ) );
+ assertFalse( validator.test( 21 ) );
+ assertFalse( validator.test( 29 ) );
+ }
+}