From 0e22161ebdfb3293bb40a28705e73704db9d0bb5 Mon Sep 17 00:00:00 2001 From: bloder Date: Tue, 26 Apr 2016 16:48:41 -0300 Subject: [PATCH 01/12] Add take function logic to seq --- seq/src/main/java/com/jmonad/seq/Seq.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/seq/src/main/java/com/jmonad/seq/Seq.java b/seq/src/main/java/com/jmonad/seq/Seq.java index 6528dd4..9b38662 100755 --- a/seq/src/main/java/com/jmonad/seq/Seq.java +++ b/seq/src/main/java/com/jmonad/seq/Seq.java @@ -230,6 +230,17 @@ public Seq uniqueBy(Function fn) { return buffer; } + /** + * Returns the first n elements of the sequence + * @param amount + * @return Seq + */ + public Seq take(int amount) { + if(amount <= 0) return new Seq(); + if(amount > this.list.size()) return new Seq(this.list); + return new Seq(this.list.subList(0, amount)); + } + /** * Takes a list of items, and using the binary function supplied, folds them * into a single value. Requires an initial value (the second argument), From 86e568a33075b7734ab066a5253ab62a038a2c62 Mon Sep 17 00:00:00 2001 From: bloder Date: Tue, 26 Apr 2016 17:00:25 -0300 Subject: [PATCH 02/12] Add drop function logic to seq --- seq/src/main/java/com/jmonad/seq/Seq.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/seq/src/main/java/com/jmonad/seq/Seq.java b/seq/src/main/java/com/jmonad/seq/Seq.java index 9b38662..590d58f 100755 --- a/seq/src/main/java/com/jmonad/seq/Seq.java +++ b/seq/src/main/java/com/jmonad/seq/Seq.java @@ -238,7 +238,18 @@ public Seq uniqueBy(Function fn) { public Seq take(int amount) { if(amount <= 0) return new Seq(); if(amount > this.list.size()) return new Seq(this.list); - return new Seq(this.list.subList(0, amount)); + return new Seq(this.list.subList(0, amount - 1)); + } + + /** + * Remove the first n elements of the sequence + * @param amount + * @return Seq + */ + public Seq drop(int amount) { + if(amount <= 0) return new Seq(this.list); + if(amount > this.list.size()) return new Seq(); + return new Seq(this.list.subList(amount - 1, this.list.size())); } /** From 7deca223a8c76a40749defba2313c7b59599cfac Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 26 Apr 2016 19:48:38 -0300 Subject: [PATCH 03/12] Fix array list cast bug A subList cannot be cast to arrayList --- seq/src/main/java/com/jmonad/seq/Seq.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/seq/src/main/java/com/jmonad/seq/Seq.java b/seq/src/main/java/com/jmonad/seq/Seq.java index 590d58f..6d5c5ce 100755 --- a/seq/src/main/java/com/jmonad/seq/Seq.java +++ b/seq/src/main/java/com/jmonad/seq/Seq.java @@ -236,9 +236,12 @@ public Seq uniqueBy(Function fn) { * @return Seq */ public Seq take(int amount) { - if(amount <= 0) return new Seq(); + Seq buffer = new Seq(); + if(amount <= 0) return buffer; if(amount > this.list.size()) return new Seq(this.list); - return new Seq(this.list.subList(0, amount - 1)); + + for(int i = 0; i < amount; i++) buffer.add(this.list.get(i)); + return buffer; } /** From 173a65bc26b55452fee2b402e709a4c1a0354fce Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 26 Apr 2016 19:50:53 -0300 Subject: [PATCH 04/12] Add take test class --- .../test/java/com/jmonad/seq/SeqTakeTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 seq/src/test/java/com/jmonad/seq/SeqTakeTest.java diff --git a/seq/src/test/java/com/jmonad/seq/SeqTakeTest.java b/seq/src/test/java/com/jmonad/seq/SeqTakeTest.java new file mode 100644 index 0000000..0ed72c1 --- /dev/null +++ b/seq/src/test/java/com/jmonad/seq/SeqTakeTest.java @@ -0,0 +1,16 @@ +package com.jmonad.seq; + +import org.junit.Test; + +public class SeqTakeTest { + + @Test public void takeListElementsTest() { + Integer[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + + Seq elements = new Seq(numbers); + + assert elements.take(5).toArrayList().toString().equals("[1, 2, 3, 4, 5]"); + assert elements.take(0).toArrayList().toString().equals("[]"); + assert elements.take(20).toArrayList().toString().equals("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"); + } +} From 620b984ec7da27805858cf9f03e9afc8eace65c2 Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 26 Apr 2016 20:02:21 -0300 Subject: [PATCH 05/12] Fix array cast bug in drop function --- seq/src/main/java/com/jmonad/seq/Seq.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/seq/src/main/java/com/jmonad/seq/Seq.java b/seq/src/main/java/com/jmonad/seq/Seq.java index 6d5c5ce..e98ee84 100755 --- a/seq/src/main/java/com/jmonad/seq/Seq.java +++ b/seq/src/main/java/com/jmonad/seq/Seq.java @@ -250,9 +250,12 @@ public Seq take(int amount) { * @return Seq */ public Seq drop(int amount) { + Seq buffer = new Seq(); if(amount <= 0) return new Seq(this.list); - if(amount > this.list.size()) return new Seq(); - return new Seq(this.list.subList(amount - 1, this.list.size())); + if(amount > this.list.size()) return buffer; + + for(int i = amount; i < this.list.size(); i++) buffer.add(this.list.get(i)); + return buffer; } /** From a800b8bb88529e76f63b782c410444864d6ecc8d Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 26 Apr 2016 20:03:10 -0300 Subject: [PATCH 06/12] Add drop test class --- .../test/java/com/jmonad/seq/SeqDropTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 seq/src/test/java/com/jmonad/seq/SeqDropTest.java diff --git a/seq/src/test/java/com/jmonad/seq/SeqDropTest.java b/seq/src/test/java/com/jmonad/seq/SeqDropTest.java new file mode 100644 index 0000000..d0e9ece --- /dev/null +++ b/seq/src/test/java/com/jmonad/seq/SeqDropTest.java @@ -0,0 +1,16 @@ +package com.jmonad.seq; + +import org.junit.Test; + +public class SeqDropTest { + + @Test public void dropListElementsTest() { + Integer[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + + Seq elements = new Seq(numbers); + + assert elements.drop(5).toArrayList().toString().equals("[6, 7, 8, 9, 10]"); + assert elements.drop(0).toArrayList().toString().equals("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"); + assert elements.drop(20).toArrayList().toString().equals("[]"); + } +} From c16691b778c3e3f12bb01d3c584c92b4b8bec4cf Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 26 Apr 2016 20:55:18 -0300 Subject: [PATCH 07/12] Fix check style problem --- seq/src/main/java/com/jmonad/seq/Seq.java | 12 ++++++------ seq/src/test/java/com/jmonad/seq/SeqDropTest.java | 14 +++++++------- seq/src/test/java/com/jmonad/seq/SeqTakeTest.java | 14 +++++++------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/seq/src/main/java/com/jmonad/seq/Seq.java b/seq/src/main/java/com/jmonad/seq/Seq.java index e98ee84..3e72e61 100755 --- a/seq/src/main/java/com/jmonad/seq/Seq.java +++ b/seq/src/main/java/com/jmonad/seq/Seq.java @@ -237,10 +237,10 @@ public Seq uniqueBy(Function fn) { */ public Seq take(int amount) { Seq buffer = new Seq(); - if(amount <= 0) return buffer; - if(amount > this.list.size()) return new Seq(this.list); + if (amount <= 0) return buffer; + if (amount > this.list.size()) return new Seq(this.list); - for(int i = 0; i < amount; i++) buffer.add(this.list.get(i)); + for (int i = 0; i < amount; i++) buffer.add(this.list.get(i)); return buffer; } @@ -251,10 +251,10 @@ public Seq take(int amount) { */ public Seq drop(int amount) { Seq buffer = new Seq(); - if(amount <= 0) return new Seq(this.list); - if(amount > this.list.size()) return buffer; + if (amount <= 0) return new Seq(this.list); + if (amount > this.list.size()) return buffer; - for(int i = amount; i < this.list.size(); i++) buffer.add(this.list.get(i)); + for (int i = amount; i < this.list.size(); i++) buffer.add(this.list.get(i)); return buffer; } diff --git a/seq/src/test/java/com/jmonad/seq/SeqDropTest.java b/seq/src/test/java/com/jmonad/seq/SeqDropTest.java index d0e9ece..78897cc 100644 --- a/seq/src/test/java/com/jmonad/seq/SeqDropTest.java +++ b/seq/src/test/java/com/jmonad/seq/SeqDropTest.java @@ -4,13 +4,13 @@ public class SeqDropTest { - @Test public void dropListElementsTest() { - Integer[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + @Test public void dropListElementsTest() { + Integer[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - Seq elements = new Seq(numbers); + Seq elements = new Seq(numbers); - assert elements.drop(5).toArrayList().toString().equals("[6, 7, 8, 9, 10]"); - assert elements.drop(0).toArrayList().toString().equals("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"); - assert elements.drop(20).toArrayList().toString().equals("[]"); - } + assert elements.drop(5).toArrayList().toString().equals("[6, 7, 8, 9, 10]"); + assert elements.drop(0).toArrayList().toString().equals("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"); + assert elements.drop(20).toArrayList().toString().equals("[]"); + } } diff --git a/seq/src/test/java/com/jmonad/seq/SeqTakeTest.java b/seq/src/test/java/com/jmonad/seq/SeqTakeTest.java index 0ed72c1..642d964 100644 --- a/seq/src/test/java/com/jmonad/seq/SeqTakeTest.java +++ b/seq/src/test/java/com/jmonad/seq/SeqTakeTest.java @@ -4,13 +4,13 @@ public class SeqTakeTest { - @Test public void takeListElementsTest() { - Integer[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + @Test public void takeListElementsTest() { + Integer[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - Seq elements = new Seq(numbers); + Seq elements = new Seq(numbers); - assert elements.take(5).toArrayList().toString().equals("[1, 2, 3, 4, 5]"); - assert elements.take(0).toArrayList().toString().equals("[]"); - assert elements.take(20).toArrayList().toString().equals("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"); - } + assert elements.take(5).toArrayList().toString().equals("[1, 2, 3, 4, 5]"); + assert elements.take(0).toArrayList().toString().equals("[]"); + assert elements.take(20).toArrayList().toString().equals("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"); + } } From 8b87cc3d5e620baec4e934eb9cd3e2a9a378dce6 Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 26 Apr 2016 22:48:04 -0300 Subject: [PATCH 08/12] Split drop function tests --- .../test/java/com/jmonad/seq/SeqDropTest.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/seq/src/test/java/com/jmonad/seq/SeqDropTest.java b/seq/src/test/java/com/jmonad/seq/SeqDropTest.java index 78897cc..2221f37 100644 --- a/seq/src/test/java/com/jmonad/seq/SeqDropTest.java +++ b/seq/src/test/java/com/jmonad/seq/SeqDropTest.java @@ -4,13 +4,22 @@ public class SeqDropTest { - @Test public void dropListElementsTest() { - Integer[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - - Seq elements = new Seq(numbers); + private Integer[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + private Seq elements = new Seq(numbers); + @Test public void dropListElementsTest() { assert elements.drop(5).toArrayList().toString().equals("[6, 7, 8, 9, 10]"); + } + + @Test public void dropElementsWithNoAmountTest() { assert elements.drop(0).toArrayList().toString().equals("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"); + } + + @Test public void dropElementsWithNegativeAmountTest() { + assert elements.drop(-1).toArrayList().toString().equals("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"); + } + + @Test public void dropElementsWithAmountHigherThanListSizeTest() { assert elements.drop(20).toArrayList().toString().equals("[]"); } } From 331cd687cec70e43a420805bb595142c3abf5fa6 Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 26 Apr 2016 22:48:40 -0300 Subject: [PATCH 09/12] Split take function tests --- .../test/java/com/jmonad/seq/SeqTakeTest.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/seq/src/test/java/com/jmonad/seq/SeqTakeTest.java b/seq/src/test/java/com/jmonad/seq/SeqTakeTest.java index 642d964..664230e 100644 --- a/seq/src/test/java/com/jmonad/seq/SeqTakeTest.java +++ b/seq/src/test/java/com/jmonad/seq/SeqTakeTest.java @@ -4,13 +4,22 @@ public class SeqTakeTest { - @Test public void takeListElementsTest() { - Integer[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - - Seq elements = new Seq(numbers); + private Integer[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + private Seq elements = new Seq(numbers); + @Test public void takeListElementsTest() { assert elements.take(5).toArrayList().toString().equals("[1, 2, 3, 4, 5]"); + } + + @Test public void takeElementsWithNoAmountTest() { assert elements.take(0).toArrayList().toString().equals("[]"); + } + + @Test public void takeElementsWithNegativeAmountTest() { + assert elements.take(-1).toArrayList().toString().equals("[]"); + } + + @Test public void takeElementsWithAmountHigherThanListSizeTest() { assert elements.take(20).toArrayList().toString().equals("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"); } } From e8ab550017e36bdc65331bf00b4615814b80cedf Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 27 Apr 2016 18:12:16 -0300 Subject: [PATCH 10/12] Initialize seq without specify type in seq class --- seq/src/main/java/com/jmonad/seq/Seq.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/seq/src/main/java/com/jmonad/seq/Seq.java b/seq/src/main/java/com/jmonad/seq/Seq.java index 3e72e61..e52f3a6 100755 --- a/seq/src/main/java/com/jmonad/seq/Seq.java +++ b/seq/src/main/java/com/jmonad/seq/Seq.java @@ -236,9 +236,9 @@ public Seq uniqueBy(Function fn) { * @return Seq */ public Seq take(int amount) { - Seq buffer = new Seq(); + Seq buffer = new Seq<>(); if (amount <= 0) return buffer; - if (amount > this.list.size()) return new Seq(this.list); + if (amount > this.list.size()) return new Seq<>(this.list); for (int i = 0; i < amount; i++) buffer.add(this.list.get(i)); return buffer; @@ -250,8 +250,8 @@ public Seq take(int amount) { * @return Seq */ public Seq drop(int amount) { - Seq buffer = new Seq(); - if (amount <= 0) return new Seq(this.list); + Seq buffer = new Seq<>(); + if (amount <= 0) return new Seq<>(this.list); if (amount > this.list.size()) return buffer; for (int i = amount; i < this.list.size(); i++) buffer.add(this.list.get(i)); From 0e85ae36572a52fff56a24967b77795275d34ee4 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 27 Apr 2016 18:15:02 -0300 Subject: [PATCH 11/12] Initialize seq without type in drop test class --- seq/src/test/java/com/jmonad/seq/SeqDropTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/seq/src/test/java/com/jmonad/seq/SeqDropTest.java b/seq/src/test/java/com/jmonad/seq/SeqDropTest.java index 2221f37..6a22a0d 100644 --- a/seq/src/test/java/com/jmonad/seq/SeqDropTest.java +++ b/seq/src/test/java/com/jmonad/seq/SeqDropTest.java @@ -5,7 +5,7 @@ public class SeqDropTest { private Integer[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - private Seq elements = new Seq(numbers); + private Seq elements = new Seq<>(numbers); @Test public void dropListElementsTest() { assert elements.drop(5).toArrayList().toString().equals("[6, 7, 8, 9, 10]"); From 780ee5ff071b37f4684d2598ff954a5a27787541 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 27 Apr 2016 18:15:55 -0300 Subject: [PATCH 12/12] Initialize seq without type in take test class --- seq/src/test/java/com/jmonad/seq/SeqTakeTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/seq/src/test/java/com/jmonad/seq/SeqTakeTest.java b/seq/src/test/java/com/jmonad/seq/SeqTakeTest.java index 664230e..6f6ccce 100644 --- a/seq/src/test/java/com/jmonad/seq/SeqTakeTest.java +++ b/seq/src/test/java/com/jmonad/seq/SeqTakeTest.java @@ -5,7 +5,7 @@ public class SeqTakeTest { private Integer[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - private Seq elements = new Seq(numbers); + private Seq elements = new Seq<>(numbers); @Test public void takeListElementsTest() { assert elements.take(5).toArrayList().toString().equals("[1, 2, 3, 4, 5]");