Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
沉迷打码的小凳子
glide
提交
0b3e84bb
G
glide
项目概览
沉迷打码的小凳子
/
glide
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
glide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
0b3e84bb
编写于
10月 17, 2017
作者:
S
Sam Judd
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Convert SingleRequestTest Harness to a SingleRequestBuilder.
上级
bbb25aff
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
398 addition
and
303 deletion
+398
-303
library/src/test/java/com/bumptech/glide/request/SingleRequestTest.java
...st/java/com/bumptech/glide/request/SingleRequestTest.java
+398
-303
未找到文件。
library/src/test/java/com/bumptech/glide/request/SingleRequestTest.java
浏览文件 @
0b3e84bb
...
...
@@ -2,7 +2,7 @@ package com.bumptech.glide.request;
import
static
com
.
bumptech
.
glide
.
tests
.
Util
.
isADataSource
;
import
static
com
.
bumptech
.
glide
.
tests
.
Util
.
mockResource
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
com
.
google
.
common
.
truth
.
Truth
.
assertThat
;
import
static
org
.
junit
.
Assert
.
assertFalse
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
import
static
org
.
mockito
.
Matchers
.
any
;
...
...
@@ -50,112 +50,62 @@ import org.robolectric.annotation.Config;
@Config
(
manifest
=
Config
.
NONE
,
sdk
=
18
)
@SuppressWarnings
(
"rawtypes"
)
public
class
SingleRequestTest
{
private
RequestHarness
harness
=
new
RequestHarness
();
/**
* {@link Number} and {@link List} are arbitrarily chosen types to test some type safety as well.
* Both are in the middle of the hierarchy having multiple descendants and ancestors.
*/
private
static
class
RequestHarness
{
Engine
engine
=
mock
(
Engine
.
class
);
Number
model
=
123456
;
@SuppressWarnings
(
"unchecked"
)
Target
<
List
>
target
=
mock
(
Target
.
class
);
Resource
<
List
>
resource
=
mockResource
();
RequestCoordinator
requestCoordinator
=
mock
(
RequestCoordinator
.
class
);
Drawable
placeholderDrawable
=
null
;
Drawable
errorDrawable
=
null
;
Drawable
fallbackDrawable
=
null
;
@SuppressWarnings
(
"unchecked"
)
RequestListener
<
List
>
requestListener
=
mock
(
RequestListener
.
class
);
@SuppressWarnings
(
"unchecked"
)
TransitionFactory
<
List
>
factory
=
mock
(
TransitionFactory
.
class
);
int
overrideWidth
=
-
1
;
int
overrideHeight
=
-
1
;
List
<?>
result
=
new
ArrayList
<>();
GlideContext
glideContext
=
mock
(
GlideContext
.
class
);
Key
signature
=
mock
(
Key
.
class
);
Priority
priority
=
Priority
.
HIGH
;
boolean
useUnlimitedSourceGeneratorsPool
=
false
;
Class
<
List
>
transcodeClass
=
List
.
class
;
Map
<
Class
<?>,
Transformation
<?>>
transformations
=
new
HashMap
<>();
public
RequestHarness
()
{
when
(
requestCoordinator
.
canSetImage
(
any
(
Request
.
class
))).
thenReturn
(
true
);
when
(
requestCoordinator
.
canNotifyStatusChanged
(
any
(
Request
.
class
))).
thenReturn
(
true
);
when
(
resource
.
get
()).
thenReturn
(
result
);
}
public
SingleRequest
<
List
>
getRequest
()
{
RequestOptions
requestOptions
=
new
RequestOptions
()
.
error
(
errorDrawable
)
.
placeholder
(
placeholderDrawable
)
.
fallback
(
fallbackDrawable
)
.
override
(
overrideWidth
,
overrideHeight
)
.
priority
(
priority
)
.
signature
(
signature
)
.
useUnlimitedSourceGeneratorsPool
(
useUnlimitedSourceGeneratorsPool
);
return
SingleRequest
.
obtain
(
glideContext
,
glideContext
,
model
,
transcodeClass
,
requestOptions
,
overrideWidth
,
overrideHeight
,
priority
,
target
,
requestListener
,
requestCoordinator
,
engine
,
factory
);
}
}
private
SingleRequestBuilder
builder
;
@Before
public
void
setUp
()
{
harness
=
new
RequestHarness
();
builder
=
new
SingleRequestBuilder
();
}
@Test
public
void
testIsNotCompleteBeforeReceivingResource
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
assertFalse
(
request
.
isComplete
());
}
@Test
public
void
testCanHandleNullResources
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
onResourceReady
(
null
,
DataSource
.
LOCAL
);
assertTrue
(
request
.
isFailed
());
verify
(
harness
.
requestListener
).
onLoadFailed
(
isAGlideException
(),
isA
(
Number
.
class
),
eq
(
harness
.
target
),
anyBoolean
());
verify
(
builder
.
requestListener
).
onLoadFailed
(
isAGlideException
(),
isA
(
Number
.
class
),
eq
(
builder
.
target
),
anyBoolean
());
}
@Test
public
void
testCanHandleEmptyResources
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
when
(
harness
.
resource
.
get
()).
thenReturn
(
null
);
SingleRequest
<
List
>
request
=
builder
.
build
();
when
(
builder
.
resource
.
get
()).
thenReturn
(
null
);
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
REMOTE
);
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
REMOTE
);
assertTrue
(
request
.
isFailed
());
verify
(
harness
.
engine
).
release
(
eq
(
harness
.
resource
));
verify
(
harness
.
requestListener
).
onLoadFailed
(
isAGlideException
(),
any
(
Number
.
class
),
eq
(
harness
.
target
),
anyBoolean
());
verify
(
builder
.
engine
).
release
(
eq
(
builder
.
resource
));
verify
(
builder
.
requestListener
).
onLoadFailed
(
isAGlideException
(),
any
(
Number
.
class
),
eq
(
builder
.
target
),
anyBoolean
());
}
@Test
public
void
testCanHandleNonConformingResources
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
when
(((
Resource
)
(
harness
.
resource
)).
get
())
SingleRequest
<
List
>
request
=
builder
.
build
();
when
(((
Resource
)
(
builder
.
resource
)).
get
())
.
thenReturn
(
"Invalid mocked String, this should be a List"
);
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
assertTrue
(
request
.
isFailed
());
verify
(
harness
.
engine
).
release
(
eq
(
harness
.
resource
));
verify
(
harness
.
requestListener
).
onLoadFailed
(
isAGlideException
(),
any
(
Number
.
class
),
eq
(
harness
.
target
),
anyBoolean
());
verify
(
builder
.
engine
).
release
(
eq
(
builder
.
resource
));
verify
(
builder
.
requestListener
).
onLoadFailed
(
isAGlideException
(),
any
(
Number
.
class
),
eq
(
builder
.
target
),
anyBoolean
());
}
@Test
public
void
testIsNotFailedAfterClear
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
onResourceReady
(
null
,
DataSource
.
DATA_DISK_CACHE
);
request
.
clear
();
...
...
@@ -165,7 +115,7 @@ public class SingleRequestTest {
@Test
public
void
testIsPausedAfterPause
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
pause
();
assertTrue
(
request
.
isPaused
());
...
...
@@ -173,7 +123,7 @@ public class SingleRequestTest {
@Test
public
void
testIsNotCancelledAfterPause
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
pause
();
assertFalse
(
request
.
isCancelled
());
...
...
@@ -181,7 +131,7 @@ public class SingleRequestTest {
@Test
public
void
testIsNotPausedAfterBeginningWhilePaused
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
pause
();
request
.
begin
();
...
...
@@ -191,7 +141,7 @@ public class SingleRequestTest {
@Test
public
void
testIsNotFailedAfterBegin
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
onResourceReady
(
null
,
DataSource
.
DATA_DISK_CACHE
);
request
.
begin
();
...
...
@@ -201,17 +151,17 @@ public class SingleRequestTest {
@Test
public
void
testIsCompleteAfterReceivingResource
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
LOCAL
);
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
LOCAL
);
assertTrue
(
request
.
isComplete
());
}
@Test
public
void
testIsNotCompleteAfterClear
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
REMOTE
);
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
REMOTE
);
request
.
clear
();
assertFalse
(
request
.
isComplete
());
...
...
@@ -219,7 +169,7 @@ public class SingleRequestTest {
@Test
public
void
testIsCancelledAfterClear
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
clear
();
assertTrue
(
request
.
isCancelled
());
...
...
@@ -227,11 +177,11 @@ public class SingleRequestTest {
@Test
public
void
testDoesNotNotifyTargetTwiceIfClearedTwiceInARow
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
clear
();
request
.
clear
();
verify
(
harness
.
target
,
times
(
1
)).
onLoadCleared
(
any
(
Drawable
.
class
));
verify
(
builder
.
target
,
times
(
1
)).
onLoadCleared
(
any
(
Drawable
.
class
));
}
@Test
...
...
@@ -246,24 +196,25 @@ public class SingleRequestTest {
}
}).
when
(
requestCoordinator
).
canSetImage
(
any
(
Request
.
class
));
harness
.
requestCoordinator
=
requestCoordinator
;
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
setRequestCoordinator
(
requestCoordinator
)
.
build
();
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
verify
(
requestCoordinator
).
canSetImage
(
eq
(
request
));
}
@Test
public
void
testIsNotFailedWithoutException
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
assertFalse
(
request
.
isFailed
());
}
@Test
public
void
testIsFailedAfterException
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
onLoadFailed
(
new
GlideException
(
"test"
));
assertTrue
(
request
.
isFailed
());
...
...
@@ -271,23 +222,23 @@ public class SingleRequestTest {
@Test
public
void
testIgnoresOnSizeReadyIfNotWaitingForSize
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
begin
();
request
.
onSizeReady
(
100
,
100
);
request
.
onSizeReady
(
100
,
100
);
verify
(
harness
.
engine
,
times
(
1
))
verify
(
builder
.
engine
,
times
(
1
))
.
load
(
eq
(
harness
.
glideContext
),
eq
(
harness
.
model
),
eq
(
harness
.
signature
),
eq
(
builder
.
glideContext
),
eq
(
builder
.
model
),
eq
(
builder
.
signature
),
eq
(
100
),
eq
(
100
),
eq
(
Object
.
class
),
eq
(
List
.
class
),
any
(
Priority
.
class
),
any
(
DiskCacheStrategy
.
class
),
eq
(
harness
.
transformations
),
eq
(
builder
.
transformations
),
anyBoolean
(),
anyBoolean
(),
any
(
Options
.
class
),
...
...
@@ -300,7 +251,7 @@ public class SingleRequestTest {
@Test
public
void
testIsFailedAfterNoResultAndNullException
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
onLoadFailed
(
new
GlideException
(
"test"
));
assertTrue
(
request
.
isFailed
());
...
...
@@ -310,29 +261,29 @@ public class SingleRequestTest {
public
void
testEngineLoadCancelledOnCancel
()
{
Engine
.
LoadStatus
loadStatus
=
mock
(
Engine
.
LoadStatus
.
class
);
when
(
harness
.
engine
.
load
(
eq
(
harness
.
glideContext
),
eq
(
harness
.
model
),
eq
(
harness
.
signature
),
anyInt
(),
anyInt
(),
eq
(
Object
.
class
),
eq
(
List
.
class
),
any
(
Priority
.
class
),
any
(
DiskCacheStrategy
.
class
),
eq
(
harness
.
transformations
),
anyBoolean
(),
anyBoolean
(),
any
(
Options
.
class
),
anyBoolean
(),
anyBoolean
(),
anyBoolean
(),
anyBoolean
(),
any
(
ResourceCallback
.
class
)))
when
(
builder
.
engine
.
load
(
eq
(
builder
.
glideContext
),
eq
(
builder
.
model
),
eq
(
builder
.
signature
),
anyInt
(),
anyInt
(),
eq
(
Object
.
class
),
eq
(
List
.
class
),
any
(
Priority
.
class
),
any
(
DiskCacheStrategy
.
class
),
eq
(
builder
.
transformations
),
anyBoolean
(),
anyBoolean
(),
any
(
Options
.
class
),
anyBoolean
(),
anyBoolean
(),
anyBoolean
(),
anyBoolean
(),
any
(
ResourceCallback
.
class
)))
.
thenReturn
(
loadStatus
);
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
begin
();
request
.
onSizeReady
(
100
,
100
);
...
...
@@ -343,12 +294,12 @@ public class SingleRequestTest {
@Test
public
void
testResourceIsRecycledOnClear
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
REMOTE
);
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
REMOTE
);
request
.
clear
();
verify
(
harness
.
engine
).
release
(
eq
(
harness
.
resource
));
verify
(
builder
.
engine
).
release
(
eq
(
builder
.
resource
));
}
@Test
...
...
@@ -357,12 +308,13 @@ public class SingleRequestTest {
MockTarget
target
=
new
MockTarget
();
harness
.
placeholderDrawable
=
expected
;
harness
.
target
=
target
;
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
setPlaceholderDrawable
(
expected
)
.
setTarget
(
target
)
.
build
();
request
.
begin
();
assert
Equals
(
expected
,
target
.
currentPlaceholder
);
assert
That
(
target
.
currentPlaceholder
).
isEqualTo
(
expected
);
}
@Test
...
...
@@ -371,13 +323,14 @@ public class SingleRequestTest {
MockTarget
target
=
new
MockTarget
();
harness
.
errorDrawable
=
expected
;
harness
.
target
=
target
;
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
setErrorDrawable
(
expected
)
.
setTarget
(
target
)
.
build
();
request
.
onLoadFailed
(
new
GlideException
(
"test"
));
assert
Equals
(
expected
,
target
.
currentPlaceholder
);
assert
That
(
target
.
currentPlaceholder
).
isEqualTo
(
expected
);
}
@Test
...
...
@@ -386,14 +339,15 @@ public class SingleRequestTest {
MockTarget
target
=
new
MockTarget
();
harness
.
errorDrawable
=
placeholder
;
harness
.
target
=
target
;
harness
.
model
=
null
;
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
setErrorDrawable
(
placeholder
)
.
setTarget
(
target
)
.
setModel
(
null
)
.
build
();
request
.
begin
();
assert
Equals
(
placeholder
,
target
.
currentP
laceholder
);
assert
That
(
target
.
currentPlaceholder
).
isEqualTo
(
p
laceholder
);
}
@Test
...
...
@@ -403,15 +357,16 @@ public class SingleRequestTest {
MockTarget
target
=
new
MockTarget
();
harness
.
placeholderDrawable
=
placeholder
;
harness
.
errorDrawable
=
errorPlaceholder
;
harness
.
target
=
target
;
harness
.
model
=
null
;
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
setPlaceholderDrawable
(
placeholder
)
.
setErrorDrawable
(
errorPlaceholder
)
.
setTarget
(
target
)
.
setModel
(
null
)
.
build
();
request
.
begin
();
assert
Equals
(
errorPlaceholder
,
target
.
current
Placeholder
);
assert
That
(
target
.
currentPlaceholder
).
isEqualTo
(
error
Placeholder
);
}
...
...
@@ -422,41 +377,43 @@ public class SingleRequestTest {
Drawable
fallback
=
new
ColorDrawable
(
Color
.
BLUE
);
MockTarget
target
=
new
MockTarget
();
harness
.
placeholderDrawable
=
placeholder
;
harness
.
errorDrawable
=
errorPlaceholder
;
harness
.
fallbackDrawable
=
fallback
;
harness
.
target
=
target
;
harness
.
model
=
null
;
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
setPlaceholderDrawable
(
placeholder
)
.
setErrorDrawable
(
errorPlaceholder
)
.
setFallbackDrawable
(
fallback
)
.
setTarget
(
target
)
.
setModel
(
null
)
.
build
();
request
.
begin
();
assertEquals
(
fallback
,
target
.
currentPlaceholder
);
assertThat
(
target
.
currentPlaceholder
).
isEqualTo
(
fallback
);
}
@Test
public
void
testIsNotRunningBeforeRunCalled
()
{
assertFalse
(
harness
.
getRequest
().
isRunning
());
assertFalse
(
builder
.
build
().
isRunning
());
}
@Test
public
void
testIsRunningAfterRunCalled
()
{
Request
request
=
harness
.
getRequest
();
Request
request
=
builder
.
build
();
request
.
begin
();
assertTrue
(
request
.
isRunning
());
}
@Test
public
void
testIsNotRunningAfterComplete
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
begin
();
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
REMOTE
);
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
REMOTE
);
assertFalse
(
request
.
isRunning
());
}
@Test
public
void
testIsNotRunningAfterFailing
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
begin
();
request
.
onLoadFailed
(
new
GlideException
(
"test"
));
...
...
@@ -465,7 +422,7 @@ public class SingleRequestTest {
@Test
public
void
testIsNotRunningAfterClear
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
begin
();
request
.
clear
();
...
...
@@ -474,113 +431,115 @@ public class SingleRequestTest {
@Test
public
void
testCallsTargetOnResourceReadyIfNoRequestListener
()
{
harness
.
requestListener
=
null
;
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
LOCAL
);
SingleRequest
<
List
>
request
=
builder
.
setRequestListener
(
null
)
.
build
();
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
LOCAL
);
verify
(
harness
.
target
).
onResourceReady
(
eq
(
harness
.
result
),
anyTransition
());
verify
(
builder
.
target
).
onResourceReady
(
eq
(
builder
.
result
),
anyTransition
());
}
@Test
public
void
testCallsTargetOnResourceReadyIfRequestListenerReturnsFalse
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
when
(
harness
.
requestListener
.
onResourceReady
(
any
(
List
.
class
),
any
(
Number
.
class
),
eq
(
harness
.
target
),
isADataSource
(),
SingleRequest
<
List
>
request
=
builder
.
build
();
when
(
builder
.
requestListener
.
onResourceReady
(
any
(
List
.
class
),
any
(
Number
.
class
),
eq
(
builder
.
target
),
isADataSource
(),
anyBoolean
())).
thenReturn
(
false
);
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
LOCAL
);
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
LOCAL
);
verify
(
harness
.
target
).
onResourceReady
(
eq
(
harness
.
result
),
anyTransition
());
verify
(
builder
.
target
).
onResourceReady
(
eq
(
builder
.
result
),
anyTransition
());
}
@Test
public
void
testDoesNotCallTargetOnResourceReadyIfRequestListenerReturnsTrue
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
when
(
harness
.
requestListener
.
onResourceReady
(
any
(
List
.
class
),
any
(
Number
.
class
),
eq
(
harness
.
target
),
isADataSource
(),
SingleRequest
<
List
>
request
=
builder
.
build
();
when
(
builder
.
requestListener
.
onResourceReady
(
any
(
List
.
class
),
any
(
Number
.
class
),
eq
(
builder
.
target
),
isADataSource
(),
anyBoolean
())).
thenReturn
(
true
);
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
REMOTE
);
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
REMOTE
);
verify
(
harness
.
target
,
never
()).
onResourceReady
(
any
(
List
.
class
),
anyTransition
());
verify
(
builder
.
target
,
never
()).
onResourceReady
(
any
(
List
.
class
),
anyTransition
());
}
@Test
public
void
testCallsTargetOnExceptionIfNoRequestListener
()
{
harness
.
requestListener
=
null
;
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
setRequestListener
(
null
)
.
build
();
request
.
onLoadFailed
(
new
GlideException
(
"test"
));
verify
(
harness
.
target
).
onLoadFailed
(
eq
(
harness
.
errorDrawable
));
verify
(
builder
.
target
).
onLoadFailed
(
eq
(
builder
.
errorDrawable
));
}
@Test
public
void
testCallsTargetOnExceptionIfRequestListenerReturnsFalse
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
when
(
harness
.
requestListener
.
onLoadFailed
(
isAGlideException
(),
any
(
Number
.
class
),
eq
(
harness
.
target
),
anyBoolean
()))
SingleRequest
<
List
>
request
=
builder
.
build
();
when
(
builder
.
requestListener
.
onLoadFailed
(
isAGlideException
(),
any
(
Number
.
class
),
eq
(
builder
.
target
),
anyBoolean
()))
.
thenReturn
(
false
);
request
.
onLoadFailed
(
new
GlideException
(
"test"
));
verify
(
harness
.
target
).
onLoadFailed
(
eq
(
harness
.
errorDrawable
));
verify
(
builder
.
target
).
onLoadFailed
(
eq
(
builder
.
errorDrawable
));
}
@Test
public
void
testDoesNotCallTargetOnExceptionIfRequestListenerReturnsTrue
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
when
(
harness
.
requestListener
.
onLoadFailed
(
isAGlideException
(),
any
(
Number
.
class
),
eq
(
harness
.
target
),
anyBoolean
()))
SingleRequest
<
List
>
request
=
builder
.
build
();
when
(
builder
.
requestListener
.
onLoadFailed
(
isAGlideException
(),
any
(
Number
.
class
),
eq
(
builder
.
target
),
anyBoolean
()))
.
thenReturn
(
true
);
request
.
onLoadFailed
(
new
GlideException
(
"test"
));
verify
(
harness
.
target
,
never
()).
onLoadFailed
(
any
(
Drawable
.
class
));
verify
(
builder
.
target
,
never
()).
onLoadFailed
(
any
(
Drawable
.
class
));
}
@Test
public
void
testRequestListenerIsCalledWithResourceResult
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
verify
(
harness
.
requestListener
)
.
onResourceReady
(
eq
(
harness
.
result
),
any
(
Number
.
class
),
isAListTarget
(),
isADataSource
(),
verify
(
builder
.
requestListener
)
.
onResourceReady
(
eq
(
builder
.
result
),
any
(
Number
.
class
),
isAListTarget
(),
isADataSource
(),
anyBoolean
());
}
@Test
public
void
testRequestListenerIsCalledWithModel
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
verify
(
harness
.
requestListener
)
.
onResourceReady
(
any
(
List
.
class
),
eq
(
harness
.
model
),
isAListTarget
(),
isADataSource
(),
verify
(
builder
.
requestListener
)
.
onResourceReady
(
any
(
List
.
class
),
eq
(
builder
.
model
),
isAListTarget
(),
isADataSource
(),
anyBoolean
());
}
@Test
public
void
testRequestListenerIsCalledWithTarget
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
verify
(
harness
.
requestListener
)
.
onResourceReady
(
any
(
List
.
class
),
any
(
Number
.
class
),
eq
(
harness
.
target
),
isADataSource
(),
verify
(
builder
.
requestListener
)
.
onResourceReady
(
any
(
List
.
class
),
any
(
Number
.
class
),
eq
(
builder
.
target
),
isADataSource
(),
anyBoolean
());
}
@Test
public
void
testRequestListenerIsCalledWithLoadedFromMemoryIfLoadCompletesSynchronously
()
{
final
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
final
SingleRequest
<
List
>
request
=
builder
.
build
();
when
(
harness
.
engine
when
(
builder
.
engine
.
load
(
eq
(
harness
.
glideContext
),
eq
(
harness
.
model
),
eq
(
harness
.
signature
),
eq
(
builder
.
glideContext
),
eq
(
builder
.
model
),
eq
(
builder
.
signature
),
anyInt
(),
anyInt
(),
eq
(
Object
.
class
),
eq
(
List
.
class
),
any
(
Priority
.
class
),
any
(
DiskCacheStrategy
.
class
),
eq
(
harness
.
transformations
),
eq
(
builder
.
transformations
),
anyBoolean
(),
anyBoolean
(),
any
(
Options
.
class
),
...
...
@@ -592,124 +551,129 @@ public class SingleRequestTest {
.
thenAnswer
(
new
Answer
<
Object
>()
{
@Override
public
Object
answer
(
InvocationOnMock
invocation
)
throws
Throwable
{
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
MEMORY_CACHE
);
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
MEMORY_CACHE
);
return
null
;
}
});
request
.
begin
();
request
.
onSizeReady
(
100
,
100
);
verify
(
harness
.
requestListener
)
.
onResourceReady
(
eq
(
harness
.
result
),
any
(
Number
.
class
),
isAListTarget
(),
verify
(
builder
.
requestListener
)
.
onResourceReady
(
eq
(
builder
.
result
),
any
(
Number
.
class
),
isAListTarget
(),
eq
(
DataSource
.
MEMORY_CACHE
),
anyBoolean
());
}
@Test
public
void
testRequestListenerIsCalledWithNotLoadedFromMemoryCacheIfLoadCompletesAsynchronously
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
onSizeReady
(
100
,
100
);
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
LOCAL
);
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
LOCAL
);
verify
(
harness
.
requestListener
)
.
onResourceReady
(
eq
(
harness
.
result
),
any
(
Number
.
class
),
isAListTarget
(),
verify
(
builder
.
requestListener
)
.
onResourceReady
(
eq
(
builder
.
result
),
any
(
Number
.
class
),
isAListTarget
(),
eq
(
DataSource
.
LOCAL
),
anyBoolean
());
}
@Test
public
void
testRequestListenerIsCalledWithIsFirstResourceIfNoRequestCoordinator
()
{
harness
.
requestCoordinator
=
null
;
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
SingleRequest
<
List
>
request
=
builder
.
setRequestCoordinator
(
null
)
.
build
();
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
verify
(
harness
.
requestListener
)
.
onResourceReady
(
eq
(
harness
.
result
),
any
(
Number
.
class
),
isAListTarget
(),
isADataSource
(),
verify
(
builder
.
requestListener
)
.
onResourceReady
(
eq
(
builder
.
result
),
any
(
Number
.
class
),
isAListTarget
(),
isADataSource
(),
eq
(
true
));
}
@Test
public
void
testRequestListenerIsCalledWithFirstImageIfRequestCoordinatorReturnsNoResourceSet
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
when
(
harness
.
requestCoordinator
.
isAnyResourceSet
()).
thenReturn
(
false
);
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
SingleRequest
<
List
>
request
=
builder
.
build
();
when
(
builder
.
requestCoordinator
.
isAnyResourceSet
()).
thenReturn
(
false
);
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
verify
(
harness
.
requestListener
)
.
onResourceReady
(
eq
(
harness
.
result
),
any
(
Number
.
class
),
isAListTarget
(),
isADataSource
(),
verify
(
builder
.
requestListener
)
.
onResourceReady
(
eq
(
builder
.
result
),
any
(
Number
.
class
),
isAListTarget
(),
isADataSource
(),
eq
(
true
));
}
@Test
public
void
testRequestListenerIsCalledWithNotIsFirstRequestIfRequestCoordinatorReturnsResourceSet
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
when
(
harness
.
requestCoordinator
.
isAnyResourceSet
()).
thenReturn
(
true
);
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
SingleRequest
<
List
>
request
=
builder
.
build
();
when
(
builder
.
requestCoordinator
.
isAnyResourceSet
()).
thenReturn
(
true
);
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
verify
(
harness
.
requestListener
)
.
onResourceReady
(
eq
(
harness
.
result
),
any
(
Number
.
class
),
isAListTarget
(),
verify
(
builder
.
requestListener
)
.
onResourceReady
(
eq
(
builder
.
result
),
any
(
Number
.
class
),
isAListTarget
(),
isADataSource
(),
eq
(
false
));
}
@Test
public
void
testTargetIsCalledWithAnimationFromFactory
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
Transition
<
List
>
transition
=
mockTransition
();
when
(
harness
.
factory
.
build
(
any
(
DataSource
.
class
),
anyBoolean
())).
thenReturn
(
transition
);
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
when
(
builder
.
transitionFactory
.
build
(
any
(
DataSource
.
class
),
anyBoolean
()))
.
thenReturn
(
transition
);
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
DATA_DISK_CACHE
);
verify
(
harness
.
target
).
onResourceReady
(
eq
(
harness
.
result
),
eq
(
transition
));
verify
(
builder
.
target
).
onResourceReady
(
eq
(
builder
.
result
),
eq
(
transition
));
}
@Test
public
void
testCallsGetSizeIfOverrideWidthIsLessThanZero
()
{
harness
.
overrideWidth
=
-
1
;
harness
.
overrideHeight
=
100
;
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
setOverrideWidth
(-
1
)
.
setOverrideHeight
(
100
)
.
build
();
request
.
begin
();
verify
(
harness
.
target
).
getSize
(
any
(
SizeReadyCallback
.
class
));
verify
(
builder
.
target
).
getSize
(
any
(
SizeReadyCallback
.
class
));
}
@Test
public
void
testCallsGetSizeIfOverrideHeightIsLessThanZero
()
{
harness
.
overrideHeight
=
-
1
;
harness
.
overrideWidth
=
100
;
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
setOverrideWidth
(
100
)
.
setOverrideHeight
(-
1
)
.
build
();
request
.
begin
();
verify
(
harness
.
target
).
getSize
(
any
(
SizeReadyCallback
.
class
));
verify
(
builder
.
target
).
getSize
(
any
(
SizeReadyCallback
.
class
));
}
@Test
public
void
testDoesNotCallGetSizeIfOverrideWidthAndHeightAreSet
()
{
harness
.
overrideWidth
=
100
;
harness
.
overrideHeight
=
100
;
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
setOverrideWidth
(
100
)
.
setOverrideHeight
(
100
)
.
build
();
request
.
begin
();
verify
(
harness
.
target
,
never
()).
getSize
(
any
(
SizeReadyCallback
.
class
));
verify
(
builder
.
target
,
never
()).
getSize
(
any
(
SizeReadyCallback
.
class
));
}
@Test
public
void
testCallsEngineWithOverrideWidthAndHeightIfSet
()
{
harness
.
overrideWidth
=
1
;
harness
.
overrideHeight
=
2
;
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
setOverrideWidth
(
1
)
.
setOverrideHeight
(
2
)
.
build
();
request
.
begin
();
verify
(
harness
.
engine
)
verify
(
builder
.
engine
)
.
load
(
eq
(
harness
.
glideContext
),
eq
(
harness
.
model
),
eq
(
harness
.
signature
),
eq
(
builder
.
glideContext
),
eq
(
builder
.
model
),
eq
(
builder
.
signature
),
anyInt
(),
anyInt
(),
eq
(
Object
.
class
),
eq
(
List
.
class
),
any
(
Priority
.
class
),
any
(
DiskCacheStrategy
.
class
),
eq
(
harness
.
transformations
),
eq
(
builder
.
transformations
),
anyBoolean
(),
anyBoolean
(),
any
(
Options
.
class
),
...
...
@@ -722,31 +686,32 @@ public class SingleRequestTest {
@Test
public
void
testDoesNotSetErrorDrawableIfRequestCoordinatorDoesntAllowIt
()
{
harness
.
errorDrawable
=
new
ColorDrawable
(
Color
.
RED
);
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
when
(
harness
.
requestCoordinator
.
canNotifyStatusChanged
(
any
(
Request
.
class
))).
thenReturn
(
false
);
SingleRequest
<
List
>
request
=
builder
.
setErrorDrawable
(
new
ColorDrawable
(
Color
.
RED
))
.
build
();
when
(
builder
.
requestCoordinator
.
canNotifyStatusChanged
(
any
(
Request
.
class
))).
thenReturn
(
false
);
request
.
onLoadFailed
(
new
GlideException
(
"test"
));
verify
(
harness
.
target
,
never
()).
onLoadFailed
(
any
(
Drawable
.
class
));
verify
(
builder
.
target
,
never
()).
onLoadFailed
(
any
(
Drawable
.
class
));
}
@Test
public
void
testCanReRunCancelledRequests
()
{
doAnswer
(
new
CallSizeReady
(
100
,
100
)).
when
(
harness
.
target
)
doAnswer
(
new
CallSizeReady
(
100
,
100
)).
when
(
builder
.
target
)
.
getSize
(
any
(
SizeReadyCallback
.
class
));
when
(
harness
.
engine
when
(
builder
.
engine
.
load
(
eq
(
harness
.
glideContext
),
eq
(
harness
.
model
),
eq
(
harness
.
signature
),
eq
(
builder
.
glideContext
),
eq
(
builder
.
model
),
eq
(
builder
.
signature
),
eq
(
100
),
eq
(
100
),
eq
(
Object
.
class
),
eq
(
List
.
class
),
any
(
Priority
.
class
),
any
(
DiskCacheStrategy
.
class
),
eq
(
harness
.
transformations
),
eq
(
builder
.
transformations
),
anyBoolean
(),
anyBoolean
(),
any
(
Options
.
class
),
...
...
@@ -755,42 +720,42 @@ public class SingleRequestTest {
/*useAnimationPool=*/
anyBoolean
(),
anyBoolean
(),
any
(
ResourceCallback
.
class
)))
.
thenAnswer
(
new
CallResourceCallback
(
harness
.
resource
));
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
.
thenAnswer
(
new
CallResourceCallback
(
builder
.
resource
));
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
begin
();
request
.
cancel
();
request
.
begin
();
verify
(
harness
.
target
,
times
(
2
)).
onResourceReady
(
eq
(
harness
.
result
),
anyTransition
());
verify
(
builder
.
target
,
times
(
2
)).
onResourceReady
(
eq
(
builder
.
result
),
anyTransition
());
}
@Test
public
void
testResourceOnlyReceivesOneGetOnResourceReady
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
request
.
onResourceReady
(
harness
.
resource
,
DataSource
.
LOCAL
);
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
onResourceReady
(
builder
.
resource
,
DataSource
.
LOCAL
);
verify
(
harness
.
resource
,
times
(
1
)).
get
();
verify
(
builder
.
resource
,
times
(
1
)).
get
();
}
@Test
public
void
testDoesNotStartALoadIfOnSizeReadyIsCalledAfterCancel
()
{
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
build
();
request
.
cancel
();
request
.
onSizeReady
(
100
,
100
);
verify
(
harness
.
engine
,
never
())
verify
(
builder
.
engine
,
never
())
.
load
(
eq
(
harness
.
glideContext
),
eq
(
harness
.
model
),
eq
(
harness
.
signature
),
eq
(
builder
.
glideContext
),
eq
(
builder
.
model
),
eq
(
builder
.
signature
),
anyInt
(),
anyInt
(),
eq
(
Object
.
class
),
eq
(
List
.
class
),
any
(
Priority
.
class
),
any
(
DiskCacheStrategy
.
class
),
eq
(
harness
.
transformations
),
eq
(
builder
.
transformations
),
anyBoolean
(),
anyBoolean
(),
any
(
Options
.
class
),
...
...
@@ -804,26 +769,26 @@ public class SingleRequestTest {
@Test
public
void
testCallsSourceUnlimitedExecutorEngineIfOptionsIsSet
()
{
doAnswer
(
new
CallSizeReady
(
100
,
100
)).
when
(
harness
.
target
)
doAnswer
(
new
CallSizeReady
(
100
,
100
)).
when
(
builder
.
target
)
.
getSize
(
any
(
SizeReadyCallback
.
class
));
harness
.
useUnlimitedSourceGeneratorsPool
=
true
;
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
setUseUnlimitedSourceGeneratorsPool
(
true
)
.
build
();
request
.
begin
();
verify
(
harness
.
engine
)
verify
(
builder
.
engine
)
.
load
(
eq
(
harness
.
glideContext
),
eq
(
harness
.
model
),
eq
(
harness
.
signature
),
eq
(
builder
.
glideContext
),
eq
(
builder
.
model
),
eq
(
builder
.
signature
),
anyInt
(),
anyInt
(),
eq
(
Object
.
class
),
eq
(
List
.
class
),
any
(
Priority
.
class
),
any
(
DiskCacheStrategy
.
class
),
eq
(
harness
.
transformations
),
eq
(
builder
.
transformations
),
anyBoolean
(),
anyBoolean
(),
any
(
Options
.
class
),
...
...
@@ -836,26 +801,26 @@ public class SingleRequestTest {
@Test
public
void
testCallsSourceExecutorEngineIfOptionsIsSet
()
{
doAnswer
(
new
CallSizeReady
(
100
,
100
)).
when
(
harness
.
target
)
doAnswer
(
new
CallSizeReady
(
100
,
100
)).
when
(
builder
.
target
)
.
getSize
(
any
(
SizeReadyCallback
.
class
));
harness
.
useUnlimitedSourceGeneratorsPool
=
false
;
SingleRequest
<
List
>
request
=
harness
.
getRequest
();
SingleRequest
<
List
>
request
=
builder
.
setUseUnlimitedSourceGeneratorsPool
(
false
)
.
build
();
request
.
begin
();
verify
(
harness
.
engine
)
verify
(
builder
.
engine
)
.
load
(
eq
(
harness
.
glideContext
),
eq
(
harness
.
model
),
eq
(
harness
.
signature
),
eq
(
builder
.
glideContext
),
eq
(
builder
.
model
),
eq
(
builder
.
signature
),
anyInt
(),
anyInt
(),
eq
(
Object
.
class
),
eq
(
List
.
class
),
any
(
Priority
.
class
),
any
(
DiskCacheStrategy
.
class
),
eq
(
harness
.
transformations
),
eq
(
builder
.
transformations
),
anyBoolean
(),
anyBoolean
(),
any
(
Options
.
class
),
...
...
@@ -868,53 +833,181 @@ public class SingleRequestTest {
@Test
public
void
testIsEquivalentTo
()
{
SingleRequest
<
List
>
originalRequest1
=
harness
.
getRequest
();
SingleRequest
<
List
>
originalRequest2
=
harness
.
getRequest
();
SingleRequest
<
List
>
originalRequest1
=
builder
.
build
();
SingleRequest
<
List
>
originalRequest2
=
builder
.
build
();
assertTrue
(
originalRequest1
.
isEquivalentTo
(
originalRequest2
));
harness
=
new
RequestHarness
();
harness
.
overrideWidth
=
harness
.
overrideWidth
*
2
;
SingleRequest
<
List
>
widthRequest
=
harness
.
getRequest
();
builder
=
new
SingleRequestBuilder
();
builder
.
overrideWidth
=
builder
.
overrideWidth
*
2
;
SingleRequest
<
List
>
widthRequest
=
builder
.
build
();
assertTrue
(
widthRequest
.
isEquivalentTo
(
widthRequest
));
assertFalse
(
widthRequest
.
isEquivalentTo
(
originalRequest1
));
assertFalse
(
originalRequest1
.
isEquivalentTo
(
widthRequest
));
harness
=
new
RequestHarness
();
harness
.
overrideHeight
=
harness
.
overrideHeight
*
2
;
SingleRequest
<
List
>
heightRequest
=
harness
.
getRequest
();
builder
=
new
SingleRequestBuilder
();
builder
.
overrideHeight
=
builder
.
overrideHeight
*
2
;
SingleRequest
<
List
>
heightRequest
=
builder
.
build
();
assertTrue
(
heightRequest
.
isEquivalentTo
(
heightRequest
));
assertFalse
(
heightRequest
.
isEquivalentTo
(
originalRequest1
));
assertFalse
(
originalRequest1
.
isEquivalentTo
(
heightRequest
));
harness
=
new
RequestHarness
();
harness
.
model
=
12345679
;
SingleRequest
<
List
>
modelRequest
=
harness
.
getRequest
();
builder
=
new
SingleRequestBuilder
();
builder
.
model
=
12345679
;
SingleRequest
<
List
>
modelRequest
=
builder
.
build
();
assertTrue
(
modelRequest
.
isEquivalentTo
(
modelRequest
));
assertFalse
(
modelRequest
.
isEquivalentTo
(
originalRequest1
));
assertFalse
(
originalRequest1
.
isEquivalentTo
(
modelRequest
));
harness
=
new
RequestHarness
();
harness
.
model
=
null
;
SingleRequest
<
List
>
nullModelRequest
=
harness
.
getRequest
();
builder
=
new
SingleRequestBuilder
();
builder
.
model
=
null
;
SingleRequest
<
List
>
nullModelRequest
=
builder
.
build
();
assertTrue
(
nullModelRequest
.
isEquivalentTo
(
nullModelRequest
));
assertFalse
(
nullModelRequest
.
isEquivalentTo
(
originalRequest1
));
assertFalse
(
originalRequest1
.
isEquivalentTo
(
nullModelRequest
));
harness
=
new
RequestHarness
();
harness
.
errorDrawable
=
new
ColorDrawable
(
Color
.
GRAY
);
SingleRequest
<
List
>
errorRequest
=
harness
.
getRequest
();
builder
=
new
SingleRequestBuilder
();
builder
.
errorDrawable
=
new
ColorDrawable
(
Color
.
GRAY
);
SingleRequest
<
List
>
errorRequest
=
builder
.
build
();
assertTrue
(
errorRequest
.
isEquivalentTo
(
errorRequest
));
assertFalse
(
errorRequest
.
isEquivalentTo
(
originalRequest1
));
assertFalse
(
originalRequest1
.
isEquivalentTo
(
errorRequest
));
harness
=
new
RequestHarness
();
harness
.
priority
=
Priority
.
LOW
;
SingleRequest
<
List
>
priorityRequest
=
harness
.
getRequest
();
builder
=
new
SingleRequestBuilder
();
builder
.
priority
=
Priority
.
LOW
;
SingleRequest
<
List
>
priorityRequest
=
builder
.
build
();
assertTrue
(
priorityRequest
.
isEquivalentTo
(
priorityRequest
));
assertFalse
(
priorityRequest
.
isEquivalentTo
(
originalRequest1
));
assertFalse
(
originalRequest1
.
isEquivalentTo
(
priorityRequest
));
}
static
class
SingleRequestBuilder
{
private
Engine
engine
=
mock
(
Engine
.
class
);
private
Number
model
=
123456
;
@SuppressWarnings
(
"unchecked"
)
private
Target
<
List
>
target
=
mock
(
Target
.
class
);
private
Resource
<
List
>
resource
=
mockResource
();
private
RequestCoordinator
requestCoordinator
=
mock
(
RequestCoordinator
.
class
);
private
Drawable
placeholderDrawable
=
null
;
private
Drawable
errorDrawable
=
null
;
private
Drawable
fallbackDrawable
=
null
;
@SuppressWarnings
(
"unchecked"
)
private
RequestListener
<
List
>
requestListener
=
mock
(
RequestListener
.
class
);
@SuppressWarnings
(
"unchecked"
)
private
TransitionFactory
<
List
>
transitionFactory
=
mock
(
TransitionFactory
.
class
);
private
int
overrideWidth
=
-
1
;
private
int
overrideHeight
=
-
1
;
private
List
<?>
result
=
new
ArrayList
<>();
private
GlideContext
glideContext
=
mock
(
GlideContext
.
class
);
private
Key
signature
=
mock
(
Key
.
class
);
private
Priority
priority
=
Priority
.
HIGH
;
private
boolean
useUnlimitedSourceGeneratorsPool
=
false
;
private
Class
<
List
>
transcodeClass
=
List
.
class
;
private
Map
<
Class
<?>,
Transformation
<?>>
transformations
=
new
HashMap
<>();
SingleRequestBuilder
()
{
when
(
requestCoordinator
.
canSetImage
(
any
(
Request
.
class
))).
thenReturn
(
true
);
when
(
requestCoordinator
.
canNotifyStatusChanged
(
any
(
Request
.
class
))).
thenReturn
(
true
);
when
(
resource
.
get
()).
thenReturn
(
result
);
}
SingleRequestBuilder
setEngine
(
Engine
engine
)
{
this
.
engine
=
engine
;
return
this
;
}
SingleRequestBuilder
setModel
(
Number
model
)
{
this
.
model
=
model
;
return
this
;
}
SingleRequestBuilder
setTarget
(
Target
<
List
>
target
)
{
this
.
target
=
target
;
return
this
;
}
SingleRequestBuilder
setResource
(
Resource
<
List
>
resource
)
{
this
.
resource
=
resource
;
return
this
;
}
SingleRequestBuilder
setRequestCoordinator
(
RequestCoordinator
requestCoordinator
)
{
this
.
requestCoordinator
=
requestCoordinator
;
return
this
;
}
SingleRequestBuilder
setPlaceholderDrawable
(
Drawable
placeholderDrawable
)
{
this
.
placeholderDrawable
=
placeholderDrawable
;
return
this
;
}
SingleRequestBuilder
setErrorDrawable
(
Drawable
errorDrawable
)
{
this
.
errorDrawable
=
errorDrawable
;
return
this
;
}
SingleRequestBuilder
setFallbackDrawable
(
Drawable
fallbackDrawable
)
{
this
.
fallbackDrawable
=
fallbackDrawable
;
return
this
;
}
SingleRequestBuilder
setRequestListener
(
RequestListener
<
List
>
requestListener
)
{
this
.
requestListener
=
requestListener
;
return
this
;
}
SingleRequestBuilder
setOverrideWidth
(
int
overrideWidth
)
{
this
.
overrideWidth
=
overrideWidth
;
return
this
;
}
SingleRequestBuilder
setOverrideHeight
(
int
overrideHeight
)
{
this
.
overrideHeight
=
overrideHeight
;
return
this
;
}
SingleRequestBuilder
setResult
(
List
<?>
result
)
{
this
.
result
=
result
;
return
this
;
}
SingleRequestBuilder
setPriority
(
Priority
priority
)
{
this
.
priority
=
priority
;
return
this
;
}
SingleRequestBuilder
setUseUnlimitedSourceGeneratorsPool
(
boolean
useUnlimitedSourceGeneratorsPool
)
{
this
.
useUnlimitedSourceGeneratorsPool
=
useUnlimitedSourceGeneratorsPool
;
return
this
;
}
SingleRequest
<
List
>
build
()
{
RequestOptions
requestOptions
=
new
RequestOptions
()
.
error
(
errorDrawable
)
.
placeholder
(
placeholderDrawable
)
.
fallback
(
fallbackDrawable
)
.
override
(
overrideWidth
,
overrideHeight
)
.
priority
(
priority
)
.
signature
(
signature
)
.
useUnlimitedSourceGeneratorsPool
(
useUnlimitedSourceGeneratorsPool
);
return
SingleRequest
.
obtain
(
/*context=*/
glideContext
,
/*glideContext=*/
glideContext
,
model
,
transcodeClass
,
requestOptions
,
overrideWidth
,
overrideHeight
,
priority
,
target
,
requestListener
,
requestCoordinator
,
engine
,
transitionFactory
);
}
}
// TODO do we want to move these to Util?
@SuppressWarnings
(
"unchecked"
)
private
static
<
T
>
Transition
<
T
>
mockTransition
()
{
...
...
@@ -939,15 +1032,16 @@ public class SingleRequestTest {
private
Resource
resource
;
public
CallResourceCallback
(
Resource
resource
)
{
CallResourceCallback
(
Resource
resource
)
{
this
.
resource
=
resource
;
}
@Override
public
Object
answer
(
InvocationOnMock
invocationOnMock
)
throws
Throwable
{
ResourceCallback
cb
=
(
ResourceCallback
)
invocationOnMock
.
getArguments
()[
invocationOnMock
.
getArguments
().
length
-
1
];
(
ResourceCallback
)
invocationOnMock
.
getArguments
()[
invocationOnMock
.
getArguments
().
length
-
1
];
cb
.
onResourceReady
(
resource
,
DataSource
.
REMOTE
);
return
null
;
}
...
...
@@ -958,7 +1052,7 @@ public class SingleRequestTest {
private
int
width
;
private
int
height
;
public
CallSizeReady
(
int
width
,
int
height
)
{
CallSizeReady
(
int
width
,
int
height
)
{
this
.
width
=
width
;
this
.
height
=
height
;
}
...
...
@@ -972,6 +1066,7 @@ public class SingleRequestTest {
}
private
static
class
MockTarget
implements
Target
<
List
>
{
private
Drawable
currentPlaceholder
;
@Override
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录