Add missing unit tests for radio

Unit tests for methods related to discribeContents, parcel, and
creator of classes in radio package were added. The issue that
secondary ids in program selector should not be sorted due to
no comparator implemented was also fixed.

Bug: 249602599
Test: atest android.hardware.radio.tests.unittests
Change-Id: I97b5efe244f1ae0fb37e3e4dd312f4bef6e75d04
This commit is contained in:
Weilin Xu
2022-10-25 23:02:35 +00:00
parent 2f2271e0c9
commit ab329e1454
5 changed files with 491 additions and 12 deletions

View File

@@ -533,7 +533,6 @@ public final class ProgramSelector implements Parcelable {
mProgramType = in.readInt();
mPrimaryId = in.readTypedObject(Identifier.CREATOR);
mSecondaryIds = in.createTypedArray(Identifier.CREATOR);
Arrays.sort(mSecondaryIds);
if (Stream.of(mSecondaryIds).anyMatch(id -> id == null)) {
throw new IllegalArgumentException("secondaryIds list must not contain nulls");
}

View File

@@ -23,11 +23,13 @@ import static org.junit.Assert.assertThrows;
import android.annotation.Nullable;
import android.hardware.radio.ProgramSelector;
import android.hardware.radio.RadioManager;
import android.os.Parcel;
import org.junit.Test;
public final class ProgramSelectorTest {
private static final int CREATOR_ARRAY_SIZE = 2;
private static final int FM_PROGRAM_TYPE = ProgramSelector.PROGRAM_TYPE_FM;
private static final int DAB_PROGRAM_TYPE = ProgramSelector.PROGRAM_TYPE_DAB;
private static final long FM_FREQUENCY = 88500;
@@ -96,6 +98,33 @@ public final class ProgramSelectorTest {
.that(FM_IDENTIFIER).isEqualTo(fmIdentifierSame);
}
@Test
public void describeContents_forIdentifier() {
assertWithMessage("FM identifier contents")
.that(FM_IDENTIFIER.describeContents()).isEqualTo(0);
}
@Test
public void newArray_forIdentifierCreator() {
ProgramSelector.Identifier[] identifiers =
ProgramSelector.Identifier.CREATOR.newArray(CREATOR_ARRAY_SIZE);
assertWithMessage("Identifiers").that(identifiers).hasLength(CREATOR_ARRAY_SIZE);
}
@Test
public void writeToParcel_forIdentifier() {
Parcel parcel = Parcel.obtain();
FM_IDENTIFIER.writeToParcel(parcel, /* flags= */ 0);
parcel.setDataPosition(0);
ProgramSelector.Identifier identifierFromParcel =
ProgramSelector.Identifier.CREATOR.createFromParcel(parcel);
assertWithMessage("Identifier created from parcel")
.that(identifierFromParcel).isEqualTo(FM_IDENTIFIER);
}
@Test
public void getProgramType() {
ProgramSelector selector = getFmSelector(/* secondaryIds= */ null, /* vendorIds= */ null);
@@ -394,6 +423,34 @@ public final class ProgramSelectorTest {
.that(selector1.strictEquals(selector2)).isTrue();
}
@Test
public void describeContents_forProgramSelector() {
assertWithMessage("FM selector contents")
.that(getFmSelector(/* secondaryIds= */ null, /* vendorIds= */ null)
.describeContents()).isEqualTo(0);
}
@Test
public void newArray_forProgramSelectorCreator() {
ProgramSelector[] programSelectors = ProgramSelector.CREATOR.newArray(CREATOR_ARRAY_SIZE);
assertWithMessage("Program selectors").that(programSelectors).hasLength(CREATOR_ARRAY_SIZE);
}
@Test
public void writeToParcel_forProgramSelector() {
ProgramSelector selectorExpected =
getFmSelector(/* secondaryIds= */ null, /* vendorIds= */ null);
Parcel parcel = Parcel.obtain();
selectorExpected.writeToParcel(parcel, /* flags= */ 0);
parcel.setDataPosition(0);
ProgramSelector selectorFromParcel = ProgramSelector.CREATOR.createFromParcel(parcel);
assertWithMessage("Program selector created from parcel")
.that(selectorFromParcel).isEqualTo(selectorExpected);
}
private ProgramSelector getFmSelector(@Nullable ProgramSelector.Identifier[] secondaryIds,
@Nullable long[] vendorIds) {
return new ProgramSelector(FM_PROGRAM_TYPE, FM_IDENTIFIER, secondaryIds, vendorIds);

View File

@@ -22,6 +22,7 @@ import static org.junit.Assert.assertThrows;
import android.hardware.radio.Announcement;
import android.hardware.radio.ProgramSelector;
import android.os.Parcel;
import android.util.ArrayMap;
import org.junit.Test;
@@ -83,4 +84,35 @@ public final class RadioAnnouncementTest {
vendorInfo.put("vendorKeyMock", "vendorValueMock");
return vendorInfo;
}
@Test
public void describeContents_forAnnouncement() {
assertWithMessage("Radio announcement contents")
.that(TEST_ANNOUNCEMENT.describeContents()).isEqualTo(0);
}
@Test
public void newArray_forAnnouncementCreator() {
int sizeExpected = 2;
Announcement[] announcements = Announcement.CREATOR.newArray(sizeExpected);
assertWithMessage("Announcements").that(announcements).hasLength(sizeExpected);
}
@Test
public void writeToParcel_forAnnouncement() {
Parcel parcel = Parcel.obtain();
TEST_ANNOUNCEMENT.writeToParcel(parcel, /* flags= */ 0);
parcel.setDataPosition(0);
Announcement announcementFromParcel = Announcement.CREATOR.createFromParcel(parcel);
assertWithMessage("Selector of announcement created from parcel")
.that(announcementFromParcel.getSelector()).isEqualTo(FM_PROGRAM_SELECTOR);
assertWithMessage("Type of announcement created from parcel")
.that(announcementFromParcel.getType()).isEqualTo(TRAFFIC_ANNOUNCEMENT_TYPE);
assertWithMessage("Vendor info of announcement created from parcel")
.that(announcementFromParcel.getVendorInfo()).isEqualTo(VENDOR_INFO);
}
}

View File

@@ -33,6 +33,7 @@ import android.hardware.radio.ProgramSelector;
import android.hardware.radio.RadioManager;
import android.hardware.radio.RadioMetadata;
import android.hardware.radio.RadioTuner;
import android.os.Parcel;
import android.os.RemoteException;
import android.util.ArrayMap;
@@ -80,6 +81,8 @@ public final class RadioManagerTest {
private static final int[] SUPPORTED_IDENTIFIERS_TYPES = new int[]{
ProgramSelector.IDENTIFIER_TYPE_AMFM_FREQUENCY, ProgramSelector.IDENTIFIER_TYPE_RDS_PI};
private static final int CREATOR_ARRAY_SIZE = 3;
private static final RadioManager.FmBandDescriptor FM_BAND_DESCRIPTOR =
createFmBandDescriptor();
private static final RadioManager.AmBandDescriptor AM_BAND_DESCRIPTOR =
@@ -172,6 +175,22 @@ public final class RadioManagerTest {
.that(bandDescriptor.getSpacing()).isEqualTo(AM_SPACING);
}
@Test
public void describeContents_forBandDescriptor() {
RadioManager.BandDescriptor bandDescriptor = createFmBandDescriptor();
assertWithMessage("Band Descriptor contents")
.that(bandDescriptor.describeContents()).isEqualTo(0);
}
@Test
public void newArray_forBandDescriptorCreator() {
RadioManager.BandDescriptor[] bandDescriptors =
RadioManager.BandDescriptor.CREATOR.newArray(CREATOR_ARRAY_SIZE);
assertWithMessage("Band Descriptors").that(bandDescriptors).hasLength(CREATOR_ARRAY_SIZE);
}
@Test
public void isAmBand_forAmBandDescriptor_returnsTrue() {
RadioManager.BandDescriptor bandDescriptor = createAmBandDescriptor();
@@ -218,19 +237,74 @@ public final class RadioManagerTest {
.that(FM_BAND_DESCRIPTOR.isEaSupported()).isEqualTo(EA_SUPPORTED);
}
@Test
public void describeContents_forFmBandDescriptor() {
assertWithMessage("FM Band Descriptor contents")
.that(FM_BAND_DESCRIPTOR.describeContents()).isEqualTo(0);
}
@Test
public void writeToParcel_forFmBandDescriptor() {
Parcel parcel = Parcel.obtain();
FM_BAND_DESCRIPTOR.writeToParcel(parcel, /* flags= */ 0);
parcel.setDataPosition(0);
RadioManager.FmBandDescriptor fmBandDescriptorFromParcel =
RadioManager.FmBandDescriptor.CREATOR.createFromParcel(parcel);
assertWithMessage("FM Band Descriptor created from parcel")
.that(fmBandDescriptorFromParcel).isEqualTo(FM_BAND_DESCRIPTOR);
}
@Test
public void newArray_forFmBandDescriptorCreator() {
RadioManager.FmBandDescriptor[] fmBandDescriptors =
RadioManager.FmBandDescriptor.CREATOR.newArray(CREATOR_ARRAY_SIZE);
assertWithMessage("FM Band Descriptors")
.that(fmBandDescriptors).hasLength(CREATOR_ARRAY_SIZE);
}
@Test
public void isStereoSupported_forAmBandDescriptor() {
assertWithMessage("AM Band Descriptor stereo")
.that(AM_BAND_DESCRIPTOR.isStereoSupported()).isEqualTo(STEREO_SUPPORTED);
}
@Test
public void describeContents_forAmBandDescriptor() {
assertWithMessage("AM Band Descriptor contents")
.that(AM_BAND_DESCRIPTOR.describeContents()).isEqualTo(0);
}
@Test
public void writeToParcel_forAmBandDescriptor() {
Parcel parcel = Parcel.obtain();
AM_BAND_DESCRIPTOR.writeToParcel(parcel, /* flags= */ 0);
parcel.setDataPosition(0);
RadioManager.AmBandDescriptor amBandDescriptorFromParcel =
RadioManager.AmBandDescriptor.CREATOR.createFromParcel(parcel);
assertWithMessage("FM Band Descriptor created from parcel")
.that(amBandDescriptorFromParcel).isEqualTo(AM_BAND_DESCRIPTOR);
}
@Test
public void newArray_forAmBandDescriptorCreator() {
RadioManager.AmBandDescriptor[] amBandDescriptors =
RadioManager.AmBandDescriptor.CREATOR.newArray(CREATOR_ARRAY_SIZE);
assertWithMessage("AM Band Descriptors")
.that(amBandDescriptors).hasLength(CREATOR_ARRAY_SIZE);
}
@Test
public void equals_withSameFmBandDescriptors_returnsTrue() {
RadioManager.FmBandDescriptor fmBandDescriptor1 = createFmBandDescriptor();
RadioManager.FmBandDescriptor fmBandDescriptor2 = createFmBandDescriptor();
RadioManager.FmBandDescriptor fmBandDescriptorCompared = createFmBandDescriptor();
assertWithMessage("The same FM Band Descriptor")
.that(fmBandDescriptor1).isEqualTo(fmBandDescriptor2);
.that(FM_BAND_DESCRIPTOR).isEqualTo(fmBandDescriptorCompared);
}
@Test
@@ -257,6 +331,44 @@ public final class RadioManagerTest {
.that(AM_BAND_DESCRIPTOR).isNotEqualTo(FM_BAND_DESCRIPTOR);
}
@Test
public void hashCode_withSameFmBandDescriptors_equals() {
RadioManager.FmBandDescriptor fmBandDescriptorCompared = createFmBandDescriptor();
assertWithMessage("Hash code of the same FM Band Descriptor")
.that(fmBandDescriptorCompared.hashCode()).isEqualTo(FM_BAND_DESCRIPTOR.hashCode());
}
@Test
public void hashCode_withSameAmBandDescriptors_equals() {
RadioManager.AmBandDescriptor amBandDescriptorCompared = createAmBandDescriptor();
assertWithMessage("Hash code of the same AM Band Descriptor")
.that(amBandDescriptorCompared.hashCode()).isEqualTo(AM_BAND_DESCRIPTOR.hashCode());
}
@Test
public void hashCode_withFmBandDescriptorsOfDifferentAfSupports_notEquals() {
RadioManager.FmBandDescriptor fmBandDescriptorCompared = new RadioManager.FmBandDescriptor(
REGION, RadioManager.BAND_FM, FM_LOWER_LIMIT, FM_UPPER_LIMIT, FM_SPACING,
STEREO_SUPPORTED, RDS_SUPPORTED, TA_SUPPORTED, !AF_SUPPORTED, EA_SUPPORTED);
assertWithMessage("Hash code of FM Band Descriptor of different spacing")
.that(fmBandDescriptorCompared.hashCode())
.isNotEqualTo(FM_BAND_DESCRIPTOR.hashCode());
}
@Test
public void hashCode_withAmBandDescriptorsOfDifferentSpacings_notEquals() {
RadioManager.AmBandDescriptor amBandDescriptorCompared =
new RadioManager.AmBandDescriptor(REGION, RadioManager.BAND_AM, AM_LOWER_LIMIT,
AM_UPPER_LIMIT, AM_SPACING * 2, STEREO_SUPPORTED);
assertWithMessage("Hash code of AM Band Descriptor of different spacing")
.that(amBandDescriptorCompared.hashCode())
.isNotEqualTo(AM_BAND_DESCRIPTOR.hashCode());
}
@Test
public void getType_forBandConfig() {
RadioManager.BandConfig fmBandConfig = createFmBandConfig();
@@ -297,9 +409,25 @@ public final class RadioManagerTest {
.that(fmBandConfig.getSpacing()).isEqualTo(FM_SPACING);
}
@Test
public void describeContents_forBandConfig() {
RadioManager.BandConfig bandConfig = createFmBandConfig();
assertWithMessage("FM Band Config contents")
.that(bandConfig.describeContents()).isEqualTo(0);
}
@Test
public void newArray_forBandConfigCreator() {
RadioManager.BandConfig[] bandConfigs =
RadioManager.BandConfig.CREATOR.newArray(CREATOR_ARRAY_SIZE);
assertWithMessage("Band Configs").that(bandConfigs).hasLength(CREATOR_ARRAY_SIZE);
}
@Test
public void getStereo_forFmBandConfig() {
assertWithMessage("FM Band Config stereo ")
assertWithMessage("FM Band Config stereo")
.that(FM_BAND_CONFIG.getStereo()).isEqualTo(STEREO_SUPPORTED);
}
@@ -327,12 +455,66 @@ public final class RadioManagerTest {
.that(FM_BAND_CONFIG.getEa()).isEqualTo(EA_SUPPORTED);
}
@Test
public void describeContents_forFmBandConfig() {
assertWithMessage("FM Band Config contents")
.that(FM_BAND_CONFIG.describeContents()).isEqualTo(0);
}
@Test
public void writeToParcel_forFmBandConfig() {
Parcel parcel = Parcel.obtain();
FM_BAND_CONFIG.writeToParcel(parcel, /* flags= */ 0);
parcel.setDataPosition(0);
RadioManager.FmBandConfig fmBandConfigFromParcel =
RadioManager.FmBandConfig.CREATOR.createFromParcel(parcel);
assertWithMessage("FM Band Config created from parcel")
.that(fmBandConfigFromParcel).isEqualTo(FM_BAND_CONFIG);
}
@Test
public void newArray_forFmBandConfigCreator() {
RadioManager.FmBandConfig[] fmBandConfigs =
RadioManager.FmBandConfig.CREATOR.newArray(CREATOR_ARRAY_SIZE);
assertWithMessage("FM Band Configs").that(fmBandConfigs).hasLength(CREATOR_ARRAY_SIZE);
}
@Test
public void getStereo_forAmBandConfig() {
assertWithMessage("AM Band Config stereo")
.that(AM_BAND_CONFIG.getStereo()).isEqualTo(STEREO_SUPPORTED);
}
@Test
public void describeContents_forAmBandConfig() {
assertWithMessage("AM Band Config contents")
.that(AM_BAND_CONFIG.describeContents()).isEqualTo(0);
}
@Test
public void writeToParcel_forAmBandConfig() {
Parcel parcel = Parcel.obtain();
AM_BAND_CONFIG.writeToParcel(parcel, /* flags= */ 0);
parcel.setDataPosition(0);
RadioManager.AmBandConfig amBandConfigFromParcel =
RadioManager.AmBandConfig.CREATOR.createFromParcel(parcel);
assertWithMessage("AM Band Config created from parcel")
.that(amBandConfigFromParcel).isEqualTo(AM_BAND_CONFIG);
}
@Test
public void newArray_forAmBandConfigCreator() {
RadioManager.AmBandConfig[] amBandConfigs =
RadioManager.AmBandConfig.CREATOR.newArray(CREATOR_ARRAY_SIZE);
assertWithMessage("AM Band Configs").that(amBandConfigs).hasLength(CREATOR_ARRAY_SIZE);
}
@Test
public void equals_withSameFmBandConfigs_returnsTrue() {
RadioManager.FmBandConfig fmBandConfigCompared = createFmBandConfig();
@@ -386,6 +568,43 @@ public final class RadioManagerTest {
.that(AM_BAND_CONFIG).isNotEqualTo(amBandConfigFromBuilder);
}
@Test
public void hashCode_withSameFmBandConfigs_equals() {
RadioManager.FmBandConfig fmBandConfigCompared = createFmBandConfig();
assertWithMessage("Hash code of the same FM Band Config")
.that(FM_BAND_CONFIG.hashCode()).isEqualTo(fmBandConfigCompared.hashCode());
}
@Test
public void hashCode_withSameAmBandConfigs_equals() {
RadioManager.AmBandConfig amBandConfigCompared = createAmBandConfig();
assertWithMessage("Hash code of the same AM Band Config")
.that(amBandConfigCompared.hashCode()).isEqualTo(AM_BAND_CONFIG.hashCode());
}
@Test
public void hashCode_withFmBandConfigsOfDifferentTypes_notEquals() {
RadioManager.FmBandConfig fmBandConfigCompared = new RadioManager.FmBandConfig(
new RadioManager.FmBandDescriptor(REGION, RadioManager.BAND_FM_HD, FM_LOWER_LIMIT,
FM_UPPER_LIMIT, FM_SPACING, STEREO_SUPPORTED, RDS_SUPPORTED, TA_SUPPORTED,
AF_SUPPORTED, EA_SUPPORTED));
assertWithMessage("Hash code of FM Band Config with different type")
.that(fmBandConfigCompared.hashCode()).isNotEqualTo(FM_BAND_CONFIG.hashCode());
}
@Test
public void hashCode_withAmBandConfigsOfDifferentStereoSupports_notEquals() {
RadioManager.AmBandConfig amBandConfigCompared = new RadioManager.AmBandConfig(
new RadioManager.AmBandDescriptor(REGION, RadioManager.BAND_AM, AM_LOWER_LIMIT,
AM_UPPER_LIMIT, AM_SPACING, !STEREO_SUPPORTED));
assertWithMessage("Hash code of AM Band Config with different stereo support")
.that(amBandConfigCompared.hashCode()).isNotEqualTo(AM_BAND_CONFIG.hashCode());
}
@Test
public void getId_forModuleProperties() {
assertWithMessage("Properties id")
@@ -508,6 +727,12 @@ public final class RadioManagerTest {
.containsExactly(AM_BAND_DESCRIPTOR, FM_BAND_DESCRIPTOR);
}
@Test
public void describeContents_forModuleProperties() {
assertWithMessage("Module properties contents")
.that(AMFM_PROPERTIES.describeContents()).isEqualTo(0);
}
@Test
public void equals_withSameProperties_returnsTrue() {
RadioManager.ModuleProperties propertiesCompared = createAmFmProperties();
@@ -529,6 +754,23 @@ public final class RadioManagerTest {
.that(AMFM_PROPERTIES).isNotEqualTo(propertiesDab);
}
@Test
public void hashCode_withSameModuleProperties_equals() {
RadioManager.ModuleProperties propertiesCompared = createAmFmProperties();
assertWithMessage("Hash code of the same module properties")
.that(propertiesCompared.hashCode()).isEqualTo(AMFM_PROPERTIES.hashCode());
}
@Test
public void newArray_forModulePropertiesCreator() {
RadioManager.ModuleProperties[] modulePropertiesArray =
RadioManager.ModuleProperties.CREATOR.newArray(CREATOR_ARRAY_SIZE);
assertWithMessage("Module properties array")
.that(modulePropertiesArray).hasLength(CREATOR_ARRAY_SIZE);
}
@Test
public void getSelector_forProgramInfo() {
assertWithMessage("Selector of DAB program info")
@@ -549,7 +791,7 @@ public final class RadioManagerTest {
@Test
public void getRelatedContent_forProgramInfo() {
assertWithMessage("Related contents of DAB program info")
assertWithMessage("DAB program info contents")
.that(DAB_PROGRAM_INFO.getRelatedContent())
.containsExactly(DAB_SID_EXT_IDENTIFIER_RELATED);
}
@@ -626,6 +868,33 @@ public final class RadioManagerTest {
.that(DAB_PROGRAM_INFO.getVendorInfo()).isEmpty();
}
@Test
public void describeContents_forProgramInfo() {
assertWithMessage("Program info contents")
.that(DAB_PROGRAM_INFO.describeContents()).isEqualTo(0);
}
@Test
public void newArray_forProgramInfoCreator() {
RadioManager.ProgramInfo[] programInfoArray =
RadioManager.ProgramInfo.CREATOR.newArray(CREATOR_ARRAY_SIZE);
assertWithMessage("Program infos").that(programInfoArray).hasLength(CREATOR_ARRAY_SIZE);
}
@Test
public void writeToParcel_forProgramInfo() {
Parcel parcel = Parcel.obtain();
DAB_PROGRAM_INFO.writeToParcel(parcel, /* flags= */ 0);
parcel.setDataPosition(0);
RadioManager.ProgramInfo programInfoFromParcel =
RadioManager.ProgramInfo.CREATOR.createFromParcel(parcel);
assertWithMessage("Program info created from parcel")
.that(programInfoFromParcel).isEqualTo(DAB_PROGRAM_INFO);
}
@Test
public void equals_withSameProgramInfo_returnsTrue() {
RadioManager.ProgramInfo dabProgramInfoCompared = createDabProgramInfo(DAB_SELECTOR);

View File

@@ -20,18 +20,63 @@ import static com.google.common.truth.Truth.assertWithMessage;
import static org.junit.Assert.assertThrows;
import android.graphics.Bitmap;
import android.hardware.radio.RadioMetadata;
import android.os.Parcel;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import java.util.Set;
@RunWith(MockitoJUnitRunner.class)
public final class RadioMetadataTest {
private static final int CREATOR_ARRAY_SIZE = 3;
private static final int INT_KEY_VALUE = 1;
private static final long TEST_UTC_SECOND_SINCE_EPOCH = 200;
private static final int TEST_TIME_ZONE_OFFSET_MINUTES = 1;
private final RadioMetadata.Builder mBuilder = new RadioMetadata.Builder();
@Mock
private Bitmap mBitmapValue;
@Test
public void describeContents_forClock() {
RadioMetadata.Clock clock = new RadioMetadata.Clock(TEST_UTC_SECOND_SINCE_EPOCH,
TEST_TIME_ZONE_OFFSET_MINUTES);
assertWithMessage("Describe contents for metadata clock")
.that(clock.describeContents()).isEqualTo(0);
}
@Test
public void newArray_forClockCreator() {
RadioMetadata.Clock[] clocks = RadioMetadata.Clock.CREATOR.newArray(CREATOR_ARRAY_SIZE);
assertWithMessage("Clock array size").that(clocks.length).isEqualTo(CREATOR_ARRAY_SIZE);
}
@Test
public void writeToParcel_forClock() {
RadioMetadata.Clock clockExpected = new RadioMetadata.Clock(TEST_UTC_SECOND_SINCE_EPOCH,
TEST_TIME_ZONE_OFFSET_MINUTES);
Parcel parcel = Parcel.obtain();
clockExpected.writeToParcel(parcel, /* flags= */ 0);
parcel.setDataPosition(0);
RadioMetadata.Clock clockFromParcel = RadioMetadata.Clock.CREATOR.createFromParcel(parcel);
assertWithMessage("UTC second since epoch of metadata clock created from parcel")
.that(clockFromParcel.getUtcEpochSeconds()).isEqualTo(TEST_UTC_SECOND_SINCE_EPOCH);
assertWithMessage("Time zone offset minutes of metadata clock created from parcel")
.that(clockFromParcel.getTimezoneOffsetMinutes())
.isEqualTo(TEST_TIME_ZONE_OFFSET_MINUTES);
}
@Test
public void putString_withIllegalKey() {
String invalidStringKey = RadioMetadata.METADATA_KEY_RDS_PI;
@@ -128,23 +173,57 @@ public final class RadioMetadataTest {
.that(metadata.getString(key)).isNull();
}
@Test
public void getBitmap_withKeyInMetadata() {
String key = RadioMetadata.METADATA_KEY_ICON;
RadioMetadata metadata = mBuilder.putBitmap(key, mBitmapValue).build();
assertWithMessage("Bitmap value for key %s in metadata", key)
.that(metadata.getBitmap(key)).isEqualTo(mBitmapValue);
}
@Test
public void getBitmap_withKeyNotInMetadata() {
String key = RadioMetadata.METADATA_KEY_ICON;
RadioMetadata metadata = mBuilder.build();
assertWithMessage("Bitmap value for key %s not in metadata", key)
.that(metadata.getBitmap(key)).isNull();
}
@Test
public void getBitmapId_withKeyInMetadata() {
String key = RadioMetadata.METADATA_KEY_ART;
RadioMetadata metadata = mBuilder.putInt(key, INT_KEY_VALUE).build();
assertWithMessage("Bitmap id value for key %s in metadata", key)
.that(metadata.getBitmapId(key)).isEqualTo(INT_KEY_VALUE);
}
@Test
public void getBitmapId_withKeyNotInMetadata() {
String key = RadioMetadata.METADATA_KEY_ART;
RadioMetadata metadata = mBuilder.build();
assertWithMessage("Bitmap id value for key %s not in metadata", key)
.that(metadata.getBitmapId(key)).isEqualTo(0);
}
@Test
public void getClock_withKeyInMetadata() {
String key = RadioMetadata.METADATA_KEY_CLOCK;
long utcSecondsSinceEpochExpected = 200;
int timezoneOffsetMinutesExpected = 1;
RadioMetadata metadata = mBuilder
.putClock(key, utcSecondsSinceEpochExpected, timezoneOffsetMinutesExpected)
.putClock(key, TEST_UTC_SECOND_SINCE_EPOCH, TEST_TIME_ZONE_OFFSET_MINUTES)
.build();
RadioMetadata.Clock clockExpected = metadata.getClock(key);
assertWithMessage("Number of seconds since epoch of value for key %s in metadata", key)
.that(clockExpected.getUtcEpochSeconds())
.isEqualTo(utcSecondsSinceEpochExpected);
.isEqualTo(TEST_UTC_SECOND_SINCE_EPOCH);
assertWithMessage("Offset of timezone in minutes of value for key %s in metadata", key)
.that(clockExpected.getTimezoneOffsetMinutes())
.isEqualTo(timezoneOffsetMinutesExpected);
.isEqualTo(TEST_TIME_ZONE_OFFSET_MINUTES);
}
@Test
@@ -180,12 +259,13 @@ public final class RadioMetadataTest {
RadioMetadata metadata = mBuilder
.putInt(RadioMetadata.METADATA_KEY_RDS_PI, INT_KEY_VALUE)
.putString(RadioMetadata.METADATA_KEY_ARTIST, "artistTest")
.putBitmap(RadioMetadata.METADATA_KEY_ICON, mBitmapValue)
.build();
Set<String> metadataSet = metadata.keySet();
assertWithMessage("Metadata set of non-empty metadata")
.that(metadataSet).containsExactly(
.that(metadataSet).containsExactly(RadioMetadata.METADATA_KEY_ICON,
RadioMetadata.METADATA_KEY_RDS_PI, RadioMetadata.METADATA_KEY_ARTIST);
}
@@ -208,4 +288,46 @@ public final class RadioMetadataTest {
.that(key).isEqualTo(RadioMetadata.METADATA_KEY_RDS_PI);
}
@Test
public void equals_forMetadataWithSameContents_returnsTrue() {
RadioMetadata metadata = mBuilder
.putInt(RadioMetadata.METADATA_KEY_RDS_PI, INT_KEY_VALUE)
.putString(RadioMetadata.METADATA_KEY_ARTIST, "artistTest")
.build();
RadioMetadata.Builder copyBuilder = new RadioMetadata.Builder(metadata);
RadioMetadata metadataCopied = copyBuilder.build();
assertWithMessage("Metadata with the same contents")
.that(metadataCopied).isEqualTo(metadata);
}
@Test
public void describeContents_forMetadata() {
RadioMetadata metadata = mBuilder.build();
assertWithMessage("Metadata contents").that(metadata.describeContents()).isEqualTo(0);
}
@Test
public void newArray_forRadioMetadataCreator() {
RadioMetadata[] metadataArray = RadioMetadata.CREATOR.newArray(CREATOR_ARRAY_SIZE);
assertWithMessage("Radio metadata array").that(metadataArray).hasLength(CREATOR_ARRAY_SIZE);
}
@Test
public void writeToParcel_forRadioMetadata() {
RadioMetadata metadataExpected = mBuilder
.putInt(RadioMetadata.METADATA_KEY_RDS_PI, INT_KEY_VALUE)
.putString(RadioMetadata.METADATA_KEY_ARTIST, "artistTest")
.build();
Parcel parcel = Parcel.obtain();
metadataExpected.writeToParcel(parcel, /* flags= */ 0);
parcel.setDataPosition(0);
RadioMetadata metadataFromParcel = RadioMetadata.CREATOR.createFromParcel(parcel);
assertWithMessage("Radio metadata created from parcel")
.that(metadataFromParcel).isEqualTo(metadataExpected);
}
}