# FakeDataSet

Artifact: [androidx.media3:media3-test-utils](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/test/utils/FakeDataSet.java+class:androidx.media3.test.utils.FakeDataSet)

*** ** * ** ***


```
@UnstableApi
public class FakeDataSet
```

<br />

Known direct subclasses [FakeAdaptiveDataSet](https://developer.android.com/reference/androidx/media3/test/utils/FakeAdaptiveDataSet)

|---|---|
| `https://developer.android.com/reference/androidx/media3/test/utils/FakeAdaptiveDataSet` | Fake data set emulating the data of an adaptive media source. |

*** ** * ** ***

Collection of `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData` to be served by a `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSource`.

Multiple fake data can be defined by `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#setData(android.net.Uri,byte[])` and `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#newData(android.net.Uri)` methods. It's also possible to define a default data by `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#newDefaultData()`.

`https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#newData(android.net.Uri)` and `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#newDefaultData()` return a `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData` instance which can be used to define specific results during `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSource#read(byte[],int,int)` calls.

The data that will be read from the source can be constructed by calling `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData#appendReadData(byte[])` Calls to `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSource#read(byte[],int,int)` will not span the boundaries between arrays passed to successive calls, and hence the boundaries control the positions at which read requests to the source may only be partially satisfied.

Errors can be inserted by calling `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData#appendReadError(java.io.IOException)`. An inserted error will be thrown from the first call to `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSource#read(byte[],int,int)` that attempts to read from the corresponding position, and from all subsequent calls to `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSource#read(byte[],int,int)` until the source is closed. If the source is closed and re-opened having encountered an error, that error will not be thrown again.

Actions are inserted by calling `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData#appendReadAction(java.lang.Runnable)`. An actions is triggered when the reading reaches action's position. This can be used to make sure the code is in a certain state while testing.

Example usage:

```
  // Create a FakeDataSource then add default data and two FakeData
  // "test_file" throws an IOException when tried to be read until closed and reopened.
  FakeDataSource fakeDataSource = new FakeDataSource();
  fakeDataSource.getDataSet()
      .newDefaultData()
        .appendReadData(defaultData)
        .endData()
      .setData("http://1", data1)
      .newData("test_file")
        .appendReadError(new IOException())
        .appendReadData(data2)
        .endData();
```

## Summary

| ### Nested types |
|---|
| `public final class https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData` Container of fake data to be served by a `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSource`. |
| `public final class https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData.Segment` A segment of `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData`. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#FakeDataSet()()` |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/java/util/ArrayList.html<https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData>` | `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#getAllData()()` Returns a list of all data including `defaultData`. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData` | `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#getData(java.lang.String)(https://developer.android.com/reference/java/lang/String.html uri)` Returns the data for the given `uri`, or `defaultData` if no data is set. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData` | `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#getData(android.net.Uri)(https://developer.android.com/reference/android/net/Uri.html uri)` Returns the data for the given `uri`, or `defaultData` if no data is set. |
| `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData` | `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#newData(java.lang.String)(https://developer.android.com/reference/java/lang/String.html uri)` Returns a new `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData` with the given `uri`. |
| `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData` | `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#newData(android.net.Uri)(https://developer.android.com/reference/android/net/Uri.html uri)` Returns a new `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData` with the given `uri`. |
| `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData` | `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#newDefaultData()()` Sets the default data, overwrites if there is one already. |
| `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet` | `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#setData(java.lang.String,byte[])(https://developer.android.com/reference/java/lang/String.html uri, byte[] data)` Sets the given `data` for the given `uri`. |
| `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet` | `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#setData(android.net.Uri,byte[])(https://developer.android.com/reference/android/net/Uri.html uri, byte[] data)` Sets the given `data` for the given `uri`. |
| `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet` | `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#setRandomData(java.lang.String,int)(https://developer.android.com/reference/java/lang/String.html uri, int length)` Sets random data with the given `length` for the given `uri`. |
| `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet` | `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet#setRandomData(android.net.Uri,int)(https://developer.android.com/reference/android/net/Uri.html uri, int length)` Sets random data with the given `length` for the given `uri`. |

## Public constructors

### FakeDataSet

```
public FakeDataSet()
```

## Public methods

### getAllData

```
public ArrayList<FakeDataSet.FakeData> getAllData()
```

Returns a list of all data including `defaultData`.

### getData

```
public @Nullable FakeDataSet.FakeData getData(String uri)
```

Returns the data for the given `uri`, or `defaultData` if no data is set.

### getData

```
public @Nullable FakeDataSet.FakeData getData(Uri uri)
```

Returns the data for the given `uri`, or `defaultData` if no data is set.

### newData

```
public FakeDataSet.FakeData newData(String uri)
```

Returns a new `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData` with the given `uri`.

### newData

```
public FakeDataSet.FakeData newData(Uri uri)
```

Returns a new `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSet.FakeData` with the given `uri`.

### newDefaultData

```
public FakeDataSet.FakeData newDefaultData()
```

Sets the default data, overwrites if there is one already.

### setData

```
public FakeDataSet setData(String uri, byte[] data)
```

Sets the given `data` for the given `uri`.

### setData

```
public FakeDataSet setData(Uri uri, byte[] data)
```

Sets the given `data` for the given `uri`.

### setRandomData

```
public FakeDataSet setRandomData(String uri, int length)
```

Sets random data with the given `length` for the given `uri`.

### setRandomData

```
public FakeDataSet setRandomData(Uri uri, int length)
```

Sets random data with the given `length` for the given `uri`.