From e3a849d34036b092383e3054044cfe8ca0e27682 Mon Sep 17 00:00:00 2001 From: Alexander Bandukwala <7h3kk1d@gmail.com> Date: Thu, 1 Oct 2020 20:17:59 -0500 Subject: [PATCH 1/4] Add init methods to Tuple classes --- .../palatable/lambda/adt/hlist/Tuple3.java | 9 ++++++++ .../palatable/lambda/adt/hlist/Tuple4.java | 9 ++++++++ .../palatable/lambda/adt/hlist/Tuple5.java | 9 ++++++++ .../palatable/lambda/adt/hlist/Tuple6.java | 9 ++++++++ .../palatable/lambda/adt/hlist/Tuple7.java | 9 ++++++++ .../palatable/lambda/adt/hlist/Tuple8.java | 9 ++++++++ .../lambda/adt/hlist/Tuple3Test.java | 18 +++++++--------- .../lambda/adt/hlist/Tuple4Test.java | 18 +++++++--------- .../lambda/adt/hlist/Tuple5Test.java | 18 +++++++--------- .../lambda/adt/hlist/Tuple6Test.java | 21 +++++++++---------- .../lambda/adt/hlist/Tuple7Test.java | 18 +++++++--------- .../lambda/adt/hlist/Tuple8Test.java | 18 +++++++--------- 12 files changed, 104 insertions(+), 61 deletions(-) diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple3.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple3.java index 6fe7710b3..d1ca98828 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple3.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple3.java @@ -219,6 +219,15 @@ AppTrav extends Applicative> AppTrav traverse( return fn.apply(_3).fmap(_3Prime -> fmap(constantly(_3Prime))).fmap(Applicative::coerce).coerce(); } + /** + * Returns a Tuple of all the elements of this Tuple except the last + * + * @return The Tuple representing all but the last element + */ + public Tuple2<_1, _2> init() { + return rotateR3().tail(); + } + /** * Given a value of type A, produced an instance of this tuple with each slot set to that value. * diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple4.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple4.java index ebd946548..daf03bcac 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple4.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple4.java @@ -246,6 +246,15 @@ AppTrav extends Applicative> AppTrav traverse( return fn.apply(_4).fmap(_4Prime -> fmap(constantly(_4Prime))).fmap(Applicative::coerce).coerce(); } + /** + * Returns a Tuple of all the elements of this Tuple except the last + * + * @return The Tuple representing all but the last element + */ + public Tuple3<_1, _2, _3> init() { + return rotateR4().tail(); + } + /** * Given a value of type A, produced an instance of this tuple with each slot set to that value. * diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple5.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple5.java index 869a41f97..ef05c836b 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple5.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple5.java @@ -273,6 +273,15 @@ AppTrav extends Applicative> AppTrav traverse( return fn.apply(_5).fmap(_3Prime -> fmap(constantly(_3Prime))).fmap(Applicative::coerce).coerce(); } + /** + * Returns a Tuple of all the elements of this Tuple except the last + * + * @return The Tuple representing all but the last element + */ + public Tuple4<_1, _2, _3, _4> init() { + return rotateR5().tail(); + } + /** * Given a value of type A, produced an instance of this tuple with each slot set to that value. * diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple6.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple6.java index 72bbac9ba..94918a0d3 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple6.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple6.java @@ -304,6 +304,15 @@ AppTrav extends Applicative> AppTrav traverse( return fn.apply(_6).fmap(_6Prime -> fmap(constantly(_6Prime))).fmap(Applicative::coerce).coerce(); } + /** + * Returns a Tuple of all the elements of this Tuple except the last + * + * @return The Tuple representing all but the last element + */ + public Tuple5<_1, _2, _3, _4, _5> init() { + return rotateR6().tail(); + } + /** * Given a value of type A, produced an instance of this tuple with each slot set to that value. * diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple7.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple7.java index 3a2f027b7..f3b615177 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple7.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple7.java @@ -334,6 +334,15 @@ AppTrav extends Applicative> AppTrav traverse( return fn.apply(_7).fmap(_7Prime -> fmap(constantly(_7Prime))).fmap(Applicative::coerce).coerce(); } + /** + * Returns a Tuple of all the elements of this Tuple except the last + * + * @return The Tuple representing all but the last element + */ + public Tuple6<_1, _2, _3, _4, _5, _6> init() { + return rotateR7().tail(); + } + /** * Given a value of type A, produced an instance of this tuple with each slot set to that value. * diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple8.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple8.java index c97cea46d..08b9e90b7 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple8.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple8.java @@ -364,6 +364,15 @@ AppTrav extends Applicative> AppTrav traverse( return fn.apply(_8).fmap(_8Prime -> fmap(constantly(_8Prime))).fmap(Applicative::coerce).coerce(); } + /** + * Returns a Tuple of all the elements of this Tuple except the last + * + * @return The Tuple representing all but the last element + */ + public Tuple7<_1, _2, _3, _4, _5, _6, _7> init() { + return rotateR8().tail(); + } + /** * Given a value of type A, produced an instance of this tuple with each slot set to that value. * diff --git a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple3Test.java b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple3Test.java index 55842ee8b..0543a30ab 100644 --- a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple3Test.java +++ b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple3Test.java @@ -6,12 +6,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import testsupport.traits.ApplicativeLaws; -import testsupport.traits.BifunctorLaws; -import testsupport.traits.FunctorLaws; -import testsupport.traits.MonadLaws; -import testsupport.traits.MonadRecLaws; -import testsupport.traits.TraversableLaws; +import testsupport.traits.*; import static com.jnape.palatable.lambda.adt.Maybe.just; import static com.jnape.palatable.lambda.adt.Maybe.nothing; @@ -22,10 +17,7 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.*; @RunWith(Traits.class) public class Tuple3Test { @@ -126,4 +118,10 @@ public void staticPure() { Tuple3 tuple = pureTuple(1, "2").apply('3'); assertEquals(tuple(1, "2", '3'), tuple); } + + @Test + public void init() { + assertEquals(tuple(1, 2), + tuple(1, 2, 3).init()); + } } diff --git a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple4Test.java b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple4Test.java index bb5380891..7b5acf0ae 100644 --- a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple4Test.java +++ b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple4Test.java @@ -6,12 +6,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import testsupport.traits.ApplicativeLaws; -import testsupport.traits.BifunctorLaws; -import testsupport.traits.FunctorLaws; -import testsupport.traits.MonadLaws; -import testsupport.traits.MonadRecLaws; -import testsupport.traits.TraversableLaws; +import testsupport.traits.*; import static com.jnape.palatable.lambda.adt.Maybe.just; import static com.jnape.palatable.lambda.adt.Maybe.nothing; @@ -21,10 +16,7 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.*; @RunWith(Traits.class) public class Tuple4Test { @@ -127,4 +119,10 @@ public void staticPure() { Tuple4 tuple = pureTuple(1, "2", '3').apply(true); assertEquals(tuple(1, "2", '3', true), tuple); } + + @Test + public void init() { + assertEquals(tuple(1, 2, 3), + tuple(1, 2, 3, 4).init()); + } } \ No newline at end of file diff --git a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple5Test.java b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple5Test.java index f156f9072..50539e777 100644 --- a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple5Test.java +++ b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple5Test.java @@ -7,12 +7,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import testsupport.traits.ApplicativeLaws; -import testsupport.traits.BifunctorLaws; -import testsupport.traits.FunctorLaws; -import testsupport.traits.MonadLaws; -import testsupport.traits.MonadRecLaws; -import testsupport.traits.TraversableLaws; +import testsupport.traits.*; import static com.jnape.palatable.lambda.adt.Maybe.just; import static com.jnape.palatable.lambda.adt.Maybe.nothing; @@ -22,10 +17,7 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.*; @RunWith(Traits.class) public class Tuple5Test { @@ -133,4 +125,10 @@ public void staticPure() { Tuple5 tuple = pureTuple(1, "2", '3', true).apply(5f); assertEquals(tuple(1, "2", '3', true, 5f), tuple); } + + @Test + public void init() { + assertEquals(tuple(1, 2, 3, 4), + tuple(1, 2, 3, 4, 5).init()); + } } \ No newline at end of file diff --git a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple6Test.java b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple6Test.java index a148ae972..08b17bddd 100644 --- a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple6Test.java +++ b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple6Test.java @@ -7,12 +7,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import testsupport.traits.ApplicativeLaws; -import testsupport.traits.BifunctorLaws; -import testsupport.traits.FunctorLaws; -import testsupport.traits.MonadLaws; -import testsupport.traits.MonadRecLaws; -import testsupport.traits.TraversableLaws; +import testsupport.traits.*; import static com.jnape.palatable.lambda.adt.Maybe.just; import static com.jnape.palatable.lambda.adt.Maybe.nothing; @@ -22,10 +17,7 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.*; @RunWith(Traits.class) public class Tuple6Test { @@ -134,7 +126,14 @@ public void fromIterable() { @Test public void staticPure() { - Tuple6 tuple = pureTuple(1, "2", '3', true, 5f).apply((byte) 6); + Tuple6 tuple = pureTuple(1, "2", '3', true, 5f).apply( + (byte) 6); assertEquals(tuple(1, "2", '3', true, 5f, (byte) 6), tuple); } + + @Test + public void init() { + assertEquals(tuple(1, 2, 3, 4, 5), + tuple(1, 2, 3, 4, 5, 6).init()); + } } \ No newline at end of file diff --git a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple7Test.java b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple7Test.java index f1cbb7f3a..5eedfa935 100644 --- a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple7Test.java +++ b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple7Test.java @@ -7,12 +7,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import testsupport.traits.ApplicativeLaws; -import testsupport.traits.BifunctorLaws; -import testsupport.traits.FunctorLaws; -import testsupport.traits.MonadLaws; -import testsupport.traits.MonadRecLaws; -import testsupport.traits.TraversableLaws; +import testsupport.traits.*; import static com.jnape.palatable.lambda.adt.Maybe.just; import static com.jnape.palatable.lambda.adt.Maybe.nothing; @@ -22,10 +17,7 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.*; @RunWith(Traits.class) public class Tuple7Test { @@ -141,4 +133,10 @@ public void staticPure() { pureTuple((byte) 1, (short) 2, 3, 4L, 5F, 6D).apply(true); assertEquals(tuple((byte) 1, (short) 2, 3, 4L, 5F, 6D, true), tuple); } + + @Test + public void init() { + assertEquals(tuple(1, 2, 3, 4, 5, 6), + tuple(1, 2, 3, 4, 5, 6, 7).init()); + } } \ No newline at end of file diff --git a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple8Test.java b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple8Test.java index dacab1869..09c1e1a49 100644 --- a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple8Test.java +++ b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple8Test.java @@ -7,12 +7,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import testsupport.traits.ApplicativeLaws; -import testsupport.traits.BifunctorLaws; -import testsupport.traits.FunctorLaws; -import testsupport.traits.MonadLaws; -import testsupport.traits.MonadRecLaws; -import testsupport.traits.TraversableLaws; +import testsupport.traits.*; import java.time.LocalDate; @@ -24,10 +19,7 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.*; @RunWith(Traits.class) public class Tuple8Test { @@ -158,4 +150,10 @@ public void staticPure() { pureTuple((byte) 1, (short) 2, 3, 4L, 5F, 6D, true).apply('8'); assertEquals(tuple((byte) 1, (short) 2, 3, 4L, 5F, 6D, true, '8'), tuple); } + + @Test + public void init() { + assertEquals(tuple(1, 2, 3, 4, 5, 6, 7), + tuple(1, 2, 3, 4, 5, 6, 7, 8).init()); + } } \ No newline at end of file From c382e15fd71da1e36a0eef8a1979396b87dc6f89 Mon Sep 17 00:00:00 2001 From: Alexander Bandukwala <7h3kk1d@gmail.com> Date: Wed, 7 Oct 2020 14:58:23 -0500 Subject: [PATCH 2/4] Add Tuple2::init and fix javadocs --- .../palatable/lambda/adt/hlist/Tuple2.java | 9 +++++++++ .../palatable/lambda/adt/hlist/Tuple3.java | 4 ++-- .../palatable/lambda/adt/hlist/Tuple4.java | 4 ++-- .../palatable/lambda/adt/hlist/Tuple5.java | 4 ++-- .../palatable/lambda/adt/hlist/Tuple6.java | 4 ++-- .../palatable/lambda/adt/hlist/Tuple7.java | 4 ++-- .../palatable/lambda/adt/hlist/Tuple8.java | 4 ++-- .../palatable/lambda/adt/hlist/Tuple2Test.java | 18 +++++++----------- 8 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple2.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple2.java index cdf79be12..1c7cf9910 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple2.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple2.java @@ -237,6 +237,15 @@ AppTrav extends Applicative> AppTrav traverse( return fn.apply(_2).fmap(_2Prime -> fmap(constantly(_2Prime))).fmap(Applicative::coerce).coerce(); } + /** + * Returns a {@link SingletonHList}<_1> of the 1st element + * + * @return The {@link SingletonHList}<_1> + */ + public SingletonHList<_1> init() { + return invert().tail(); + } + /** * Static factory method for creating Tuple2s from {@link java.util.Map.Entry}s. * diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple3.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple3.java index d1ca98828..dd1db0a7b 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple3.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple3.java @@ -220,9 +220,9 @@ AppTrav extends Applicative> AppTrav traverse( } /** - * Returns a Tuple of all the elements of this Tuple except the last + * Returns a {@link Tuple2}<_1, _2> of all the elements of this {@link Tuple3}<_1, _2, _3> except the last * - * @return The Tuple representing all but the last element + * @return The {@link Tuple2}<_1, _2> representing all but the last element */ public Tuple2<_1, _2> init() { return rotateR3().tail(); diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple4.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple4.java index daf03bcac..8b5c811b3 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple4.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple4.java @@ -247,9 +247,9 @@ AppTrav extends Applicative> AppTrav traverse( } /** - * Returns a Tuple of all the elements of this Tuple except the last + * Returns a {@link Tuple3}<_1, _2, _3> of all the elements of this {@link Tuple4}<_1, _2, _3, _4> except the last * - * @return The Tuple representing all but the last element + * @return The {@link Tuple3}<_1, _2, _3> representing all but the last element */ public Tuple3<_1, _2, _3> init() { return rotateR4().tail(); diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple5.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple5.java index ef05c836b..eb9d5054e 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple5.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple5.java @@ -274,9 +274,9 @@ AppTrav extends Applicative> AppTrav traverse( } /** - * Returns a Tuple of all the elements of this Tuple except the last + * Returns a {@link Tuple4}<_1, _2, _3, _4> of all the elements of this {@link Tuple5}<_1, _2, _3, _4, _5> except the last * - * @return The Tuple representing all but the last element + * @return The {@link Tuple4}<_1, _2, _3, _4> representing all but the last element */ public Tuple4<_1, _2, _3, _4> init() { return rotateR5().tail(); diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple6.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple6.java index 94918a0d3..4d20796c6 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple6.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple6.java @@ -305,9 +305,9 @@ AppTrav extends Applicative> AppTrav traverse( } /** - * Returns a Tuple of all the elements of this Tuple except the last + * Returns a {@link Tuple5}<_1, _2, _3, _4, _5> of all the elements of this {@link Tuple6}<_1, _2, _3, _4, _5, _6> except the last * - * @return The Tuple representing all but the last element + * @return The {@link Tuple5}<_1, _2, _3, _4, _5> representing all but the last element */ public Tuple5<_1, _2, _3, _4, _5> init() { return rotateR6().tail(); diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple7.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple7.java index f3b615177..b46551092 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple7.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple7.java @@ -335,9 +335,9 @@ AppTrav extends Applicative> AppTrav traverse( } /** - * Returns a Tuple of all the elements of this Tuple except the last + * Returns a {@link Tuple6}<_1, _2, _3, _4, _5, _6> of all the elements of this {@link Tuple7}<_1, _2, _3, _4, _5, _6, _7> except the last * - * @return The Tuple representing all but the last element + * @return The {@link Tuple6}<_1, _2, _3, _4, _5, _6> representing all but the last element */ public Tuple6<_1, _2, _3, _4, _5, _6> init() { return rotateR7().tail(); diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple8.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple8.java index 08b9e90b7..c95ee2de8 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple8.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple8.java @@ -365,9 +365,9 @@ AppTrav extends Applicative> AppTrav traverse( } /** - * Returns a Tuple of all the elements of this Tuple except the last + * Returns a {@link Tuple7}<_1, _2, _3, _4, _5, _6, _7> of all the elements of this {@link Tuple8}<_1, _2, _3, _4, _5, _6, _7, _8> except the last * - * @return The Tuple representing all but the last element + * @return The {@link Tuple7}<_1, _2, _3, _4, _5, _6, _7> representing all but the last element */ public Tuple7<_1, _2, _3, _4, _5, _6, _7> init() { return rotateR8().tail(); diff --git a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple2Test.java b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple2Test.java index 31dc2f285..0647dbe82 100644 --- a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple2Test.java +++ b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple2Test.java @@ -6,13 +6,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import testsupport.traits.ApplicativeLaws; -import testsupport.traits.BifunctorLaws; -import testsupport.traits.FunctorLaws; -import testsupport.traits.MonadLaws; -import testsupport.traits.MonadRecLaws; -import testsupport.traits.MonadWriterLaws; -import testsupport.traits.TraversableLaws; +import testsupport.traits.*; import java.util.HashMap; import java.util.Map; @@ -26,10 +20,7 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.only; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.*; @RunWith(Traits.class) public class Tuple2Test { @@ -63,6 +54,11 @@ public void tail() { assertEquals(new SingletonHList<>(2), tuple2.tail()); } + @Test + public void init() { + assertEquals(new SingletonHList<>(1), tuple2.init()); + } + @Test public void cons() { assertEquals(new Tuple3<>(0, tuple2), tuple2.cons(0)); From b9946431e49ac3f2a85ea856c1228750b6e0056a Mon Sep 17 00:00:00 2001 From: Alexander Bandukwala <7h3kk1d@gmail.com> Date: Wed, 7 Oct 2020 15:02:13 -0500 Subject: [PATCH 3/4] Undo import wildcards --- .../palatable/lambda/adt/hlist/Tuple2Test.java | 13 +++++++++++-- .../palatable/lambda/adt/hlist/Tuple3Test.java | 12 ++++++++++-- .../palatable/lambda/adt/hlist/Tuple4Test.java | 12 ++++++++++-- .../palatable/lambda/adt/hlist/Tuple5Test.java | 12 ++++++++++-- .../palatable/lambda/adt/hlist/Tuple6Test.java | 15 +++++++++++---- .../palatable/lambda/adt/hlist/Tuple7Test.java | 12 ++++++++++-- .../palatable/lambda/adt/hlist/Tuple8Test.java | 12 ++++++++++-- 7 files changed, 72 insertions(+), 16 deletions(-) diff --git a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple2Test.java b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple2Test.java index 0647dbe82..6637386ce 100644 --- a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple2Test.java +++ b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple2Test.java @@ -6,7 +6,13 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import testsupport.traits.*; +import testsupport.traits.ApplicativeLaws; +import testsupport.traits.BifunctorLaws; +import testsupport.traits.FunctorLaws; +import testsupport.traits.MonadLaws; +import testsupport.traits.MonadRecLaws; +import testsupport.traits.MonadWriterLaws; +import testsupport.traits.TraversableLaws; import java.util.HashMap; import java.util.Map; @@ -20,7 +26,10 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.only; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; @RunWith(Traits.class) public class Tuple2Test { diff --git a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple3Test.java b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple3Test.java index 0543a30ab..a4cad8198 100644 --- a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple3Test.java +++ b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple3Test.java @@ -6,7 +6,12 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import testsupport.traits.*; +import testsupport.traits.ApplicativeLaws; +import testsupport.traits.BifunctorLaws; +import testsupport.traits.FunctorLaws; +import testsupport.traits.MonadLaws; +import testsupport.traits.MonadRecLaws; +import testsupport.traits.TraversableLaws; import static com.jnape.palatable.lambda.adt.Maybe.just; import static com.jnape.palatable.lambda.adt.Maybe.nothing; @@ -17,7 +22,10 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; @RunWith(Traits.class) public class Tuple3Test { diff --git a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple4Test.java b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple4Test.java index 7b5acf0ae..13d5da838 100644 --- a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple4Test.java +++ b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple4Test.java @@ -6,7 +6,12 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import testsupport.traits.*; +import testsupport.traits.ApplicativeLaws; +import testsupport.traits.BifunctorLaws; +import testsupport.traits.FunctorLaws; +import testsupport.traits.MonadLaws; +import testsupport.traits.MonadRecLaws; +import testsupport.traits.TraversableLaws; import static com.jnape.palatable.lambda.adt.Maybe.just; import static com.jnape.palatable.lambda.adt.Maybe.nothing; @@ -16,7 +21,10 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; @RunWith(Traits.class) public class Tuple4Test { diff --git a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple5Test.java b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple5Test.java index 50539e777..7b81a2190 100644 --- a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple5Test.java +++ b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple5Test.java @@ -7,7 +7,12 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import testsupport.traits.*; +import testsupport.traits.ApplicativeLaws; +import testsupport.traits.BifunctorLaws; +import testsupport.traits.FunctorLaws; +import testsupport.traits.MonadLaws; +import testsupport.traits.MonadRecLaws; +import testsupport.traits.TraversableLaws; import static com.jnape.palatable.lambda.adt.Maybe.just; import static com.jnape.palatable.lambda.adt.Maybe.nothing; @@ -17,7 +22,10 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; @RunWith(Traits.class) public class Tuple5Test { diff --git a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple6Test.java b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple6Test.java index 08b17bddd..880eee1e4 100644 --- a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple6Test.java +++ b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple6Test.java @@ -7,7 +7,12 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import testsupport.traits.*; +import testsupport.traits.ApplicativeLaws; +import testsupport.traits.BifunctorLaws; +import testsupport.traits.FunctorLaws; +import testsupport.traits.MonadLaws; +import testsupport.traits.MonadRecLaws; +import testsupport.traits.TraversableLaws; import static com.jnape.palatable.lambda.adt.Maybe.just; import static com.jnape.palatable.lambda.adt.Maybe.nothing; @@ -17,7 +22,10 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; @RunWith(Traits.class) public class Tuple6Test { @@ -126,8 +134,7 @@ public void fromIterable() { @Test public void staticPure() { - Tuple6 tuple = pureTuple(1, "2", '3', true, 5f).apply( - (byte) 6); + Tuple6 tuple = pureTuple(1, "2", '3', true, 5f).apply((byte) 6); assertEquals(tuple(1, "2", '3', true, 5f, (byte) 6), tuple); } diff --git a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple7Test.java b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple7Test.java index 5eedfa935..d5b13fd24 100644 --- a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple7Test.java +++ b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple7Test.java @@ -7,7 +7,12 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import testsupport.traits.*; +import testsupport.traits.ApplicativeLaws; +import testsupport.traits.BifunctorLaws; +import testsupport.traits.FunctorLaws; +import testsupport.traits.MonadLaws; +import testsupport.traits.MonadRecLaws; +import testsupport.traits.TraversableLaws; import static com.jnape.palatable.lambda.adt.Maybe.just; import static com.jnape.palatable.lambda.adt.Maybe.nothing; @@ -17,7 +22,10 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; @RunWith(Traits.class) public class Tuple7Test { diff --git a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple8Test.java b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple8Test.java index 09c1e1a49..ced5531b5 100644 --- a/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple8Test.java +++ b/src/test/java/com/jnape/palatable/lambda/adt/hlist/Tuple8Test.java @@ -7,7 +7,12 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import testsupport.traits.*; +import testsupport.traits.ApplicativeLaws; +import testsupport.traits.BifunctorLaws; +import testsupport.traits.FunctorLaws; +import testsupport.traits.MonadLaws; +import testsupport.traits.MonadRecLaws; +import testsupport.traits.TraversableLaws; import java.time.LocalDate; @@ -19,7 +24,10 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; @RunWith(Traits.class) public class Tuple8Test { From 6f04d60f426cdff1ec6ac8c90136ebda9e0cc4de Mon Sep 17 00:00:00 2001 From: jnape Date: Thu, 8 Oct 2020 09:21:35 -0500 Subject: [PATCH 4/4] formatting and linting --- .../java/com/jnape/palatable/lambda/adt/hlist/Tuple2.java | 2 +- .../java/com/jnape/palatable/lambda/adt/hlist/Tuple3.java | 5 +++-- .../java/com/jnape/palatable/lambda/adt/hlist/Tuple4.java | 5 +++-- .../java/com/jnape/palatable/lambda/adt/hlist/Tuple5.java | 5 +++-- .../java/com/jnape/palatable/lambda/adt/hlist/Tuple6.java | 3 ++- .../java/com/jnape/palatable/lambda/adt/hlist/Tuple7.java | 5 +++-- .../java/com/jnape/palatable/lambda/adt/hlist/Tuple8.java | 5 +++-- 7 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple2.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple2.java index 1c7cf9910..aafa40b5e 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple2.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple2.java @@ -238,7 +238,7 @@ AppTrav extends Applicative> AppTrav traverse( } /** - * Returns a {@link SingletonHList}<_1> of the 1st element + * Returns a {@link SingletonHList}<_1> of the first element. * * @return The {@link SingletonHList}<_1> */ diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple3.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple3.java index dd1db0a7b..28587154c 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple3.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple3.java @@ -220,7 +220,8 @@ AppTrav extends Applicative> AppTrav traverse( } /** - * Returns a {@link Tuple2}<_1, _2> of all the elements of this {@link Tuple3}<_1, _2, _3> except the last + * Returns a {@link Tuple2}<_1, _2> of all the elements of this + * {@link Tuple3}<_1, _2, _3> except the last. * * @return The {@link Tuple2}<_1, _2> representing all but the last element */ @@ -264,7 +265,7 @@ public static Maybe> fromIterable(Iterable as) { public static <_1, _2> Pure> pureTuple(_1 _1, _2 _2) { return new Pure>() { @Override - public <_3> Tuple3<_1, _2, _3> checkedApply(_3 _3) throws Throwable { + public <_3> Tuple3<_1, _2, _3> checkedApply(_3 _3) { return tuple(_1, _2, _3); } }; diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple4.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple4.java index 8b5c811b3..a170a278e 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple4.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple4.java @@ -247,7 +247,8 @@ AppTrav extends Applicative> AppTrav traverse( } /** - * Returns a {@link Tuple3}<_1, _2, _3> of all the elements of this {@link Tuple4}<_1, _2, _3, _4> except the last + * Returns a {@link Tuple3}<_1, _2, _3> of all the elements of this + * {@link Tuple4}<_1, _2, _3, _4> except the last. * * @return The {@link Tuple3}<_1, _2, _3> representing all but the last element */ @@ -293,7 +294,7 @@ public static Maybe> fromIterable(Iterable as) { public static <_1, _2, _3> Pure> pureTuple(_1 _1, _2 _2, _3 _3) { return new Pure>() { @Override - public <_4> Tuple4<_1, _2, _3, _4> checkedApply(_4 _4) throws Throwable { + public <_4> Tuple4<_1, _2, _3, _4> checkedApply(_4 _4) { return tuple(_1, _2, _3, _4); } }; diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple5.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple5.java index eb9d5054e..23c60829f 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple5.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple5.java @@ -274,7 +274,8 @@ AppTrav extends Applicative> AppTrav traverse( } /** - * Returns a {@link Tuple4}<_1, _2, _3, _4> of all the elements of this {@link Tuple5}<_1, _2, _3, _4, _5> except the last + * Returns a {@link Tuple4}<_1, _2, _3, _4> of all the elements of this + * {@link Tuple5}<_1, _2, _3, _4, _5> except the last. * * @return The {@link Tuple4}<_1, _2, _3, _4> representing all but the last element */ @@ -322,7 +323,7 @@ public static Maybe> fromIterable(Iterable as) { public static <_1, _2, _3, _4> Pure> pureTuple(_1 _1, _2 _2, _3 _3, _4 _4) { return new Pure>() { @Override - public <_5> Tuple5<_1, _2, _3, _4, _5> checkedApply(_5 _5) throws Throwable { + public <_5> Tuple5<_1, _2, _3, _4, _5> checkedApply(_5 _5) { return tuple(_1, _2, _3, _4, _5); } }; diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple6.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple6.java index 4d20796c6..1034e3b6b 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple6.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple6.java @@ -305,7 +305,8 @@ AppTrav extends Applicative> AppTrav traverse( } /** - * Returns a {@link Tuple5}<_1, _2, _3, _4, _5> of all the elements of this {@link Tuple6}<_1, _2, _3, _4, _5, _6> except the last + * Returns a {@link Tuple5}<_1, _2, _3, _4, _5> of all the elements of this + * {@link Tuple6}<_1, _2, _3, _4, _5, _6> except the last. * * @return The {@link Tuple5}<_1, _2, _3, _4, _5> representing all but the last element */ diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple7.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple7.java index b46551092..e5589553c 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple7.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple7.java @@ -335,7 +335,8 @@ AppTrav extends Applicative> AppTrav traverse( } /** - * Returns a {@link Tuple6}<_1, _2, _3, _4, _5, _6> of all the elements of this {@link Tuple7}<_1, _2, _3, _4, _5, _6, _7> except the last + * Returns a {@link Tuple6}<_1, _2, _3, _4, _5, _6> of all the elements of this + * {@link Tuple7}<_1, _2, _3, _4, _5, _6, _7> except the last. * * @return The {@link Tuple6}<_1, _2, _3, _4, _5, _6> representing all but the last element */ @@ -388,7 +389,7 @@ public static Maybe> fromIterable(Iterable as _5 _5, _6 _6) { return new Pure>() { @Override - public <_7> Tuple7<_1, _2, _3, _4, _5, _6, _7> checkedApply(_7 _7) throws Throwable { + public <_7> Tuple7<_1, _2, _3, _4, _5, _6, _7> checkedApply(_7 _7) { return tuple(_1, _2, _3, _4, _5, _6, _7); } }; diff --git a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple8.java b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple8.java index c95ee2de8..1122d7e9d 100644 --- a/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple8.java +++ b/src/main/java/com/jnape/palatable/lambda/adt/hlist/Tuple8.java @@ -365,7 +365,8 @@ AppTrav extends Applicative> AppTrav traverse( } /** - * Returns a {@link Tuple7}<_1, _2, _3, _4, _5, _6, _7> of all the elements of this {@link Tuple8}<_1, _2, _3, _4, _5, _6, _7, _8> except the last + * Returns a {@link Tuple7}<_1, _2, _3, _4, _5, _6, _7> of all the elements of this + * {@link Tuple8}<_1, _2, _3, _4, _5, _6, _7, _8> except the last. * * @return The {@link Tuple7}<_1, _2, _3, _4, _5, _6, _7> representing all but the last element */ @@ -422,7 +423,7 @@ public static Maybe> fromIterable(Iterable _7 _7) { return new Pure>() { @Override - public <_8> Tuple8<_1, _2, _3, _4, _5, _6, _7, _8> checkedApply(_8 _8) throws Throwable { + public <_8> Tuple8<_1, _2, _3, _4, _5, _6, _7, _8> checkedApply(_8 _8) { return tuple(_1, _2, _3, _4, _5, _6, _7, _8); } };