1 /* 2 * Copyright (C) 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.os; 18 19 import static com.google.common.truth.Truth.assertThat; 20 21 import org.junit.Test; 22 import org.junit.runner.RunWith; 23 import org.junit.runners.JUnit4; 24 25 import java.util.List; 26 27 @RunWith(JUnit4.class) 28 public final class StatsDimensionsValueTest { 29 30 @Test testConversionFromStructuredParcel()31 public void testConversionFromStructuredParcel() { 32 int tupleField = 100; // atom id 33 String stringValue = "Hello"; 34 int intValue = 123; 35 long longValue = 123456789L; 36 float floatValue = 1.1f; 37 boolean boolValue = true; 38 39 // Construct structured parcel 40 StatsDimensionsValueParcel sdvp = new StatsDimensionsValueParcel(); 41 sdvp.field = tupleField; 42 sdvp.valueType = StatsDimensionsValue.TUPLE_VALUE_TYPE; 43 sdvp.tupleValue = new StatsDimensionsValueParcel[5]; 44 45 for (int i = 0; i < 5; i++) { 46 sdvp.tupleValue[i] = new StatsDimensionsValueParcel(); 47 sdvp.tupleValue[i].field = i + 1; 48 } 49 50 sdvp.tupleValue[0].valueType = StatsDimensionsValue.STRING_VALUE_TYPE; 51 sdvp.tupleValue[1].valueType = StatsDimensionsValue.INT_VALUE_TYPE; 52 sdvp.tupleValue[2].valueType = StatsDimensionsValue.LONG_VALUE_TYPE; 53 sdvp.tupleValue[3].valueType = StatsDimensionsValue.FLOAT_VALUE_TYPE; 54 sdvp.tupleValue[4].valueType = StatsDimensionsValue.BOOLEAN_VALUE_TYPE; 55 56 sdvp.tupleValue[0].stringValue = stringValue; 57 sdvp.tupleValue[1].intValue = intValue; 58 sdvp.tupleValue[2].longValue = longValue; 59 sdvp.tupleValue[3].floatValue = floatValue; 60 sdvp.tupleValue[4].boolValue = boolValue; 61 62 // Convert to StatsDimensionsValue and check result 63 StatsDimensionsValue sdv = new StatsDimensionsValue(sdvp); 64 65 assertThat(sdv.getField()).isEqualTo(tupleField); 66 assertThat(sdv.getValueType()).isEqualTo(StatsDimensionsValue.TUPLE_VALUE_TYPE); 67 List<StatsDimensionsValue> sdvChildren = sdv.getTupleValueList(); 68 assertThat(sdvChildren.size()).isEqualTo(5); 69 70 for (int i = 0; i < 5; i++) { 71 assertThat(sdvChildren.get(i).getField()).isEqualTo(i + 1); 72 } 73 74 assertThat(sdvChildren.get(0).getValueType()) 75 .isEqualTo(StatsDimensionsValue.STRING_VALUE_TYPE); 76 assertThat(sdvChildren.get(1).getValueType()) 77 .isEqualTo(StatsDimensionsValue.INT_VALUE_TYPE); 78 assertThat(sdvChildren.get(2).getValueType()) 79 .isEqualTo(StatsDimensionsValue.LONG_VALUE_TYPE); 80 assertThat(sdvChildren.get(3).getValueType()) 81 .isEqualTo(StatsDimensionsValue.FLOAT_VALUE_TYPE); 82 assertThat(sdvChildren.get(4).getValueType()) 83 .isEqualTo(StatsDimensionsValue.BOOLEAN_VALUE_TYPE); 84 85 assertThat(sdvChildren.get(0).getStringValue()).isEqualTo(stringValue); 86 assertThat(sdvChildren.get(1).getIntValue()).isEqualTo(intValue); 87 assertThat(sdvChildren.get(2).getLongValue()).isEqualTo(longValue); 88 assertThat(sdvChildren.get(3).getFloatValue()).isEqualTo(floatValue); 89 assertThat(sdvChildren.get(4).getBooleanValue()).isEqualTo(boolValue); 90 91 // Ensure that StatsDimensionsValue and StatsDimensionsValueParcel are 92 // parceled equivalently 93 Parcel sdvpParcel = Parcel.obtain(); 94 Parcel sdvParcel = Parcel.obtain(); 95 sdvp.writeToParcel(sdvpParcel, 0); 96 sdv.writeToParcel(sdvParcel, 0); 97 assertThat(sdvpParcel.dataSize()).isEqualTo(sdvParcel.dataSize()); 98 } 99 100 @Test testNullTupleArray()101 public void testNullTupleArray() { 102 int tupleField = 100; // atom id 103 104 StatsDimensionsValueParcel parcel = new StatsDimensionsValueParcel(); 105 parcel.field = tupleField; 106 parcel.valueType = StatsDimensionsValue.TUPLE_VALUE_TYPE; 107 parcel.tupleValue = null; 108 109 StatsDimensionsValue sdv = new StatsDimensionsValue(parcel); 110 assertThat(sdv.getField()).isEqualTo(tupleField); 111 assertThat(sdv.getValueType()).isEqualTo(StatsDimensionsValue.TUPLE_VALUE_TYPE); 112 List<StatsDimensionsValue> sdvChildren = sdv.getTupleValueList(); 113 assertThat(sdvChildren.size()).isEqualTo(0); 114 } 115 } 116