From 5501f1f97d0a751004f8c15501645ec2728d7f28 Mon Sep 17 00:00:00 2001 From: Maarten Billemont Date: Sun, 3 Jun 2018 16:50:19 -0400 Subject: [PATCH] Allow filtering Java test cases. --- .../lyndir/masterpassword/MPAlgorithm.java | 8 ++++++++ .../com/lyndir/masterpassword/MPTests.java | 19 +++++++++++++++++-- .../masterpassword/MPMasterKeyTest.java | 11 ++++++----- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/core/java/algorithm/src/main/java/com/lyndir/masterpassword/MPAlgorithm.java b/core/java/algorithm/src/main/java/com/lyndir/masterpassword/MPAlgorithm.java index 04cde420..4c48ccbd 100644 --- a/core/java/algorithm/src/main/java/com/lyndir/masterpassword/MPAlgorithm.java +++ b/core/java/algorithm/src/main/java/com/lyndir/masterpassword/MPAlgorithm.java @@ -18,6 +18,8 @@ package com.lyndir.masterpassword; +import static com.lyndir.lhunath.opal.system.util.StringUtils.strf; + import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import com.google.common.primitives.UnsignedInteger; @@ -190,6 +192,12 @@ public abstract class MPAlgorithm { protected abstract byte[] toID(byte[] bytes); + @Override + public String toString() { + + return strf( "%d, %s", version().toInt(), getClass().getSimpleName() ); + } + /** * The algorithm iterations. */ diff --git a/core/java/tests/src/main/java/com/lyndir/masterpassword/MPTests.java b/core/java/tests/src/main/java/com/lyndir/masterpassword/MPTests.java index c48b41f2..dcf3acd4 100644 --- a/core/java/tests/src/main/java/com/lyndir/masterpassword/MPTests.java +++ b/core/java/tests/src/main/java/com/lyndir/masterpassword/MPTests.java @@ -25,7 +25,8 @@ import static com.lyndir.lhunath.opal.system.util.StringUtils.*; import com.google.common.primitives.UnsignedInteger; import com.lyndir.lhunath.opal.system.logging.Logger; import com.lyndir.lhunath.opal.system.util.NNSupplier; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; import javax.annotation.Nonnull; import javax.annotation.Nullable; import javax.xml.bind.annotation.XmlTransient; @@ -41,11 +42,21 @@ public class MPTests { @SuppressWarnings("UnusedDeclaration") private static final Logger logger = Logger.get( MPTests.class ); + private final Set filters = new HashSet<>(); + List cases; @Nonnull public List getCases() { - return checkNotNull( cases ); + if (filters.isEmpty()) + return checkNotNull( cases ); + + return checkNotNull( cases ).stream().filter( testCase -> { + for (final String filter : filters) + if (testCase.getIdentifier().startsWith( filter )) + return true; + return false; + } ).collect( Collectors.toList() ); } public Case getCase(final String identifier) { @@ -65,6 +76,10 @@ public class MPTests { } } + public boolean addFilters(final String... filters) { + return this.filters.addAll( Arrays.asList( filters ) ); + } + public static class Case { String identifier; diff --git a/core/java/tests/src/test/java/com/lyndir/masterpassword/MPMasterKeyTest.java b/core/java/tests/src/test/java/com/lyndir/masterpassword/MPMasterKeyTest.java index dccd6ba1..939e2f7e 100644 --- a/core/java/tests/src/test/java/com/lyndir/masterpassword/MPMasterKeyTest.java +++ b/core/java/tests/src/test/java/com/lyndir/masterpassword/MPMasterKeyTest.java @@ -39,6 +39,7 @@ public class MPMasterKeyTest { throws Exception { testSuite = new MPTestSuite(); + //testSuite.getTests().addFilters( "v0" ); } @Test @@ -53,20 +54,20 @@ public class MPMasterKeyTest { assertEquals( CodeUtils.encodeHex( masterKey.getKeyID( testCase.getAlgorithm() ) ), testCase.getKeyID(), - "[testMasterKey] keyID mismatch: " + testCase ); + "[testMasterKey] keyID mismatch for test case: " + testCase ); // Test invalidation masterKey.invalidate(); try { masterKey.getKeyID( testCase.getAlgorithm() ); - fail( "[testMasterKey] invalidate ineffective: " + testCase ); + fail( "[testMasterKey] invalidate ineffective for test case: " + testCase ); } catch (final MPKeyUnavailableException ignored) { } assertNotEquals( masterPassword, testCase.getMasterPassword().toCharArray(), - "[testMasterKey] masterPassword not wiped: " + testCase ); + "[testMasterKey] masterPassword not wiped for test case: " + testCase ); return true; } ); @@ -87,7 +88,7 @@ public class MPMasterKeyTest { testCase.getKeyContext(), testCase.getResultType(), null ), testCase.getResult(), - "[testSiteResult] result mismatch: " + testCase ); + "[testSiteResult] result mismatch for test case: " + testCase ); return true; } ); @@ -115,7 +116,7 @@ public class MPMasterKeyTest { assertEquals( result, password, - "[testSiteState] state mismatch: " + testCase ); + "[testSiteState] state mismatch for test case: " + testCase ); } }