コード例 #1
0
  @Test
  public void zip() {
    ImmutableBag<String> immutableBag = this.newBag();
    List<Object> nulls = Collections.nCopies(immutableBag.size(), null);
    List<Object> nullsPlusOne = Collections.nCopies(immutableBag.size() + 1, null);
    List<Object> nullsMinusOne = Collections.nCopies(immutableBag.size() - 1, null);

    ImmutableBag<Pair<String, Object>> pairs = immutableBag.zip(nulls);
    Assert.assertEquals(
        immutableBag, pairs.collect((Function<Pair<String, ?>, String>) Pair::getOne));
    Assert.assertEquals(
        HashBag.newBag(nulls), pairs.collect((Function<Pair<?, Object>, Object>) Pair::getTwo));

    ImmutableBag<Pair<String, Object>> pairsPlusOne = immutableBag.zip(nullsPlusOne);
    Assert.assertEquals(
        immutableBag, pairsPlusOne.collect((Function<Pair<String, ?>, String>) Pair::getOne));
    Assert.assertEquals(
        HashBag.newBag(nulls),
        pairsPlusOne.collect((Function<Pair<?, Object>, Object>) Pair::getTwo));

    ImmutableBag<Pair<String, Object>> pairsMinusOne = immutableBag.zip(nullsMinusOne);
    Assert.assertEquals(immutableBag.size() - 1, pairsMinusOne.size());
    Assert.assertTrue(
        immutableBag.containsAllIterable(
            pairsMinusOne.collect((Function<Pair<String, ?>, String>) Pair::getOne)));

    Assert.assertEquals(
        immutableBag.zip(nulls), immutableBag.zip(nulls, HashBag.<Pair<String, Object>>newBag()));
  }