blob: db25911e6eee751e680edfe8a41c8f8e07e96936 [file] [log] [blame]
/*
* Copyright (C) 2019 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.
*/
package android.os;
import static com.google.common.truth.Truth.assertThat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import java.util.List;
@RunWith(JUnit4.class)
public final class StatsDimensionsValueTest {
@Test
public void testConversionFromStructuredParcel() {
int tupleField = 100; // atom id
String stringValue = "Hello";
int intValue = 123;
long longValue = 123456789L;
float floatValue = 1.1f;
boolean boolValue = true;
// Construct structured parcel
StatsDimensionsValueParcel sdvp = new StatsDimensionsValueParcel();
sdvp.field = tupleField;
sdvp.valueType = StatsDimensionsValue.TUPLE_VALUE_TYPE;
sdvp.tupleValue = new StatsDimensionsValueParcel[5];
for (int i = 0; i < 5; i++) {
sdvp.tupleValue[i] = new StatsDimensionsValueParcel();
sdvp.tupleValue[i].field = i + 1;
}
sdvp.tupleValue[0].valueType = StatsDimensionsValue.STRING_VALUE_TYPE;
sdvp.tupleValue[1].valueType = StatsDimensionsValue.INT_VALUE_TYPE;
sdvp.tupleValue[2].valueType = StatsDimensionsValue.LONG_VALUE_TYPE;
sdvp.tupleValue[3].valueType = StatsDimensionsValue.FLOAT_VALUE_TYPE;
sdvp.tupleValue[4].valueType = StatsDimensionsValue.BOOLEAN_VALUE_TYPE;
sdvp.tupleValue[0].stringValue = stringValue;
sdvp.tupleValue[1].intValue = intValue;
sdvp.tupleValue[2].longValue = longValue;
sdvp.tupleValue[3].floatValue = floatValue;
sdvp.tupleValue[4].boolValue = boolValue;
// Convert to StatsDimensionsValue and check result
StatsDimensionsValue sdv = new StatsDimensionsValue(sdvp);
assertThat(sdv.getField()).isEqualTo(tupleField);
assertThat(sdv.getValueType()).isEqualTo(StatsDimensionsValue.TUPLE_VALUE_TYPE);
List<StatsDimensionsValue> sdvChildren = sdv.getTupleValueList();
assertThat(sdvChildren.size()).isEqualTo(5);
for (int i = 0; i < 5; i++) {
assertThat(sdvChildren.get(i).getField()).isEqualTo(i + 1);
}
assertThat(sdvChildren.get(0).getValueType())
.isEqualTo(StatsDimensionsValue.STRING_VALUE_TYPE);
assertThat(sdvChildren.get(1).getValueType())
.isEqualTo(StatsDimensionsValue.INT_VALUE_TYPE);
assertThat(sdvChildren.get(2).getValueType())
.isEqualTo(StatsDimensionsValue.LONG_VALUE_TYPE);
assertThat(sdvChildren.get(3).getValueType())
.isEqualTo(StatsDimensionsValue.FLOAT_VALUE_TYPE);
assertThat(sdvChildren.get(4).getValueType())
.isEqualTo(StatsDimensionsValue.BOOLEAN_VALUE_TYPE);
assertThat(sdvChildren.get(0).getStringValue()).isEqualTo(stringValue);
assertThat(sdvChildren.get(1).getIntValue()).isEqualTo(intValue);
assertThat(sdvChildren.get(2).getLongValue()).isEqualTo(longValue);
assertThat(sdvChildren.get(3).getFloatValue()).isEqualTo(floatValue);
assertThat(sdvChildren.get(4).getBooleanValue()).isEqualTo(boolValue);
// Ensure that StatsDimensionsValue and StatsDimensionsValueParcel are
// parceled equivalently
Parcel sdvpParcel = Parcel.obtain();
Parcel sdvParcel = Parcel.obtain();
sdvp.writeToParcel(sdvpParcel, 0);
sdv.writeToParcel(sdvParcel, 0);
assertThat(sdvpParcel.dataSize()).isEqualTo(sdvParcel.dataSize());
}
@Test
public void testNullTupleArray() {
int tupleField = 100; // atom id
StatsDimensionsValueParcel parcel = new StatsDimensionsValueParcel();
parcel.field = tupleField;
parcel.valueType = StatsDimensionsValue.TUPLE_VALUE_TYPE;
parcel.tupleValue = null;
StatsDimensionsValue sdv = new StatsDimensionsValue(parcel);
assertThat(sdv.getField()).isEqualTo(tupleField);
assertThat(sdv.getValueType()).isEqualTo(StatsDimensionsValue.TUPLE_VALUE_TYPE);
List<StatsDimensionsValue> sdvChildren = sdv.getTupleValueList();
assertThat(sdvChildren.size()).isEqualTo(0);
}
}