Skip to content

Todo list

Craig P. Motlin edited this page Dec 25, 2015 · 1 revision
  • Split slow acceptance tests
    • ParallelUnsafeMapIteratePutAcceptanceTest.testMapIteratePut
    • ParallelMapIteratePutAcceptanceTest.testMapIteratePut
    • IntLongMapProbeTest
    • IntIntMapProbeTest
  • Remove Assume
  • Turn on javac lint errors
  • Lazy distinct(hashingStrategy)
  • Build
    • Update IntelliJ project files for IntelliJ 15.
    • Try caching target/ directories in Travis, or at least generated-sources directories.
    • Fix the javadoc task in the ant build to ignore the .crc files.
    • Add ant build to the list of Travis builds.
    • Test that the Java 6 and 7 builds really fail when relying on new language or library features.
  • API
    • New API
      • MutableSortedIterable interface, used in Sorted*TestCase.
      • <V> LazyIterable<V> collectWithIndex(ObjectIntToObjectFunction<? super T, ? extends V> function);
      • Lazy implementation of flatCollectWith().
      • LazyIterable.hasSameElements() and LazyIterable.corresponds().
      • Implement MapIterable.getIfAbsentThrow() similar to the method on primitive maps.
      • Pull up ListIterable.distinct(HashingStrategy) to OrderedIterable.distinct(HashingStrategy).
      • RichIterable.groupByWith() and a variant that takes a target multimap.
      • RichIterable.groupBy(function1, function2, function3)
      • RichIterable.toMultimap((T) -> K, (T) -> Iterable)
      • Come up with a generic short-circuiting pattern that all others (anySatisfy, detect, etc.) can be implemented in terms of.
      • toMutable() on read-only interfaces.
    • Pull methods up
      • Pull up the castTo methods from immutable to read-only interfaces.
      • MutableCollection.toImmutable().
    • Return types
      • Min/Max should return the same type as select() because there can be 0-to-many extreme elements.
      • Bag-like methods on UnsortedMapIterable like select() could return UnsortedMapIterable instead of Bag.
      • List-like method on OrderedMapIterable like select() could return OrderedMapIterable instead of List.
    • OrderedMap API
      • Finish linked hash map implementation.
      • Make SortedMap.groupByUniqueKey() return OrderedMap.
      • Make SortedMapIterable.collect() return OrderedMapIterable.
      • Rename UnsortedMapIterable as UnorderedMapIterable.
    • Make methods final that take a target since there's limited benefit of overriding them since they create garbage anyway.
    • Replace usages of SynchronizedRichIterable with SynchronizedMutabledSet for keySets.
    • Write tests that expect UnsupportedOperationException for the newish unsupported API.
    • Add the HashingStrategy from SO post http://stackoverflow.com/questions/214136/why-not-allow-an-external-interface-to-provide-hashcode-equals-for-a-hashmap/27727253#27727253
  • Extract AbstractSingletonIterable above immutablePrimitiveObjectSingletonMap to reduce code duplication.
  • Add trait-style tests for sorted bags.
  • Add information about signing commits to CONTRIBUTING.md
  • Extract abstract super class of ImmutableObjectHashMap<V> with a protected getDelegate() method which returns RichIterable.
  • Java 8
    • Remove usages of static factory methods that delegate to constructors. The point of them was for better type inference, which is mostly unnecessary since Java 7.
    • Remove Javadoc examples "Example using an anonymous inner class"
    • API that uses Java 8 Optional
      • RichIterable.getFirstOptional() and RichIterable.getLastOptional()
      • RichIterable.detectOptional()
      • MapIterable.getOptional() and MapIterable.putOptional()
  • Rounding bugs
    • MultiReaderFastListParallelListIterableTest>ParallelIterableTestCase.sumOfFloatConsistentRounding:888 Batch size: 1000 expected:<5.0000000000000995> but was:<5.000000000000101>

java.lang.AssertionError: Batch size: 10000 Expected :5.0000000000000995 Actual :5.000000000000101

at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:834)
at org.junit.Assert.assertEquals(Assert.java:553)
at org.eclipse.collections.impl.lazy.parallel.ParallelIterableTestCase.sumOfDoubleConsistentRounding(ParallelIterableTestCase.java:918)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:119)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)