@Override @SuppressWarnings({ "unchecked", "rawtypes" }) public Tuple2<Option<T>, ReactiveSeq<T>> splitAtHead() { final Tuple2<ReactiveSeq<T>, ReactiveSeq<T>> Tuple2 = splitAt(1); return Tuple.tuple( Tuple2._1().to().option() .flatMap(l -> l.size() > 0 ? l.get(0) : Option.none()), Tuple2._2()); }
@Override @SuppressWarnings({"unchecked", "rawtypes"}) public Tuple2<Option<T>, ReactiveSeq<T>> splitAtHead() { final Tuple2<ReactiveSeq<T>, ReactiveSeq<T>> Tuple2 = splitAt(1); return Tuple.tuple( Tuple2._1().to().option() .flatMap(l -> { return l.size() > 0 ? l.get(0) : Option.none(); }), Tuple2._2()); }
@Test public void optionalConvert() { for (int i = 0; i < 10; i++) { assertThat(of(1, 2, 3).to().option(), equalTo(Option.of(LazySeq.of(1, 2, 3)))); } } @Test
@Test public void skipLimitDuplicateLimitSkip() { Tuple3<ReactiveSeq<Integer>, ReactiveSeq<Integer>,ReactiveSeq<Integer>> dup = of(1, 2, 3).triplicate(); Option<Integer> head1 = dup._1().limit(1).to().option().flatMap(l -> { return l.size() > 0 ? l.get(0) : Option.<Integer>none(); }); Tuple3<ReactiveSeq<Integer>, ReactiveSeq<Integer>,ReactiveSeq<Integer>> dup2 = dup._2().skip(1).triplicate(); Option<Integer> head2 = dup2._1().limit(1).to().option().flatMap(l -> { return l.size() > 0 ? l.get(0) : Option.<Integer>none(); }); assertThat(dup2._2().skip(1).toList(),equalTo(Arrays.asList(3))); assertThat(of(1, 2, 3).duplicate()._1().skip(1).duplicate()._1().skip(1).toList(), equalTo(Arrays.asList(3))); }
@Test public void dropLimitDuplicateLimitSkip() { Tuple3<ReactiveSeq<Integer>, ReactiveSeq<Integer>, ReactiveSeq<Integer>> dup = of(1, 2, 3).triplicate(); Option<Integer> head1 = dup._1().take(1).to().option().flatMap(l -> { return l.size() > 0 ? l.get(0) : Option.<Integer>none(); }); Tuple3<ReactiveSeq<Integer>, ReactiveSeq<Integer>, ReactiveSeq<Integer>> dup2 = dup._2().drop(1).triplicate(); Option<Integer> head2 = dup2._1().take(1).to().option().flatMap(l -> { return l.size() > 0 ? l.get(0) : Option.<Integer>none(); }); assertThat(dup2._2().drop(1).toList(), equalTo(Arrays.asList(3))); assertThat(of(1, 2, 3).duplicate()._1().drop(1).duplicate()._1().drop(1).toList(), equalTo(Arrays.asList(3))); }
@Test public void skipLimitDuplicateLimitSkip() { Tuple2<ReactiveSeq<Integer>, ReactiveSeq<Integer>> dup = of(1, 2, 3).duplicate(); Option<Integer> head1 = dup._1().limit(1).to().option().flatMap(l -> { return l.size() > 0 ? l.get(0) : Option.<Integer>none(); }); Tuple2<ReactiveSeq<Integer>, ReactiveSeq<Integer>> dup2 = dup._2().skip(1).duplicate(); Option<Integer> head2 = dup2._1().limit(1).to().option().flatMap(l -> { return l.size() > 0 ? l.get(0) : Option.<Integer>none(); }); assertThat(dup2._2().skip(1).toList(),equalTo(Arrays.asList(3))); assertThat(of(1, 2, 3).duplicate()._1().skip(1).duplicate()._1().skip(1).toList(), equalTo(Arrays.asList(3))); } @Test
@Test public void skipLimitTriplicateLimitSkip() { Tuple3<ReactiveSeq<Integer>, ReactiveSeq<Integer>,ReactiveSeq<Integer>> dup = of(1, 2, 3).triplicate(); Option<Integer> head1 = dup._1().limit(1).to().option().flatMap(l -> { return l.size() > 0 ? l.get(0) : Option.<Integer>none(); }); Tuple3<ReactiveSeq<Integer>, ReactiveSeq<Integer>,ReactiveSeq<Integer>> dup2 = dup._2().skip(1).triplicate(); Option<Integer> head2 = dup2._1().limit(1).to().option().flatMap(l -> { return l.size() > 0 ? l.get(0) : Option.<Integer>none(); }); assertThat(dup2._2().skip(1).toList(),equalTo(Arrays.asList(3))); assertThat(of(1, 2, 3).duplicate()._1().skip(1).duplicate()._1().skip(1).toList(), equalTo(Arrays.asList(3))); } @Test
@Test public void skipLimitQuadruplicateLimitSkip() { Tuple4<ReactiveSeq<Integer>, ReactiveSeq<Integer>,ReactiveSeq<Integer>,ReactiveSeq<Integer>> dup = of(1, 2, 3).quadruplicate(); Option<Integer> head1 = dup._1().limit(1).to().option().flatMap(l -> { return l.size() > 0 ? l.get(0) : Option.<Integer>none(); }); Tuple4<ReactiveSeq<Integer>, ReactiveSeq<Integer>,ReactiveSeq<Integer>,ReactiveSeq<Integer>> dup2 = dup._2().skip(1).quadruplicate(); Option<Integer> head2 = dup2._1().limit(1).to().option().flatMap(l -> { return l.size() > 0 ? l.get(0) : Option.<Integer>none(); }); assertThat(dup2._2().skip(1).toList(),equalTo(Arrays.asList(3))); assertThat(of(1, 2, 3).duplicate()._1().skip(1).duplicate()._1().skip(1).toList(), equalTo(Arrays.asList(3))); }
@Test public void skipLimitDuplicateLimitSkip() { Tuple3<ReactiveSeq<Integer>, ReactiveSeq<Integer>,ReactiveSeq<Integer>> dup = of(1, 2, 3).triplicate(); Option<Integer> head1 = dup._1().limit(1).to().option().flatMap(l -> { return l.size() > 0 ? l.get(0) : Option.<Integer>none(); }); Tuple3<ReactiveSeq<Integer>, ReactiveSeq<Integer>,ReactiveSeq<Integer>> dup2 = dup._2().skip(1).triplicate(); Option<Integer> head2 = dup2._1().limit(1).to().option().flatMap(l -> { return l.size() > 0 ? l.get(0) : Option.<Integer>none(); }); assertThat(dup2._2().skip(1).toList(),equalTo(Arrays.asList(3))); assertThat(of(1, 2, 3).duplicate()._1().skip(1).duplicate()._1().skip(1).toList(), equalTo(Arrays.asList(3))); }
@Test public void splitThenSplit() { assertThat(of(1, 2, 3).to().option(), equalTo(Option.of(LazySeq.of(1, 2, 3)))); // System.out.println(of(1, 2, 3).splitAtHead()._2.listX()); System.out.println("split " + of(1, 2, 3).splitAtHead()._2().splitAtHead()._2().toList()); ReactiveSeq<Integer> x = of(1, 2, 3).splitAtHead()._2() .splitAtHead()._2(); System.out.println("s is " + x.seq()); Option<Integer> o = of(1, 2, 3).splitAtHead()._2() .splitAtHead()._2() .splitAtHead()._1(); System.out.println("o is " + o); assertEquals(Option.of(3), o); }
@Test public void splitThenSplit(){ assertThat(of(1,2,3).to().option(),equalTo(Option.of(LazySeq.of(1,2,3)))); // System.out.println(of(1, 2, 3).splitAtHead().v2.listX()); System.out.println("split " + of(1, 2, 3).splitAtHead()._2().splitAtHead()._2().toList()); assertEquals(Option.of(3), of(1, 2, 3).splitAtHead()._2().splitAtHead()._2().splitAtHead()._1()); } @Test
@Test public void splitThenSplit(){ assertThat(of(1,2,3).to().option(),equalTo(Option.of(LazySeq.of(1,2,3)))); // System.out.println(of(1, 2, 3).splitAtHead()._2.listX()); System.out.println("split " + of(1, 2, 3).splitAtHead()._2().splitAtHead()._2().toList()); assertEquals(Option.of(3), of(1, 2, 3).splitAtHead()._2().splitAtHead()._2().splitAtHead()._1()); } @Test
@Test public void splitThenSplit(){ assertThat(of(1,2,3).to().option(),equalTo(Option.of(LazySeq.of(1,2,3)))); // System.out.println(of(1, 2, 3).splitAtHead().v2.listX()); System.out.println("split " + of(1, 2, 3).splitAtHead()._2().splitAtHead()._2().toList()); assertEquals(Option.of(3), of(1, 2, 3).splitAtHead()._2().splitAtHead()._2().splitAtHead()._1()); } @Test
@Test public void splitAtHeadBug(){ final Tuple2<ReactiveSeq<Integer>, ReactiveSeq<Integer>> Tuple2 = ReactiveSeq.of(1).splitAt(1); Option<LazySeq<Integer>> a = Tuple2._1().to().option(); Option<Option<Integer>> x = a .flatMap(l -> l.size() > 0 ? Option.of(l.get(0)) : Option.none()); assertEquals(Option.of(1), ReactiveSeq.of(1).splitAtHead()._1()); } @Test
@Test public void presentConvert(){ assertTrue(of(1).to().option().isPresent()); assertTrue(of(1).toList().size()>0); assertTrue(of(1).to().seq().size()>0); assertTrue(of(1).to().lazySeq().size()>0); assertTrue(of(1).to().bankersQueue().size()>0); assertTrue(of(1).to().vector().size()>0); assertTrue(of(1).to().hashSet().size()>0); assertTrue(of(1).toSet().size()>0); assertTrue(of(1).to().treeSet(Comparator.naturalOrder()).size()>0); assertTrue(of(1).to().bag().size()>0); assertTrue(of(1).to().hashMap(t->t, t->t).size()>0); assertTrue(of(1).toSet().size()>0); assertTrue(of(1).toList().size()>0); }
@Test public void emptyConvert(){ assertFalse(empty().option().isPresent()); assertFalse(empty().seq().size()>0); assertFalse(empty().lazySeq().size()>0); assertFalse(empty().vector().size()>0); assertFalse(empty().bankersQueue().size()>0); assertFalse(empty().hashSet().size()>0); assertFalse(empty().treeSet((Comparator)Comparator.naturalOrder()).size()>0); assertFalse(empty().hashMap(t->t,t->t).size()>0); } @Test
@Test public void presentConvert2(){ assertTrue(of(1,2).to().option().isPresent()); assertTrue(of(1,2).toList().size()==2); assertTrue(of(1,2).to().seq().size()==2); assertTrue(of(1,2).to().lazySeq().size()==2); assertTrue(of(1,2).to().bankersQueue().size()==2); assertTrue(of(1,2).to().vector().size()==2); assertTrue(of(1,2).to().hashSet().size()==2); assertTrue(of(1,2).toSet().size()==2); assertTrue(of(1,2).to().treeSet(Comparator.naturalOrder()).size()==2); assertTrue(of(1,2).to().streamable().size()==2); assertTrue(of(1,2).to().bag().size()==2); assertTrue(of(1,2).to().hashMap(t->t, t->t).size()==2); assertTrue(of(1,2).toSet().size()==2); assertTrue(of(1,2).toList().size()==2); assertTrue(of(1,2).to().streamable().size()==2); }
@Test public void presentConvert(){ assertTrue(of(1).option().isPresent()); assertTrue(of(1).seq().size()>0); assertTrue(of(1).lazySeq().size()>0); assertTrue(of(1).bankersQueue().size()>0); assertTrue(of(1).vector().size()>0); assertTrue(of(1).hashSet().size()>0); assertTrue(of(1).treeSet(Comparator.naturalOrder()).size()>0); assertTrue(of(1).bag().size()>0); assertTrue(of(1).hashMap(t->t, t->t).size()>0); }
@Test public void presentConvert2(){ assertTrue(of(1,2).to().option().isPresent()); assertTrue(of(1,2).toList().size()==2); assertTrue(of(1,2).to().seq().size()==2); assertTrue(of(1,2).to().lazySeq().size()==2); assertTrue(of(1,2).to().bankersQueue().size()==2); assertTrue(of(1,2).to().vector().size()==2); assertTrue(of(1,2).to().hashSet().size()==2); assertTrue(of(1,2).toSet().size()==2); assertTrue(of(1,2).to().treeSet(Comparator.naturalOrder()).size()==2); assertTrue(of(1,2).to().streamable().size()==2); assertTrue(of(1,2).to().bag().size()==2); assertTrue(of(1,2).to().hashMap(t->t, t->t).size()==2); assertTrue(of(1,2).toSet().size()==2); assertTrue(of(1,2).toList().size()==2); assertTrue(of(1,2).to().streamable().size()==2); assertTrue(of(1,2).toMap(a->a).size()==2); assertTrue(of(1,2).toMap(a->a,a->a).size()==2); assertTrue(of(1,2).toHashMap(a->a).size()==2); assertTrue(of(1,2).toHashMap(a->a,a->a).size()==2); }
@Test public void emptyConvert(){ assertFalse(empty().to().option().isPresent()); assertTrue(empty().nonEmptyList(()->10).size()>0); assertFalse(empty().seq().size()>0); assertFalse(empty().lazySeq().size()>0); assertFalse(empty().vector().size()>0); assertFalse(empty().bankersQueue().size()>0); assertFalse(empty().hashSet().size()>0); assertFalse(empty().treeSet((Comparator)Comparator.naturalOrder()).size()>0); assertFalse(empty().to().hashMap(t->t,t->t).size()>0); assertFalse(empty().to().streamable().size()>0); assertFalse(empty().to().seq().size()>0); assertFalse(empty().to().lazySeq().size()>0); assertFalse(empty().to().vector().size()>0); assertFalse(empty().to().bankersQueue().size()>0); assertFalse(empty().to().hashSet().size()>0); assertFalse(empty().to().treeSet((Comparator)Comparator.naturalOrder()).size()>0); assertFalse(empty().toSet().size()>0); assertFalse(empty().toList().size()>0); assertFalse(empty().to().streamable().size()>0); assertFalse(empty.toMap(a->a).size()>0); assertFalse(empty.toMap(a->a,a->a).size()>0); assertFalse(empty.toHashMap(a->a).size()>0); assertFalse(empty.toHashMap(a->a,a->a).size()>0); }