aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2014-08-28 12:12:56 +0900
committerKeisuke Kuroyanagi <ksk@google.com>2014-08-28 12:12:56 +0900
commite394a0c6ff96edc8f8c949f0851a26922983f288 (patch)
treea496dd68d50eaa1c9d4a3fc8c035c87a1e32d024
parent733a023b64a9ec7f2cbdb336b4c2e493ddc0e116 (diff)
downloadlatinime-e394a0c6ff96edc8f8c949f0851a26922983f288.tar.gz
latinime-e394a0c6ff96edc8f8c949f0851a26922983f288.tar.xz
latinime-e394a0c6ff96edc8f8c949f0851a26922983f288.zip
Implement IntArrayView::skip().
Change-Id: Ib7f13963ac1d9c64eff2c08391154c6a25024126
-rw-r--r--native/jni/src/utils/int_array_view.h7
-rw-r--r--native/jni/tests/utils/int_array_view_test.cpp17
2 files changed, 24 insertions, 0 deletions
diff --git a/native/jni/src/utils/int_array_view.h b/native/jni/src/utils/int_array_view.h
index 8797b5944..c9c3b21d4 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 ecc451af0..161df2f43 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