Make FakeDataSource FakeDataSet and FakeData structures accessible publicly for comparision in tests

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=151331819
This commit is contained in:
eguven 2017-03-27 09:42:37 -07:00 committed by Oliver Woodman
parent 5ebb3d4481
commit 1888bd291b

View File

@ -21,6 +21,7 @@ import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DataSourceException; import com.google.android.exoplayer2.upstream.DataSourceException;
import com.google.android.exoplayer2.upstream.DataSpec; import com.google.android.exoplayer2.upstream.DataSpec;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -236,11 +237,14 @@ public final class FakeDataSource implements DataSource {
/** Container of fake data to be served by a {@link FakeDataSource}. */ /** Container of fake data to be served by a {@link FakeDataSource}. */
public static final class FakeData { public static final class FakeData {
/** Uri of the data or null if this is the default FakeData. */
public final String uri;
private final ArrayList<Segment> segments; private final ArrayList<Segment> segments;
private final FakeDataSet dataSet; private final FakeDataSet dataSet;
private boolean simulateUnknownLength; private boolean simulateUnknownLength;
public FakeData(FakeDataSet dataSet) { private FakeData(FakeDataSet dataSet, String uri) {
this.uri = uri;
this.segments = new ArrayList<>(); this.segments = new ArrayList<>();
this.dataSet = dataSet; this.dataSet = dataSet;
} }
@ -277,32 +281,46 @@ public final class FakeDataSource implements DataSource {
segments.add(new Segment(null, exception)); segments.add(new Segment(null, exception));
return this; return this;
} }
/** Returns the whole data added by {@link #appendReadData(byte[])}. */
public byte[] getData() {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
for (Segment segment : segments) {
if (segment.data != null) {
try {
outputStream.write(segment.data);
} catch (IOException e) {
throw new IllegalStateException(e);
}
}
}
return outputStream.toByteArray();
}
} }
/** A set of {@link FakeData} instances. */ /** A set of {@link FakeData} instances. */
public static final class FakeDataSet { public static final class FakeDataSet {
private FakeData defaultData;
private final HashMap<String, FakeData> dataMap; private final HashMap<String, FakeData> dataMap;
private FakeData defaultData;
public FakeDataSet() { public FakeDataSet() {
dataMap = new HashMap<>(); dataMap = new HashMap<>();
} }
public FakeData newDefaultData() { public FakeData newDefaultData() {
defaultData = new FakeData(this); defaultData = new FakeData(this, null);
return defaultData; return defaultData;
} }
public FakeData newData(String uri) { public FakeData newData(String uri) {
FakeData data = new FakeData(this); FakeData data = new FakeData(this, uri);
dataMap.put(uri, data); dataMap.put(uri, data);
return data; return data;
} }
public FakeDataSet setData(String uri, byte[] data) { public FakeDataSet setData(String uri, byte[] data) {
newData(uri).appendReadData(data); return newData(uri).appendReadData(data).endData();
return this;
} }
public FakeData getData(String uri) { public FakeData getData(String uri) {
@ -310,6 +328,13 @@ public final class FakeDataSource implements DataSource {
return data != null ? data : defaultData; return data != null ? data : defaultData;
} }
public ArrayList<FakeData> getAllData() {
ArrayList<FakeData> fakeDatas = new ArrayList<>(dataMap.values());
if (defaultData != null) {
fakeDatas.add(defaultData);
}
return fakeDatas;
}
} }
} }