Skip to content

Commit

Permalink
Add generic testers for KeyFormat and TwoWayKey2StringMapper implemen…
Browse files Browse the repository at this point in the history
…tations.
  • Loading branch information
pferraro committed Dec 4, 2017
1 parent 657d99f commit 2ba6896
Show file tree
Hide file tree
Showing 4 changed files with 129 additions and 3 deletions.
16 changes: 16 additions & 0 deletions clustering/infinispan/spi/pom.xml
Expand Up @@ -65,4 +65,20 @@
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
@@ -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<K> {

private final KeyFormat<K> format;
private final BiConsumer<K, K> assertion;

public KeyFormatTester(KeyFormat<K> format) {
this(format, Assert::assertEquals);
}

public KeyFormatTester(KeyFormat<K> format, BiConsumer<K, K> 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);
}
}
@@ -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);
}
}
Expand Up @@ -37,15 +37,14 @@ public class SimpleKeyFormatTestCase {
public void test() {
Function<String, Object> parser = mock(Function.class);
Function<Object, String> formatter = mock(Function.class);
KeyFormat<Object> keyFormat = new SimpleKeyFormat<>(Object.class, parser, formatter);
KeyFormat<Object> format = new SimpleKeyFormat<>(Object.class, parser, formatter);

Object object = new Object();
String result = "foo";

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);
}
}

0 comments on commit 2ba6896

Please sign in to comment.