diff options
author | cdamus | 2013-03-20 21:22:07 +0000 |
---|---|---|
committer | cdamus | 2013-03-20 21:22:07 +0000 |
commit | 2ebc249b7c897c2e1f7711349665ab84f2628aa4 (patch) | |
tree | 74a1bad22fc143ccab4d7a097f969dbccd928801 | |
parent | 5c73979afe41598d395a419b2601fbd12c07ce3d (diff) | |
download | org.eclipse.papyrus-2ebc249b7c897c2e1f7711349665ab84f2628aa4.tar.gz org.eclipse.papyrus-2ebc249b7c897c2e1f7711349665ab84f2628aa4.tar.xz org.eclipse.papyrus-2ebc249b7c897c2e1f7711349665ab84f2628aa4.zip |
Improving test coverage.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=290952
3 files changed, 264 insertions, 0 deletions
diff --git a/tests/cdo/org.eclipse.papyrus.cdo.core.tests/src/org/eclipse/papyrus/cdo/core/tests/AbstractPapyrusCDOTest.java b/tests/cdo/org.eclipse.papyrus.cdo.core.tests/src/org/eclipse/papyrus/cdo/core/tests/AbstractPapyrusCDOTest.java index 9b40cc1ccf8..632c9bf226d 100644 --- a/tests/cdo/org.eclipse.papyrus.cdo.core.tests/src/org/eclipse/papyrus/cdo/core/tests/AbstractPapyrusCDOTest.java +++ b/tests/cdo/org.eclipse.papyrus.cdo.core.tests/src/org/eclipse/papyrus/cdo/core/tests/AbstractPapyrusCDOTest.java @@ -51,6 +51,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.rules.TestName; +import com.google.common.collect.Iterables; import com.google.common.collect.Maps; /** @@ -269,4 +270,17 @@ public abstract class AbstractPapyrusCDOTest { } }; } + + public static <T> Matcher<Iterable<T>> hasSize(final int size) { + return new BaseMatcher<Iterable<T>>() { + + public void describeTo(Description description) { + description.appendText("has size ").appendValue(size); + } + + public boolean matches(Object item) { + return Iterables.size((Iterable<?>)item) == size; + } + }; + } } diff --git a/tests/cdo/org.eclipse.papyrus.cdo.core.tests/src/org/eclipse/papyrus/cdo/core/util/tests/CDOFunctionsTest.java b/tests/cdo/org.eclipse.papyrus.cdo.core.tests/src/org/eclipse/papyrus/cdo/core/util/tests/CDOFunctionsTest.java index f3eb184b565..ef3169b243d 100644 --- a/tests/cdo/org.eclipse.papyrus.cdo.core.tests/src/org/eclipse/papyrus/cdo/core/util/tests/CDOFunctionsTest.java +++ b/tests/cdo/org.eclipse.papyrus.cdo.core.tests/src/org/eclipse/papyrus/cdo/core/util/tests/CDOFunctionsTest.java @@ -11,18 +11,30 @@ *****************************************************************************/ package org.eclipse.papyrus.cdo.core.util.tests; +import static org.hamcrest.CoreMatchers.both; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.hasItem; +import static org.hamcrest.CoreMatchers.hasItems; import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.CoreMatchers.sameInstance; import static org.junit.Assert.assertThat; import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.emf.cdo.eresource.CDOResource; +import org.eclipse.emf.cdo.eresource.CDOResourceFolder; import org.eclipse.emf.cdo.eresource.CDOResourceNode; +import org.eclipse.emf.cdo.eresource.CDOTextResource; import org.eclipse.emf.cdo.transaction.CDOTransaction; +import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.papyrus.cdo.core.tests.AbstractPapyrusCDOTest; import org.eclipse.papyrus.cdo.core.util.CDOFunctions; +import org.eclipse.uml2.uml.Interface; +import org.eclipse.uml2.uml.Model; +import org.eclipse.uml2.uml.Package; +import org.eclipse.uml2.uml.UMLFactory; import org.junit.Test; import com.google.common.base.Function; @@ -88,6 +100,102 @@ public class CDOFunctionsTest extends AbstractPapyrusCDOTest { assertThat(func.toString(), containsString("adapt(")); } + @Test + public void testRootFunction() { + CDOTransaction transaction = createTransaction(); + + Resource res = transaction.createResource(getResourcePath("/folder1/foo.uml")); + Package package1 = UMLFactory.eINSTANCE.createPackage(); + res.getContents().add(package1); + Model model1 = UMLFactory.eINSTANCE.createModel(); + res.getContents().add(model1); + + assertThat(CDOFunctions.getRoot(Model.class).apply(res), sameInstance(model1)); + assertThat(CDOFunctions.getRoot(Interface.class).apply(res), nullValue()); + } + + @Test + public void testRootFunction_equals() { + Function<Resource, Model> func1 = CDOFunctions.getRoot(Model.class); + Function<Resource, Package> func2 = CDOFunctions.getRoot(Package.class); + Function<Resource, Package> func3 = CDOFunctions.getRoot(Package.class); + + assertThat((Object)func1, not(equalTo((Object)func2))); + assertThat((Object)func2, not(equalTo((Object)func1))); + assertThat(func2 == func3, is(false)); + assertThat(func2, equalTo(func3)); + assertThat(func3, equalTo(func2)); + } + + @Test + public void testRootFunction_hashCode() { + Function<Resource, Model> func1 = CDOFunctions.getRoot(Model.class); + Function<Resource, Package> func2 = CDOFunctions.getRoot(Package.class); + Function<Resource, Package> func3 = CDOFunctions.getRoot(Package.class); + + assertThat(func1.hashCode() == func2.hashCode(), is(Model.class.hashCode() == Package.class.hashCode())); + assertThat(func2.hashCode(), is(func3.hashCode())); + } + + @Test + public void testRootFunction_toString() { + Function<Resource, Model> func = CDOFunctions.getRoot(Model.class); + + assertThat(func.toString(), containsString("getRoot(")); + } + + @Test + public void testFolderContentsFunction_folder() { + CDOTransaction transaction = createTransaction(); + + CDOResourceFolder folder = transaction.createResourceFolder(getResourcePath("/folder1")); + CDOResourceNode text = transaction.createTextResource(getResourcePath("/folder1/foo.properties")); + CDOResource res = transaction.createResource(getResourcePath("/folder1/foo.uml")); + + assertThat(CDOFunctions.getFolderContents().apply(folder), both(AbstractPapyrusCDOTest.<CDOResourceNode> hasSize(2)).and(hasItems(text, res))); + assertThat(CDOFunctions.getFolderContents(CDOResource.class).apply(folder), both(AbstractPapyrusCDOTest.<CDOResource> hasSize(1)).and(hasItem(res))); + } + + @Test + public void testFolderContentsFunction_rootResource() { + CDOTransaction transaction = createTransaction(); + + CDOResourceFolder folder = transaction.createResourceFolder(getResourcePath("/folder1")); + CDOResourceNode root = transaction.getRootResource(); + + assertThat(CDOFunctions.getFolderContents(CDOResourceFolder.class).apply(root), both(AbstractPapyrusCDOTest.<CDOResourceFolder> hasSize(1)).and(hasItem(folder.getFolder().getFolder()))); + } + + @Test + public void testFolderContentsFunction_equals() { + Function<CDOResourceNode, Iterable<CDOResourceNode>> func1 = CDOFunctions.getFolderContents(); + Function<CDOResourceNode, Iterable<CDOTextResource>> func2 = CDOFunctions.getFolderContents(CDOTextResource.class); + Function<CDOResourceNode, Iterable<CDOTextResource>> func3 = CDOFunctions.getFolderContents(CDOTextResource.class); + + assertThat((Object)func1, not(equalTo((Object)func2))); + assertThat((Object)func2, not(equalTo((Object)func1))); + assertThat(func2 == func3, is(false)); + assertThat(func2, equalTo(func3)); + assertThat(func3, equalTo(func2)); + } + + @Test + public void testFolderContentsFunction_hashCode() { + Function<CDOResourceNode, Iterable<CDOResourceNode>> func1 = CDOFunctions.getFolderContents(); + Function<CDOResourceNode, Iterable<CDOTextResource>> func2 = CDOFunctions.getFolderContents(CDOTextResource.class); + Function<CDOResourceNode, Iterable<CDOTextResource>> func3 = CDOFunctions.getFolderContents(CDOTextResource.class); + + assertThat(func1.hashCode() == func2.hashCode(), is(CDOResourceNode.class.hashCode() == CDOTextResource.class.hashCode())); + assertThat(func2.hashCode(), is(func3.hashCode())); + } + + @Test + public void testFolderContentsFunction_toString() { + Function<CDOResourceNode, Iterable<CDOResource>> func = CDOFunctions.getFolderContents(CDOResource.class); + + assertThat(func.toString(), containsString("getFolderContents(")); + } + // // Test framework // diff --git a/tests/cdo/org.eclipse.papyrus.cdo.core.tests/src/org/eclipse/papyrus/cdo/core/util/tests/CDOPredicatesTest.java b/tests/cdo/org.eclipse.papyrus.cdo.core.tests/src/org/eclipse/papyrus/cdo/core/util/tests/CDOPredicatesTest.java index 8415e78e093..23b38bc7b12 100644 --- a/tests/cdo/org.eclipse.papyrus.cdo.core.tests/src/org/eclipse/papyrus/cdo/core/util/tests/CDOPredicatesTest.java +++ b/tests/cdo/org.eclipse.papyrus.cdo.core.tests/src/org/eclipse/papyrus/cdo/core/util/tests/CDOPredicatesTest.java @@ -11,19 +11,29 @@ *****************************************************************************/ package org.eclipse.papyrus.cdo.core.util.tests; +import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; +import java.util.List; +import java.util.Set; + import org.eclipse.core.runtime.IAdaptable; import org.eclipse.emf.cdo.eresource.CDOResource; import org.eclipse.emf.cdo.eresource.CDOResourceFolder; import org.eclipse.emf.cdo.eresource.CDOResourceNode; +import org.eclipse.emf.cdo.eresource.CDOTextResource; import org.eclipse.emf.cdo.transaction.CDOTransaction; +import org.eclipse.emf.common.util.URI; import org.eclipse.papyrus.cdo.core.tests.AbstractPapyrusCDOTest; import org.eclipse.papyrus.cdo.core.util.CDOPredicates; import org.junit.Test; +import com.google.common.base.Objects; import com.google.common.base.Predicate; +import com.google.common.base.Strings; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Sets; /** @@ -59,6 +69,138 @@ public class CDOPredicatesTest extends AbstractPapyrusCDOTest { assertThat(pred.apply(adapter), is(true)); } + @Test + public void testHasExtension() { + Predicate<CDOResourceNode> hasUML = CDOPredicates.hasExtension("uml"); + Predicate<CDOResourceNode> hasNone = CDOPredicates.hasExtension(null); + CDOTransaction transaction = createTransaction(); + + CDOResource res1 = transaction.createResource(getResourcePath("/folder1/foo.uml")); + CDOResource res2 = transaction.createResource(getResourcePath("/folder1/foo.notation")); + assertThat(hasUML.apply(res1), is(true)); + assertThat(hasNone.apply(res1), is(false)); + assertThat(hasUML.apply(res2), is(false)); + assertThat(hasNone.apply(res2), is(false)); + + CDOResourceFolder folder = res1.getFolder(); + assertThat(hasUML.apply(folder), is(false)); + assertThat(hasNone.apply(folder), is(true)); + assertThat(hasUML.apply(transaction.getRootResource()), is(false)); + assertThat(hasNone.apply(transaction.getRootResource()), is(true)); + } + + @Test + public void testHasExtension_equals() { + Set<Predicate<CDOResourceNode>> set1 = ImmutableSet.of( // + CDOPredicates.hasExtension("uml"), // + CDOPredicates.hasExtension("notation"), // + CDOPredicates.hasExtension(null)); + Set<Predicate<CDOResourceNode>> set2 = ImmutableSet.of( // + CDOPredicates.hasExtension("uml"), // + CDOPredicates.hasExtension("notation"), // + CDOPredicates.hasExtension(null)); + + @SuppressWarnings("unchecked") + Set<List<Predicate<CDOResourceNode>>> product = Sets.cartesianProduct(set1, set2); + + int equalPairs = 0; + for(List<Predicate<CDOResourceNode>> next : product) { + if(next.get(0).equals(next.get(1))) { + equalPairs++; + } + } + + assertThat(equalPairs, is(3)); + } + + @Test + public void testHasExtension_hashCode() { + Set<String> set1 = ImmutableSet.of("uml", "notation", ""); + Set<String> set2 = ImmutableSet.of("uml", "notation", ""); + + @SuppressWarnings("unchecked") + Set<List<String>> product = Sets.cartesianProduct(set1, set2); + + for(List<String> next : product) { + String ext1 = Strings.emptyToNull(next.get(0)); + String ext2 = Strings.emptyToNull(next.get(1)); + + assertThat(CDOPredicates.hasExtension(ext1).hashCode() == CDOPredicates.hasExtension(ext2).hashCode(), // + is(Objects.hashCode(ext1) == Objects.hashCode(ext2))); + } + } + + @Test + public void testHasExtension_toString() { + assertThat(CDOPredicates.hasExtension("uml").toString(), containsString("hasExtension(")); + assertThat(CDOPredicates.hasExtension(null).toString(), containsString("hasNoExtension(")); + } + + @Test + public void testHasURIPrefix() { + CDOTransaction transaction = createTransaction(); + CDOResourceFolder folder = transaction.createResourceFolder(getResourcePath("/folder1")); + CDOResource res1 = transaction.createResource(getResourcePath("/folder1/foo.uml")); + CDOTextResource res2 = transaction.createTextResource(getResourcePath("/folder2/foo.properties")); + + URI prefix = folder.getURI(); + if(!prefix.hasTrailingPathSeparator()) { + prefix = prefix.appendSegment(""); + } + + Predicate<CDOResourceNode> pred = CDOPredicates.hasURIPrefix(prefix); + + assertThat(pred.apply(folder), is(false)); + assertThat(pred.apply(res1), is(true)); + assertThat(pred.apply(res2), is(false)); + } + + @Test + public void testHasURIPrefix_equals() { + Set<Predicate<CDOResourceNode>> set1 = ImmutableSet.of( // + CDOPredicates.hasURIPrefix(URI.createURI("cdo://repo1/folder1/")), // + CDOPredicates.hasURIPrefix(URI.createURI("cdo://repo1/folder2/")), // + CDOPredicates.hasURIPrefix(URI.createURI("cdo://repo1/"))); + Set<Predicate<CDOResourceNode>> set2 = ImmutableSet.of( // + CDOPredicates.hasURIPrefix(URI.createURI("cdo://repo1/folder1/")), // + CDOPredicates.hasURIPrefix(URI.createURI("cdo://repo1/folder2/")), // + CDOPredicates.hasURIPrefix(URI.createURI("cdo://repo1/"))); + + @SuppressWarnings("unchecked") + Set<List<Predicate<CDOResourceNode>>> product = Sets.cartesianProduct(set1, set2); + + int equalPairs = 0; + for(List<Predicate<CDOResourceNode>> next : product) { + if(next.get(0).equals(next.get(1))) { + equalPairs++; + } + } + + assertThat(equalPairs, is(3)); + } + + @Test + public void testHasURIPrefix_hashCode() { + Set<String> set1 = ImmutableSet.of("cdo://repo1/folder1/", "cdo://repo1/folder2/", "cdo://repo1/"); + Set<String> set2 = ImmutableSet.of("cdo://repo1/folder1/", "cdo://repo1/folder2/", "cdo://repo1/"); + + @SuppressWarnings("unchecked") + Set<List<String>> product = Sets.cartesianProduct(set1, set2); + + for(List<String> next : product) { + URI uri1 = URI.createURI(next.get(0)); + URI uri2 = URI.createURI(next.get(1)); + + assertThat(CDOPredicates.hasURIPrefix(uri1).hashCode() == CDOPredicates.hasURIPrefix(uri2).hashCode(), // + is(Objects.hashCode(uri1) == Objects.hashCode(uri2))); + } + } + + @Test + public void testHasURIPrefix_toString() { + assertThat(CDOPredicates.hasURIPrefix(URI.createURI("cdo://repo1/folder1/")).toString(), containsString("hasURIPrefix(")); + } + // // Test framework // |