From e394a0c6ff96edc8f8c949f0851a26922983f288 Mon Sep 17 00:00:00 2001
From: Keisuke Kuroyanagi <ksk@google.com>
Date: Thu, 28 Aug 2014 12:12:56 +0900
Subject: [PATCH] Implement IntArrayView::skip().

Change-Id: Ib7f13963ac1d9c64eff2c08391154c6a25024126
---
 native/jni/src/utils/int_array_view.h          |  7 +++++++
 native/jni/tests/utils/int_array_view_test.cpp | 17 +++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/native/jni/src/utils/int_array_view.h b/native/jni/src/utils/int_array_view.h
index 8797b59447..c9c3b21d4f 100644
--- a/native/jni/src/utils/int_array_view.h
+++ b/native/jni/src/utils/int_array_view.h
@@ -96,6 +96,13 @@ class IntArrayView {
         return IntArrayView(mPtr, std::min(maxSize, mSize));
     }
 
+    const IntArrayView skip(const size_t n) const {
+        if (mSize <= n) {
+            return IntArrayView();
+        }
+        return IntArrayView(mPtr + n, mSize - n);
+    }
+
  private:
     DISALLOW_ASSIGNMENT_OPERATOR(IntArrayView);
 
diff --git a/native/jni/tests/utils/int_array_view_test.cpp b/native/jni/tests/utils/int_array_view_test.cpp
index ecc451af0a..161df2f43d 100644
--- a/native/jni/tests/utils/int_array_view_test.cpp
+++ b/native/jni/tests/utils/int_array_view_test.cpp
@@ -72,5 +72,22 @@ TEST(IntArrayViewTest, TestLimit) {
     }
 }
 
+TEST(IntArrayViewTest, TestSkip) {
+    const std::vector<int> intVector = {3, 2, 1, 0, -1, -2};
+    IntArrayView intArrayView(intVector);
+
+    EXPECT_TRUE(intArrayView.skip(intVector.size()).empty());
+    EXPECT_TRUE(intArrayView.skip(intVector.size() + 1).empty());
+    EXPECT_EQ(intArrayView.size(), intArrayView.skip(0).size());
+    EXPECT_EQ(intArrayView.size(), intArrayView.limit(1000).size());
+
+    static const size_t SKIP_COUNT = 2;
+    IntArrayView subView = intArrayView.skip(SKIP_COUNT);
+    EXPECT_EQ(intVector.size() - SKIP_COUNT, subView.size());
+    for (size_t i = 0; i < subView.size(); ++i) {
+        EXPECT_EQ(intVector[i + SKIP_COUNT], subView[i]);
+    }
+}
+
 }  // namespace
 }  // namespace latinime
-- 
GitLab