diff options
| author | 2014-11-17 12:17:16 -0800 | |
|---|---|---|
| committer | 2014-11-17 12:17:16 -0800 | |
| commit | 11bdd5b10b5f921b657283fa94463263171218d5 (patch) | |
| tree | f439482e80559f310178bb050de770ca86fb0b23 /libs/androidfw/tests | |
| parent | a9a3e24835b08828aa252bf079067a5f810a0792 (diff) | |
| parent | 06d8b7b8d216cbfcd4cd987649672a5856ccd797 (diff) | |
Merge commit '06d8b7b8' into manualmerge
Conflicts:
core/jni/android_util_AssetManager.cpp
Change-Id: I77b72d0d3ec8184ccd97419e4c76b7d55b1a52ca
Diffstat (limited to 'libs/androidfw/tests')
| -rw-r--r-- | libs/androidfw/tests/Android.mk | 1 | ||||
| -rw-r--r-- | libs/androidfw/tests/AttributeFinder_test.cpp | 111 |
2 files changed, 112 insertions, 0 deletions
diff --git a/libs/androidfw/tests/Android.mk b/libs/androidfw/tests/Android.mk index dd452009aa86..58b78b5f4469 100644 --- a/libs/androidfw/tests/Android.mk +++ b/libs/androidfw/tests/Android.mk @@ -20,6 +20,7 @@ # ========================================================== LOCAL_PATH:= $(call my-dir) testFiles := \ + AttributeFinder_test.cpp \ ByteBucketArray_test.cpp \ Config_test.cpp \ ConfigLocale_test.cpp \ diff --git a/libs/androidfw/tests/AttributeFinder_test.cpp b/libs/androidfw/tests/AttributeFinder_test.cpp new file mode 100644 index 000000000000..664709c4ae8c --- /dev/null +++ b/libs/androidfw/tests/AttributeFinder_test.cpp @@ -0,0 +1,111 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <androidfw/AttributeFinder.h> + +#include <gtest/gtest.h> + +using android::BackTrackingAttributeFinder; + +class MockAttributeFinder : public BackTrackingAttributeFinder<MockAttributeFinder, int> { +public: + MockAttributeFinder(const uint32_t* attrs, int len) + : BackTrackingAttributeFinder(0, len) { + mAttrs = new uint32_t[len]; + memcpy(mAttrs, attrs, sizeof(*attrs) * len); + } + + ~MockAttributeFinder() { + delete mAttrs; + } + + inline uint32_t getAttribute(const int index) const { + return mAttrs[index]; + } + +private: + uint32_t* mAttrs; +}; + +static const uint32_t sortedAttributes[] = { + 0x01010000, 0x01010001, 0x01010002, 0x01010004, + 0x02010001, 0x02010010, 0x7f010001 +}; + +static const uint32_t packageUnsortedAttributes[] = { + 0x02010001, 0x02010010, 0x01010000, 0x01010001, + 0x01010002, 0x01010004, 0x7f010001 +}; + +TEST(AttributeFinderTest, IteratesSequentially) { + const int end = sizeof(sortedAttributes) / sizeof(*sortedAttributes); + MockAttributeFinder finder(sortedAttributes, end); + + EXPECT_EQ(0, finder.find(0x01010000)); + EXPECT_EQ(1, finder.find(0x01010001)); + EXPECT_EQ(2, finder.find(0x01010002)); + EXPECT_EQ(3, finder.find(0x01010004)); + EXPECT_EQ(4, finder.find(0x02010001)); + EXPECT_EQ(5, finder.find(0x02010010)); + EXPECT_EQ(6, finder.find(0x7f010001)); + EXPECT_EQ(end, finder.find(0x7f010002)); +} + +TEST(AttributeFinderTest, PackagesAreOutOfOrder) { + const int end = sizeof(sortedAttributes) / sizeof(*sortedAttributes); + MockAttributeFinder finder(sortedAttributes, end); + + EXPECT_EQ(6, finder.find(0x7f010001)); + EXPECT_EQ(end, finder.find(0x7f010002)); + EXPECT_EQ(4, finder.find(0x02010001)); + EXPECT_EQ(5, finder.find(0x02010010)); + EXPECT_EQ(0, finder.find(0x01010000)); + EXPECT_EQ(1, finder.find(0x01010001)); + EXPECT_EQ(2, finder.find(0x01010002)); + EXPECT_EQ(3, finder.find(0x01010004)); +} + +TEST(AttributeFinderTest, SomeAttributesAreNotFound) { + const int end = sizeof(sortedAttributes) / sizeof(*sortedAttributes); + MockAttributeFinder finder(sortedAttributes, end); + + EXPECT_EQ(0, finder.find(0x01010000)); + EXPECT_EQ(1, finder.find(0x01010001)); + EXPECT_EQ(2, finder.find(0x01010002)); + EXPECT_EQ(end, finder.find(0x01010003)); + EXPECT_EQ(3, finder.find(0x01010004)); + EXPECT_EQ(end, finder.find(0x01010005)); + EXPECT_EQ(end, finder.find(0x01010006)); + EXPECT_EQ(4, finder.find(0x02010001)); + EXPECT_EQ(end, finder.find(0x02010002)); +} + +TEST(AttributeFinderTest, FindAttributesInPackageUnsortedAttributeList) { + const int end = sizeof(packageUnsortedAttributes) / sizeof(*packageUnsortedAttributes); + MockAttributeFinder finder(packageUnsortedAttributes, end); + + EXPECT_EQ(2, finder.find(0x01010000)); + EXPECT_EQ(3, finder.find(0x01010001)); + EXPECT_EQ(4, finder.find(0x01010002)); + EXPECT_EQ(end, finder.find(0x01010003)); + EXPECT_EQ(5, finder.find(0x01010004)); + EXPECT_EQ(end, finder.find(0x01010005)); + EXPECT_EQ(end, finder.find(0x01010006)); + EXPECT_EQ(0, finder.find(0x02010001)); + EXPECT_EQ(end, finder.find(0x02010002)); + EXPECT_EQ(1, finder.find(0x02010010)); + EXPECT_EQ(6, finder.find(0x7f010001)); +} |