/**
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.tbruyelle.rxpermissions3;
import android.Manifest;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;
import androidx.fragment.app.FragmentActivity;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.ArgumentMatchers;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.android.controller.ActivityController;
import org.robolectric.annotation.Config;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.observers.TestObserver;
import io.reactivex.rxjava3.subjects.PublishSubject;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doCallRealMethod;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(RobolectricTestRunner.class)
@Config(sdk = Build.VERSION_CODES.M)
public class RxPermissionsTest {
private FragmentActivity mActivity;
private RxPermissions mRxPermissions;
@Before
public void setup() {
ActivityController<FragmentActivity> activityController = Robolectric.buildActivity(FragmentActivity.class);
mActivity = spy(activityController.setup().get());
mRxPermissions = spy(new RxPermissions(mActivity));
mRxPermissions.mRxPermissionsFragment = spy(mRxPermissions.mRxPermissionsFragment);
final RxPermissionsFragment rxPermissionsFragment = spy(mRxPermissions.mRxPermissionsFragment.get());
when(rxPermissionsFragment.getActivity()).thenReturn(mActivity);
when(mRxPermissions.mRxPermissionsFragment.get()).thenReturn(rxPermissionsFragment);
// Default deny all permissions
doReturn(false).when(mRxPermissions).isGranted(anyString());
// Default no revoked permissions
doReturn(false).when(mRxPermissions).isRevoked(anyString());
}
private Observable<Object> trigger() {
return Observable.just(RxPermissions.TRIGGER);
}
@Test
@TargetApi(Build.VERSION_CODES.M)
public void subscription_preM() {
TestObserver<Boolean> sub = new TestObserver<>();
String permission = Manifest.permission.READ_PHONE_STATE;
when(mRxPermissions.isGranted(permission)).thenReturn(true);
trigger().compose(mRxPermissions.ensure(permission)).subscribe(sub);
sub.assertNoErrors();
sub.assertValue(true);
}
@Test
@TargetApi(Build.VERSION_CODES.M)
public void subscription_granted() {
TestObserver<Boolean> sub = new TestObserver<>();
String permission = Manifest.permission.READ_PHONE_STATE;
when(mRxPermissions.isGranted(permission)).thenReturn(false);
int[] result = new int[]{PackageManager.PERMISSION_GRANTED};
trigger().compose(mRxPermissions.ensure(permission)).subscribe(sub);
mRxPermissions.onRequestPermissionsResult(new String[]{permission}, result);
sub.assertNoErrors();
sub.assertValue(true);
}
@Test
@TargetApi(Build.VERSION_CODES.M)
public void eachSubscription_granted() {
TestObserver<Permission> sub = new TestObserver<>();
String permission = Manifest.permission.READ_PHONE_STATE;
when(mRxPermissions.isGranted(permission)).thenReturn(false);
int[] result = new int[]{PackageManager.PERMISSION_GRANTED};
trigger().compose(mRxPermissions.ensureEach(permission)).subscribe(sub);
mRxPermissions.onRequestPermissionsResult(new String[]{permission}, result);
sub.assertNoErrors();
sub.assertValue(new Permission(permission, true));
}
@Test
@TargetApi(Build.VERSION_CODES.M)
public void eachSubscriptionCombined_granted() {
TestObserver<Permission> sub = new TestObserver<>();
String permission = Manifest.permission.READ_PHONE_STATE;
when(mRxPermissions.isGranted(permission)).thenReturn(false);
int[] result = new int[]{PackageManager.PERMISSION_GRANTED};
trigger().compose(mRxPermissions.ensureEachCombined(permission)).subscribe(sub);
mRxPermissions.onRequestPermissionsResult(new String[]{permission}, result);
sub.assertNoErrors();
sub.assertValue(new Permission(permission, true));
}
@Test
@TargetApi(Build.VERSION_CODES.M)
public void eachSubscription_preM() {
TestObserver<Permission> sub = new TestObserver<>();
String permission = Manifest.permission.READ_PHONE_STATE;
when(mRxPermissions.isGranted(permission)).thenReturn(true);
trigger().compose(mRxPermissions.ensureEach(permission)).subscribe(sub);
sub.assertNoErrors();
sub.assertValue(new Permission(permission, true));
}
@Test
@TargetApi(Build.VERSION_CODES.M)
public void eachSubscriptionCombined_preM() {
TestObserver<Permission> sub = new TestObserver<>();
String permission = Manifest.permission.READ_PHONE_STATE;
when(mRxPermissions.isGranted(permission)).thenReturn(true);
trigger().compose(mRxPermissions.ensureEachCombined(permission)).subscribe(sub);
sub.assertNoErrors();
sub.assertValue(new Permission(permission, true));
}
@Test
@TargetApi(Build.VERSION_CODES.M)
public void subscription_alreadyGranted() {
TestObserver<Boolean> sub = new TestObserver<>();
String permission = Manifest.permission.READ_PHONE_STATE;
when(mRxPermissions.isGranted(permission)).thenReturn(true);
trigger().compose(mRxPermissions.ensure(permission)).subscribe(sub);
sub.assertNoErrors();
sub.assertValue(true);
}
@Test
@TargetApi(Build.VERSION_CODES.M)
public void subscription_denied() {
TestObserver<Boolean> sub = new TestObserver<>();
String permission = Manifest.permission.READ_PHONE_STATE;
when(mRxPermissions.isGranted(permission)).thenReturn(false);
int[] result = new int[]{PackageManager.PERMISSION_DENIED};
trigger().compose(mRxPermissions.ensure(permission)).subscribe(sub);
mRxPermissions.onRequestPermissionsResult(new String[]{permission}, result);
sub.assertNoErrors();
sub.assertValue(false);
}
@Test
@TargetApi(Build.VERSION_CODES.M)
public void eachSubscription_denied() {
TestObserver<Permission> sub = new TestObserver<>();
String permission = Manifest.permission.READ_PHONE_STATE;
when(mRxPermissions.isGranted(permission)).thenReturn(false);
int[] result = new int[]{PackageManager.PERMISSION_DENIED};
trigger().compose(mRxPermissions.ensureEach(permission)).subscribe(sub);
mRxPermissions.onRequestPermissionsResult(new String[]{permission}, result);
sub.assertNoErrors();
sub.assertValue(new Permission(permission, false));
}
@Test
@TargetApi(Build.VERSION_CODES.M)
public void eachSubscriptionCombined_denied() {
TestObserver<Permission> sub = new TestObserver<>();
String permission = Manif
没有合适的资源?快使用搜索试试~ 我知道了~
Android开发 RxPermissions使用以及自定义相机拍照demo
共197个文件
xml:140个
png:10个
bin:8个
需积分: 15 1 下载量 176 浏览量
2022-09-14
15:51:15
上传
评论
收藏 544KB RAR 举报
温馨提示
Android开发 RxPermissions使用以及自定义相机拍照demo
资源详情
资源评论
资源推荐
收起资源包目录
Android开发 RxPermissions使用以及自定义相机拍照demo (197个子文件)
gradlew.bat 2KB
classAnalysis.bin 1.38MB
executionHistory.bin 1.09MB
jarAnalysis.bin 235KB
outputFiles.bin 93KB
fileHashes.bin 70KB
taskHistory.bin 47KB
resourceHashesCache.bin 19KB
last-build.bin 1B
.gitignore 240B
.gitignore 50B
.gitignore 6B
build.gradle 1KB
build.gradle 1KB
bintray.gradle 1KB
install.gradle 972B
build.gradle 553B
jitpack.gradle 82B
settings.gradle 74B
gradlew 5KB
My_Application.rxpmslib.iml 14KB
My_Application.app.iml 11KB
My_Application.iml 1KB
gradle-wrapper.jar 53KB
RxPermissionsTest.java 26KB
RxPermissions.java 13KB
MainActivity.java 10KB
RxPermissionsFragment.java 4KB
Permission.java 4KB
ExampleInstrumentedTest.java 789B
ExampleUnitTest.java 402B
buildOutputCleanup.lock 17B
checksums.lock 17B
fileHashes.lock 17B
fileContent.lock 17B
executionHistory.lock 17B
javaCompile.lock 17B
.name 14B
ic_launcher_round.png 16KB
ic_launcher_round.png 12KB
ic_launcher.png 10KB
ic_launcher.png 8KB
ic_launcher_round.png 7KB
ic_launcher_round.png 5KB
ic_launcher.png 5KB
ic_launcher.png 4KB
ic_launcher_round.png 3KB
ic_launcher.png 3KB
proguard-rules.pro 770B
proguard-rules.pro 641B
gradle.properties 1KB
local.properties 419B
gradle-wrapper.properties 236B
cache.properties 51B
gc.properties 0B
gc.properties 0B
build_file_checksums.ser 545B
workspace.xml 7KB
ic_launcher_background.xml 6KB
ic_launcher_foreground.xml 2KB
Gradle__androidx_test_espresso_espresso_idling_resource_3_2_0_aar.xml 1KB
jarRepositories.xml 1KB
Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml 1KB
Gradle__com_jakewharton_rxbinding4_rxbinding_4_0_0_aar.xml 1KB
Gradle__androidx_test_espresso_espresso_core_3_2_0_aar.xml 1KB
Gradle__com_google_android_apps_common_testing_accessibility_framework_accessibility_test_framework_2_1.xml 1KB
Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml 1KB
Gradle__io_reactivex_rxjava3_rxandroid_3_0_0_aar.xml 1KB
AndroidManifest.xml 1KB
Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml 1023B
Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml 1023B
Gradle__com_google_android_material_material_1_1_0_aar.xml 1007B
Gradle__androidx_transition_transition_1_2_0_aar.xml 1005B
Gradle__androidx_test_ext_junit_1_1_1_aar.xml 999B
Gradle__androidx_appcompat_appcompat_1_1_0_aar.xml 996B
Gradle__androidx_fragment_fragment_1_1_0_aar.xml 987B
Gradle__androidx_fragment_fragment_1_2_5_aar.xml 987B
Gradle__androidx_test_core_1_2_0_aar.xml 979B
Gradle__androidx_test_monitor_1_2_0_aar.xml 976B
Gradle__androidx_test_runner_1_2_0_aar.xml 968B
Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_2_0_aar.xml 965B
Gradle__org_codehaus_plexus_plexus_container_default_1_0_alpha_9_stable_1.xml 964B
Gradle__androidx_core_core_1_1_0_aar.xml 951B
Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml 906B
Gradle__org_robolectric_plugins_maven_dependency_resolver_4_3_1.xml 906B
Gradle__androidx_appcompat_appcompat_resources_1_1_0_aar.xml 899B
Gradle__androidx_lifecycle_lifecycle_livedata_core_2_2_0_aar.xml 896B
Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml 896B
Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml 892B
Gradle__org_apache_maven_wagon_wagon_http_lightweight_1_0_beta_6.xml 891B
Gradle__androidx_lifecycle_lifecycle_viewmodel_2_2_0_aar.xml 872B
Gradle__androidx_lifecycle_lifecycle_viewmodel_2_1_0_aar.xml 872B
Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml 866B
Gradle__backport_util_concurrent_backport_util_concurrent_3_1.xml 865B
Gradle__org_apache_maven_wagon_wagon_provider_api_1_0_beta_6.xml 864B
Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_3_72.xml 863B
Gradle__com_google_errorprone_error_prone_annotations_2_2_0.xml 860B
Gradle__androidx_lifecycle_lifecycle_runtime_2_2_0_aar.xml 860B
Gradle__androidx_lifecycle_lifecycle_runtime_2_1_0_aar.xml 860B
Gradle__org_codehaus_mojo_animal_sniffer_annotations_1_17.xml 858B
共 197 条
- 1
- 2
meixi_android
- 粉丝: 290
- 资源: 105
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0