From 7d8b74608ff4f2508e0f0af5f87a0bf0751fe8b5 Mon Sep 17 00:00:00 2001 From: Zafar Khaja Date: Tue, 28 Jan 2014 12:21:33 +0400 Subject: [PATCH] Add ILLEGAL enum constant to VersionParser.CharType --- .../github/zafarkhaja/semver/VersionParser.java | 16 ++++++++++++++++ .../semver/VersionParserCharTypeTest.java | 8 ++++++++ 2 files changed, 24 insertions(+) diff --git a/src/main/java/com/github/zafarkhaja/semver/VersionParser.java b/src/main/java/com/github/zafarkhaja/semver/VersionParser.java index 1911e61..25d1c5f 100644 --- a/src/main/java/com/github/zafarkhaja/semver/VersionParser.java +++ b/src/main/java/com/github/zafarkhaja/semver/VersionParser.java @@ -26,6 +26,7 @@ package com.github.zafarkhaja.semver; import com.github.zafarkhaja.semver.util.Stream; import com.github.zafarkhaja.semver.util.UnexpectedElementException; import java.util.ArrayList; +import java.util.EnumSet; import java.util.List; import static com.github.zafarkhaja.semver.VersionParser.CharType.*; @@ -111,6 +112,21 @@ class VersionParser implements Parser { public boolean isMatchedBy(Character chr) { return chr == null; } + }, + ILLEGAL { + /** + * {@inheritDoc} + */ + @Override + public boolean isMatchedBy(Character chr) { + EnumSet itself = EnumSet.of(ILLEGAL); + for (CharType type : EnumSet.complementOf(itself)) { + if (type.isMatchedBy(chr)) { + return false; + } + } + return true; + } }; } diff --git a/src/test/java/com/github/zafarkhaja/semver/VersionParserCharTypeTest.java b/src/test/java/com/github/zafarkhaja/semver/VersionParserCharTypeTest.java index a979436..4eb4d0d 100644 --- a/src/test/java/com/github/zafarkhaja/semver/VersionParserCharTypeTest.java +++ b/src/test/java/com/github/zafarkhaja/semver/VersionParserCharTypeTest.java @@ -80,4 +80,12 @@ public class VersionParserCharTypeTest { assertFalse(EOL.isMatchedBy('a')); assertFalse(EOL.isMatchedBy('0')); } + + @Test + public void shouldBeMatchedByIllegal() { + assertTrue(ILLEGAL.isMatchedBy('!')); + assertFalse(ILLEGAL.isMatchedBy('-')); + assertFalse(ILLEGAL.isMatchedBy('a')); + assertFalse(ILLEGAL.isMatchedBy('0')); + } }