From 2ba6896425ad0343069fa37d17478839c0baedf1 Mon Sep 17 00:00:00 2001 From: Paul Ferraro Date: Thu, 30 Nov 2017 13:02:02 -0500 Subject: [PATCH] Add generic testers for KeyFormat and TwoWayKey2StringMapper implementations. --- clustering/infinispan/spi/pom.xml | 16 +++++ .../spi/persistence/KeyFormatTester.java | 60 +++++++++++++++++++ .../spi/persistence/KeyMapperTester.java | 51 ++++++++++++++++ .../persistence/SimpleKeyFormatTestCase.java | 5 +- 4 files changed, 129 insertions(+), 3 deletions(-) create mode 100644 clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/KeyFormatTester.java create mode 100644 clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/KeyMapperTester.java diff --git a/clustering/infinispan/spi/pom.xml b/clustering/infinispan/spi/pom.xml index 98b7244e8e96..3ca434f76aec 100644 --- a/clustering/infinispan/spi/pom.xml +++ b/clustering/infinispan/spi/pom.xml @@ -65,4 +65,20 @@ test + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + test-jar + + + + + + diff --git a/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/KeyFormatTester.java b/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/KeyFormatTester.java new file mode 100644 index 000000000000..8cbb6c4cce98 --- /dev/null +++ b/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/KeyFormatTester.java @@ -0,0 +1,60 @@ +/* + * JBoss, Home of Professional Open Source. + * Copyright 2017, Red Hat, Inc., and individual contributors + * as indicated by the @author tags. See the copyright.txt file in the + * distribution for a full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.wildfly.clustering.infinispan.spi.persistence; + +import static org.junit.Assert.assertTrue; + +import java.util.function.BiConsumer; + +import org.junit.Assert; + +/** + * Tester for a {@link KeyFormat}. + * @author Paul Ferraro + */ +public class KeyFormatTester { + + private final KeyFormat format; + private final BiConsumer assertion; + + public KeyFormatTester(KeyFormat format) { + this(format, Assert::assertEquals); + } + + public KeyFormatTester(KeyFormat format, BiConsumer assertion) { + this.format = format; + this.assertion = assertion; + } + + public void test(K subject) { + assertTrue(this.format.getTargetClass().isInstance(subject)); + + String formatted = this.format.format(subject); + + K result = this.format.parse(formatted); + + assertTrue(this.format.getTargetClass().isInstance(result)); + + this.assertion.accept(subject, result); + } +} diff --git a/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/KeyMapperTester.java b/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/KeyMapperTester.java new file mode 100644 index 000000000000..73aad55f883e --- /dev/null +++ b/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/KeyMapperTester.java @@ -0,0 +1,51 @@ +/* + * JBoss, Home of Professional Open Source. + * Copyright 2017, Red Hat, Inc., and individual contributors + * as indicated by the @author tags. See the copyright.txt file in the + * distribution for a full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.wildfly.clustering.infinispan.spi.persistence; + +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertEquals; + +import org.infinispan.persistence.keymappers.TwoWayKey2StringMapper; + +/** + * Tester for a {@link TwoWayKey2StringMapper}. + * @author Paul Ferraro + */ +public class KeyMapperTester { + + private final TwoWayKey2StringMapper mapper; + + public KeyMapperTester(TwoWayKey2StringMapper mapper) { + this.mapper = mapper; + } + + public void test(Object key) { + assertTrue(this.mapper.isSupportedType(key.getClass())); + + String mapping = this.mapper.getStringMapping(key); + + Object result = this.mapper.getKeyMapping(mapping); + + assertEquals(key, result); + } +} diff --git a/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/SimpleKeyFormatTestCase.java b/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/SimpleKeyFormatTestCase.java index bf7775211ec7..f6cbced22653 100644 --- a/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/SimpleKeyFormatTestCase.java +++ b/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/SimpleKeyFormatTestCase.java @@ -37,7 +37,7 @@ public class SimpleKeyFormatTestCase { public void test() { Function parser = mock(Function.class); Function formatter = mock(Function.class); - KeyFormat keyFormat = new SimpleKeyFormat<>(Object.class, parser, formatter); + KeyFormat format = new SimpleKeyFormat<>(Object.class, parser, formatter); Object object = new Object(); String result = "foo"; @@ -45,7 +45,6 @@ public void test() { when(formatter.apply(object)).thenReturn(result); when(parser.apply(result)).thenReturn(object); - Assert.assertSame(result, keyFormat.format(object)); - Assert.assertSame(object, keyFormat.parse(result)); + new KeyFormatTester<>(format, Assert::assertSame).test(object); } }