replicant-vendor_cmsdk/tests/src/org/cyanogenmod/tests/hardware/unit/PersistentStorageTest.java

175 lines
7.1 KiB
Java

/**
* Copyright (c) 2015, The CyanogenMod 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.
*/
package org.cyanogenmod.tests.hardware.unit;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import cyanogenmod.app.CMContextConstants;
import cyanogenmod.hardware.CMHardwareManager;
import java.util.Arrays;
import java.util.Random;
import java.util.UUID;
public class PersistentStorageTest extends AndroidTestCase {
private CMHardwareManager mHardwareManager;
@Override
protected void setUp() throws Exception {
super.setUp();
// Only run this if we support hardware abstraction
org.junit.Assume.assumeTrue(mContext.getPackageManager().hasSystemFeature(
CMContextConstants.Features.HARDWARE_ABSTRACTION));
mHardwareManager = CMHardwareManager.getInstance(mContext);
}
@SmallTest
public void testUdidFailure() {
String key = "udid";
String value = "542bc67e510e82bd6d44e4f7015d7970";
assertTrue(mHardwareManager.writePersistentString(key, value));
}
@SmallTest
public void testPersistentStringInvalidInput() {
String testKey = UUID.randomUUID().toString();
String testString = "IM IN UR STORAGE";
String testKeyTooLong = getStringOfLength(65);
String testStringTooLong = getStringOfLength(4097);
assertFalse(mHardwareManager.writePersistentString(null, testString));
assertFalse(mHardwareManager.writePersistentString("", testString));
assertFalse(mHardwareManager.writePersistentString(testKeyTooLong, testString));
assertFalse(mHardwareManager.writePersistentString(testKey, testStringTooLong));
assertFalse(mHardwareManager.writePersistentString(testKey, ""));
assertNull(mHardwareManager.readPersistentString(testKey));
assertNull(mHardwareManager.readPersistentString(testKeyTooLong));
}
@SmallTest
public void testPersistentIntInvalidInput() {
String testKey = UUID.randomUUID().toString();
String testString = "IM IN UR STORAGE";
String testKeyTooLong = getStringOfLength(65);
assertFalse(mHardwareManager.writePersistentInt(null, 49152));
assertFalse(mHardwareManager.writePersistentInt("", 49152));
assertFalse(mHardwareManager.writePersistentInt(testKeyTooLong, 49152));
assertEquals(0, mHardwareManager.readPersistentInt(testKey));
assertEquals(0, mHardwareManager.readPersistentInt(testKeyTooLong));
}
@SmallTest
public void testPersistentBytesInvalidInput() {
String testKey = UUID.randomUUID().toString();
byte[] testArray = new byte[1024];
byte[] testArrayTooLong = new byte[4097];
String testKeyTooLong = getStringOfLength(65);
assertFalse(mHardwareManager.writePersistentBytes(null, testArray));
assertFalse(mHardwareManager.writePersistentBytes("", testArray));
assertFalse(mHardwareManager.writePersistentBytes(testKeyTooLong, testArray));
assertFalse(mHardwareManager.writePersistentBytes(testKey, testArrayTooLong));
assertFalse(mHardwareManager.writePersistentBytes(testKey, new byte[0]));
assertNull(mHardwareManager.readPersistentBytes(testKey));
assertNull(mHardwareManager.readPersistentBytes(testKeyTooLong));
}
@SmallTest
public void testPersistentString() {
assertTrue(mHardwareManager.isSupported(CMHardwareManager.FEATURE_PERSISTENT_STORAGE));
String testKey = UUID.randomUUID().toString();
String testString = "IM IN UR STORAGE";
// write + read
assertTrue(mHardwareManager.writePersistentString(testKey, testString));
assertEquals(testString, mHardwareManager.readPersistentString(testKey));
// rewrite + read
assertTrue(mHardwareManager.writePersistentString(testKey, testString + " AGAIN"));
assertEquals(testString + " AGAIN", mHardwareManager.readPersistentString(testKey));
// erase + read
assertTrue(mHardwareManager.deletePersistentObject(testKey));
assertNull(mHardwareManager.readPersistentString(testKey));
// erase through write null
assertTrue(mHardwareManager.writePersistentString(testKey, testString + " AGAIN"));
assertEquals(testString + " AGAIN", mHardwareManager.readPersistentString(testKey));
assertTrue(mHardwareManager.writePersistentString(testKey, null));
assertNull(mHardwareManager.readPersistentString(testKey));
}
@SmallTest
public void testPersistentInteger() {
assertTrue(mHardwareManager.isSupported(CMHardwareManager.FEATURE_PERSISTENT_STORAGE));
String testKey = UUID.randomUUID().toString();
int testInt = 49152;
// write + read
assertTrue(mHardwareManager.writePersistentInt(testKey, testInt));
assertEquals(testInt, mHardwareManager.readPersistentInt(testKey));
// rewrite + read
assertTrue(mHardwareManager.writePersistentInt(testKey, testInt * 2));
assertEquals(testInt * 2, mHardwareManager.readPersistentInt(testKey));
// erase + read
assertTrue(mHardwareManager.deletePersistentObject(testKey));
assertEquals(0, mHardwareManager.readPersistentInt(testKey));
}
@SmallTest
public void testPersistentBytes() {
assertTrue(mHardwareManager.isSupported(CMHardwareManager.FEATURE_PERSISTENT_STORAGE));
String testKey = UUID.randomUUID().toString();
byte[] testArray = new byte[1024];
byte[] testArray2 = new byte[4096];
new Random().nextBytes(testArray);
new Random().nextBytes(testArray2);
// write + read
assertTrue(mHardwareManager.writePersistentBytes(testKey, testArray));
assertTrue(Arrays.equals(testArray, mHardwareManager.readPersistentBytes(testKey)));
// write + read
assertTrue(mHardwareManager.writePersistentBytes(testKey, testArray2));
assertTrue(Arrays.equals(testArray2, mHardwareManager.readPersistentBytes(testKey)));
// erase + read
assertTrue(mHardwareManager.deletePersistentObject(testKey));
assertNull(mHardwareManager.readPersistentBytes(testKey));
// erase through write null
assertTrue(mHardwareManager.writePersistentBytes(testKey, testArray));
assertTrue(Arrays.equals(testArray, mHardwareManager.readPersistentBytes(testKey)));
assertTrue(mHardwareManager.writePersistentBytes(testKey, null));
assertNull(mHardwareManager.readPersistentBytes(testKey));
}
private String getStringOfLength(int length) {
char[] chars = new char[length];
Arrays.fill(chars, 'z');
return new String(chars);
}
}