From 6a9458c5fb72d56a3ac5bb4caecfd2216bd23713 Mon Sep 17 00:00:00 2001 From: Kurtis LoVerde Date: Sat, 16 Jun 2018 10:28:31 -0400 Subject: [PATCH] Added getPrintName --- CHANGELOG.md | 5 +++ README.md | 4 +-- gradle.properties | 4 +-- .../compass/CompassDirection.java | 1 + .../compass/CompassDirection16.java | 8 +++++ .../compass/CompassDirection32.java | 8 +++++ .../compass/CompassDirection8.java | 8 +++++ .../compass/CompassDirection16Test.java | 20 +++++++++++ .../compass/CompassDirection32Test.java | 36 +++++++++++++++++++ .../compass/CompassDirection8Test.java | 12 +++++++ 10 files changed, 102 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f5c260..e1ba119 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +# Release 4.2 (June 16, 2018) + +* Added a `getPrintName` method to the `CompassDirection` classes. This returns a grammatically correct version of `name()`, changing all letters to lowercase and all underscores to spaces + + # Release 4.1.1 (June 13, 2018) * Fixed incorrect exception messages. When supplying an invalid value to the Latitude(double) or Longitude(double) constructors, the resulting exception message said that the lower bound for valid values was 0. This is incorrect when using floating-point notation; valid values can be negative. The actual validation logic was correct - this was only an issue with the literal text of the error message. diff --git a/README.md b/README.md index 6704b50..ed8b24c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -GeographicCoordinate 4.1.1 -========================== +GeographicCoordinate 4.2 +======================== See LICENSE for this software's licensing terms. diff --git a/gradle.properties b/gradle.properties index 19d162b..86173e0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,8 +6,8 @@ buildScriptsDir=../BuildScripts # BuildScripts configuration projectName=GeographicCoordinate -releaseVersion=4.1.1 -specVersion=3.0 +releaseVersion=4.2 +specVersion=4.2 javaSourceCompatibility=1.10 javaTargetCompatibility=1.10 jarName=geographiccoordinate diff --git a/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection.java b/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection.java index fcddefc..755a404 100644 --- a/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection.java +++ b/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection.java @@ -39,6 +39,7 @@ public interface CompassDirection { public String getAbbreviation(); + public String getPrintName(); public BigDecimal getMinimum(); public BigDecimal getMiddle(); public BigDecimal getMaximum(); diff --git a/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection16.java b/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection16.java index 1b8b670..e865fb2 100644 --- a/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection16.java +++ b/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection16.java @@ -90,6 +90,14 @@ public String getAbbreviation() { return abbreviation; } + /** + * @return A visually friendly, grammatically correct transformation of {@link #name()}, with all lowercase letters, and underscores changed to spaces + */ + @Override + public String getPrintName() { + return name().toLowerCase().replaceAll( "_", " " ); + } + /** * @return The lower bound for a given direction */ diff --git a/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection32.java b/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection32.java index 8234110..6b52a0d 100644 --- a/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection32.java +++ b/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection32.java @@ -106,6 +106,14 @@ public String getAbbreviation() { return abbreviation; } + /** + * @return A visually friendly, grammatically correct transformation of {@link #name()}, with all lowercase letters, and underscores changed to spaces + */ + @Override + public String getPrintName() { + return name().toLowerCase().replaceAll( "_", " " ); + } + /** * @return The lower bound for a given direction */ diff --git a/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection8.java b/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection8.java index cda9025..9bc3cbc 100644 --- a/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection8.java +++ b/src/main/java/org/loverde/geographiccoordinate/compass/CompassDirection8.java @@ -82,6 +82,14 @@ public String getAbbreviation() { return abbreviation; } + /** + * @return A visually friendly, grammatically correct transformation of {@link #name()}, with all lowercase letters, and underscores changed to spaces + */ + @Override + public String getPrintName() { + return name().toLowerCase().replaceAll( "_", " " ); + } + /** * @return The lower bound for a given direction */ diff --git a/src/test/java/org/loverde/geographiccoordinate/compass/CompassDirection16Test.java b/src/test/java/org/loverde/geographiccoordinate/compass/CompassDirection16Test.java index 5e3d5c2..ee4da7b 100644 --- a/src/test/java/org/loverde/geographiccoordinate/compass/CompassDirection16Test.java +++ b/src/test/java/org/loverde/geographiccoordinate/compass/CompassDirection16Test.java @@ -176,4 +176,24 @@ public void getByBearing_invalidMax() { thrown.expectMessage( "Bearing 360.000000000001 is not in range [0, 360]" ); CompassDirection16.getByBearing( new BigDecimal("360.000000000001") ); } + + @Test + public void getPrintName() { + assertEquals( "east", CompassDirection16.EAST.getPrintName() ); + assertEquals( "east northeast", CompassDirection16.EAST_NORTHEAST.getPrintName() ); + assertEquals( "east southeast", CompassDirection16.EAST_SOUTHEAST.getPrintName() ); + assertEquals( "north", CompassDirection16.NORTH.getPrintName() ); + assertEquals( "north northeast", CompassDirection16.NORTH_NORTHEAST.getPrintName() ); + assertEquals( "north northwest", CompassDirection16.NORTH_NORTHWEST.getPrintName() ); + assertEquals( "northeast", CompassDirection16.NORTHEAST.getPrintName() ); + assertEquals( "northwest", CompassDirection16.NORTHWEST.getPrintName() ); + assertEquals( "south", CompassDirection16.SOUTH.getPrintName() ); + assertEquals( "south southeast", CompassDirection16.SOUTH_SOUTHEAST.getPrintName() ); + assertEquals( "south southwest", CompassDirection16.SOUTH_SOUTHWEST.getPrintName() ); + assertEquals( "southeast", CompassDirection16.SOUTHEAST.getPrintName() ); + assertEquals( "southwest", CompassDirection16.SOUTHWEST.getPrintName() ); + assertEquals( "west", CompassDirection16.WEST.getPrintName() ); + assertEquals( "west northwest", CompassDirection16.WEST_NORTHWEST.getPrintName() ); + assertEquals( "west southwest", CompassDirection16.WEST_SOUTHWEST.getPrintName() ); + } } diff --git a/src/test/java/org/loverde/geographiccoordinate/compass/CompassDirection32Test.java b/src/test/java/org/loverde/geographiccoordinate/compass/CompassDirection32Test.java index 5d92992..9473e1c 100644 --- a/src/test/java/org/loverde/geographiccoordinate/compass/CompassDirection32Test.java +++ b/src/test/java/org/loverde/geographiccoordinate/compass/CompassDirection32Test.java @@ -240,4 +240,40 @@ public void getByBearing_invalidMax() { thrown.expectMessage( "Bearing 360.000000000001 is not in range [0, 360]" ); CompassDirection32.getByBearing( new BigDecimal("360.000000000001") ); } + + @Test + public void getPrintName() { + assertEquals( "north", CompassDirection32.NORTH.getPrintName() ); + assertEquals( "north by east", CompassDirection32.NORTH_BY_EAST.getPrintName() ); + assertEquals( "north northeast", CompassDirection32.NORTH_NORTHEAST.getPrintName() ); + assertEquals( "northeast by north", CompassDirection32.NORTHEAST_BY_NORTH.getPrintName() ); + assertEquals( "northeast", CompassDirection32.NORTHEAST.getPrintName() ); + assertEquals( "northeast by east", CompassDirection32.NORTHEAST_BY_EAST.getPrintName() ); + assertEquals( "east northeast", CompassDirection32.EAST_NORTHEAST.getPrintName() ); + assertEquals( "east by north", CompassDirection32.EAST_BY_NORTH.getPrintName() ); + assertEquals( "east", CompassDirection32.EAST.getPrintName() ); + assertEquals( "east by south", CompassDirection32.EAST_BY_SOUTH.getPrintName() ); + assertEquals( "east southeast", CompassDirection32.EAST_SOUTHEAST.getPrintName() ); + assertEquals( "southeast by east", CompassDirection32.SOUTHEAST_BY_EAST.getPrintName() ); + assertEquals( "southeast", CompassDirection32.SOUTHEAST.getPrintName() ); + assertEquals( "southeast by south", CompassDirection32.SOUTHEAST_BY_SOUTH.getPrintName() ); + assertEquals( "south southeast", CompassDirection32.SOUTH_SOUTHEAST.getPrintName() ); + assertEquals( "south by east", CompassDirection32.SOUTH_BY_EAST.getPrintName() ); + assertEquals( "south", CompassDirection32.SOUTH.getPrintName() ); + assertEquals( "south by west", CompassDirection32.SOUTH_BY_WEST.getPrintName() ); + assertEquals( "south southwest", CompassDirection32.SOUTH_SOUTHWEST.getPrintName() ); + assertEquals( "southwest by south", CompassDirection32.SOUTHWEST_BY_SOUTH.getPrintName() ); + assertEquals( "southwest", CompassDirection32.SOUTHWEST.getPrintName() ); + assertEquals( "southwest by west", CompassDirection32.SOUTHWEST_BY_WEST.getPrintName() ); + assertEquals( "west southwest", CompassDirection32.WEST_SOUTHWEST.getPrintName() ); + assertEquals( "west by south", CompassDirection32.WEST_BY_SOUTH.getPrintName() ); + assertEquals( "west", CompassDirection32.WEST.getPrintName() ); + assertEquals( "west by north", CompassDirection32.WEST_BY_NORTH.getPrintName() ); + assertEquals( "west northwest", CompassDirection32.WEST_NORTHWEST.getPrintName() ); + assertEquals( "northwest by west", CompassDirection32.NORTHWEST_BY_WEST.getPrintName() ); + assertEquals( "northwest", CompassDirection32.NORTHWEST.getPrintName() ); + assertEquals( "northwest by north", CompassDirection32.NORTHWEST_BY_NORTH.getPrintName() ); + assertEquals( "north northwest", CompassDirection32.NORTH_NORTHWEST.getPrintName() ); + assertEquals( "north by west", CompassDirection32.NORTH_BY_WEST.getPrintName() ); + } } diff --git a/src/test/java/org/loverde/geographiccoordinate/compass/CompassDirection8Test.java b/src/test/java/org/loverde/geographiccoordinate/compass/CompassDirection8Test.java index 2f35aa2..2c43e83 100644 --- a/src/test/java/org/loverde/geographiccoordinate/compass/CompassDirection8Test.java +++ b/src/test/java/org/loverde/geographiccoordinate/compass/CompassDirection8Test.java @@ -144,4 +144,16 @@ public void getByBearing_invalidMax() { thrown.expectMessage( "Bearing 360.000000000001 is not in range [0, 360]" ); CompassDirection8.getByBearing( new BigDecimal("360.000000000001") ); } + + @Test + public void getPrintName() { + assertEquals( "east", CompassDirection8.EAST.getPrintName() ); + assertEquals( "north", CompassDirection8.NORTH.getPrintName() ); + assertEquals( "northeast", CompassDirection8.NORTHEAST.getPrintName() ); + assertEquals( "northwest", CompassDirection8.NORTHWEST.getPrintName() ); + assertEquals( "south", CompassDirection8.SOUTH.getPrintName() ); + assertEquals( "southeast", CompassDirection8.SOUTHEAST.getPrintName() ); + assertEquals( "southwest", CompassDirection8.SOUTHWEST.getPrintName() ); + assertEquals( "west", CompassDirection8.WEST.getPrintName() ); + } }