/* * 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 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 sdvChildren = sdv.getTupleValueList(); assertThat(sdvChildren.size()).isEqualTo(0); } }