Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
1fcfef5c
authored
Oct 23, 2020
by
samrobinson
Committed by
Oliver Woodman
Nov 02, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Add readDelimiterTerminatedString to ParsableByteArray.
PiperOrigin-RevId: 338718776
parent
7ccbf572
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
44 additions
and
1 deletions
library/common/src/main/java/com/google/android/exoplayer2/util/ParsableByteArray.java
library/common/src/test/java/com/google/android/exoplayer2/util/ParsableByteArrayTest.java
library/common/src/main/java/com/google/android/exoplayer2/util/ParsableByteArray.java
View file @
1fcfef5c
...
@@ -496,11 +496,22 @@ public final class ParsableByteArray {
...
@@ -496,11 +496,22 @@ public final class ParsableByteArray {
*/
*/
@Nullable
@Nullable
public
String
readNullTerminatedString
()
{
public
String
readNullTerminatedString
()
{
return
readDelimiterTerminatedString
(
'\0'
);
}
/**
* Reads up to the next delimiter byte (or the limit) as UTF-8 characters.
*
* @return The string not including any terminating delimiter byte, or null if the end of the data
* has already been reached.
*/
@Nullable
public
String
readDelimiterTerminatedString
(
char
delimiter
)
{
if
(
bytesLeft
()
==
0
)
{
if
(
bytesLeft
()
==
0
)
{
return
null
;
return
null
;
}
}
int
stringLimit
=
position
;
int
stringLimit
=
position
;
while
(
stringLimit
<
limit
&&
data
[
stringLimit
]
!=
0
)
{
while
(
stringLimit
<
limit
&&
data
[
stringLimit
]
!=
delimiter
)
{
stringLimit
++;
stringLimit
++;
}
}
String
string
=
Util
.
fromUtf8Bytes
(
data
,
position
,
stringLimit
-
position
);
String
string
=
Util
.
fromUtf8Bytes
(
data
,
position
,
stringLimit
-
position
);
...
...
library/common/src/test/java/com/google/android/exoplayer2/util/ParsableByteArrayTest.java
View file @
1fcfef5c
...
@@ -484,6 +484,38 @@ public final class ParsableByteArrayTest {
...
@@ -484,6 +484,38 @@ public final class ParsableByteArrayTest {
}
}
@Test
@Test
public
void
readDelimiterTerminatedString
()
{
byte
[]
bytes
=
new
byte
[]
{
'f'
,
'o'
,
'o'
,
'*'
,
'b'
,
'a'
,
'r'
,
'*'
};
// Test normal case.
ParsableByteArray
parser
=
new
ParsableByteArray
(
bytes
);
assertThat
(
parser
.
readDelimiterTerminatedString
(
'*'
)).
isEqualTo
(
"foo"
);
assertThat
(
parser
.
getPosition
()).
isEqualTo
(
4
);
assertThat
(
parser
.
readDelimiterTerminatedString
(
'*'
)).
isEqualTo
(
"bar"
);
assertThat
(
parser
.
getPosition
()).
isEqualTo
(
8
);
assertThat
(
parser
.
readDelimiterTerminatedString
(
'*'
)).
isNull
();
// Test with limit at delimiter.
parser
=
new
ParsableByteArray
(
bytes
,
4
);
assertThat
(
parser
.
readDelimiterTerminatedString
(
'*'
)).
isEqualTo
(
"foo"
);
assertThat
(
parser
.
getPosition
()).
isEqualTo
(
4
);
assertThat
(
parser
.
readDelimiterTerminatedString
(
'*'
)).
isNull
();
// Test with limit before delimiter.
parser
=
new
ParsableByteArray
(
bytes
,
3
);
assertThat
(
parser
.
readDelimiterTerminatedString
(
'*'
)).
isEqualTo
(
"foo"
);
assertThat
(
parser
.
getPosition
()).
isEqualTo
(
3
);
assertThat
(
parser
.
readDelimiterTerminatedString
(
'*'
)).
isNull
();
}
@Test
public
void
readDelimiterTerminatedStringWithoutEndingDelimiter
()
{
byte
[]
bytes
=
new
byte
[]
{
'f'
,
'o'
,
'o'
,
'*'
,
'b'
,
'a'
,
'r'
};
ParsableByteArray
parser
=
new
ParsableByteArray
(
bytes
);
assertThat
(
parser
.
readDelimiterTerminatedString
(
'*'
)).
isEqualTo
(
"foo"
);
assertThat
(
parser
.
readDelimiterTerminatedString
(
'*'
)).
isEqualTo
(
"bar"
);
assertThat
(
parser
.
readDelimiterTerminatedString
(
'*'
)).
isNull
();
}
@Test
public
void
readSingleLineWithoutEndingTrail
()
{
public
void
readSingleLineWithoutEndingTrail
()
{
byte
[]
bytes
=
new
byte
[]
{
byte
[]
bytes
=
new
byte
[]
{
'f'
,
'o'
,
'o'
'f'
,
'o'
,
'o'
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment