Skip to content

Commit

Permalink
reorganized and compressed tests for bugs
Browse files Browse the repository at this point in the history
  • Loading branch information
maciejmikosik committed Apr 5, 2015
2 parents 1399ded + 2263790 commit af92071
Show file tree
Hide file tree
Showing 9 changed files with 92 additions and 205 deletions.
24 changes: 24 additions & 0 deletions test/java/org/quackery/contract/Bugs.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.quackery.contract;

import static java.util.Arrays.asList;

import java.util.ArrayList;
import java.util.List;

public class Bugs {
public static List<Class<?>> bugs(Class<?> model, Class<?>... contract) {
List<Class<?>> bugs = new ArrayList<>();
for (Class<?> bug : model.getDeclaredClasses()) {
if (unorderedEquals(bug.getAnnotation(Bug.class).value(), contract)) {
bugs.add(bug);
}
}
return bugs;
}

private static <T> boolean unorderedEquals(T[] arrayA, T[] arrayB) {
List<T> listA = asList(arrayA);
List<T> listB = asList(arrayB);
return listA.containsAll(listB) && listB.containsAll(listA);
}
}
56 changes: 0 additions & 56 deletions test/java/org/quackery/contract/collection/Bugs.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

import org.quackery.contract.Bug;

public class MutableList<E> implements Mutable, List<E> {
public class MutableList<E> implements List<E> {
protected List<E> delegate;

public MutableList() {
Expand Down
65 changes: 65 additions & 0 deletions test/java/org/quackery/contract/collection/test_MutableList.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package org.quackery.contract.collection;

import static org.quackery.Contracts.quacksLike;
import static org.quackery.contract.Bugs.bugs;
import static org.quackery.testing.Assertions.assertFailure;
import static org.quackery.testing.Assertions.assertSuccess;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.quackery.Contract;

public class test_MutableList {
private final Class<?> model = MutableList.class;
private Contract<Class<?>> contract;

public void quacks_like_collection() {
contract = quacksLike(Collection.class);
assertSuccess(contract.test(model));
for (Class<?> bug : bugs(model, Collection.class)) {
assertFailure(contract.test(bug));
}
}

public void quacks_like_mutable_collection() {
contract = quacksLike(Collection.class).mutable();
assertSuccess(contract.test(model));
for (Class<?> bug : join(
bugs(model, Collection.class),
bugs(model, Collection.class, Mutable.class))) {
assertFailure(contract.test(bug));
}
}

public void quacks_like_list() {
contract = quacksLike(List.class);
assertSuccess(contract.test(model));
for (Class<?> bug : join(
bugs(model, Collection.class),
bugs(model, List.class))) {
assertFailure(contract.test(bug));
}
}

public void quacks_like_mutable_list() {
contract = quacksLike(List.class).mutable();
assertSuccess(contract.test(model));
for (Class<?> bug : join(
bugs(model, Collection.class),
bugs(model, Collection.class, Mutable.class),
bugs(model, List.class),
bugs(model, List.class, Mutable.class))) {
assertFailure(contract.test(bug));
}
}

private static List<Class<?>> join(List<Class<?>>... parts) {
List<Class<?>> joined = new ArrayList<>();
for (List<Class<?>> part : parts) {
joined.addAll(part);
}
return joined;
}
}

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

10 changes: 2 additions & 8 deletions test/java/org/quackery/test_all.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@
import java.util.ArrayList;
import java.util.List;

import org.quackery.contract.collection.test_contract_for_collection;
import org.quackery.contract.collection.test_contract_for_collection_mutable;
import org.quackery.contract.collection.test_contract_for_list;
import org.quackery.contract.collection.test_contract_for_list_mutable;
import org.quackery.contract.collection.test_MutableList;
import org.quackery.contract.collection.test_detecting_alien_types;
import org.quackery.contract.collection.test_jdk_collections;

Expand All @@ -21,10 +18,7 @@ public static void main(String[] args) throws Throwable {
runTestsIn(test_Case.class);
runTestsIn(test_Suite.class);
runTestsIn(test_QuackeryRunner.class);
runTestsIn(test_contract_for_collection.class);
runTestsIn(test_contract_for_collection_mutable.class);
runTestsIn(test_contract_for_list.class);
runTestsIn(test_contract_for_list_mutable.class);
runTestsIn(test_MutableList.class);
runTestsIn(test_detecting_alien_types.class);
runTestsIn(test_jdk_collections.class);

Expand Down

0 comments on commit af92071

Please sign in to comment.