diff options
author | Yuichi Araki <yaraki@google.com> | 2014-08-13 15:45:34 +0900 |
---|---|---|
committer | Yuichi Araki <yaraki@google.com> | 2014-09-02 13:09:51 +0900 |
commit | f7813b0d2cb811c8212a8aec81f9bda09468b3cc (patch) | |
tree | 6408cb31972c5acf0944117df05c8f484c6e626b | |
parent | 7dd9a51f6d2873240cc9d4afd3905da9bb06c24f (diff) | |
download | android-f7813b0d2cb811c8212a8aec81f9bda09468b3cc.tar.gz |
PdfRendererBasic: Add tests.
Change-Id: Ie0482b62017c24b343a390908dc45b29a759ae86
5 files changed, 188 insertions, 3 deletions
diff --git a/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/src/main/AndroidManifest.xml b/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/src/main/AndroidManifest.xml index 59d187dd..22870679 100644 --- a/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/src/main/AndroidManifest.xml +++ b/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/src/main/AndroidManifest.xml @@ -20,8 +20,6 @@ android:versionCode="1" android:versionName="1.0"> - <uses-sdk android:minSdkVersion="L" android:targetSdkVersion="L" /> - <application android:allowBackup="true" android:label="@string/app_name" android:icon="@drawable/ic_launcher" diff --git a/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/src/main/java/com/example/android/pdfrendererbasic/MainActivity.java b/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/src/main/java/com/example/android/pdfrendererbasic/MainActivity.java index 54cb54dc..6b7e8b45 100644 --- a/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/src/main/java/com/example/android/pdfrendererbasic/MainActivity.java +++ b/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/src/main/java/com/example/android/pdfrendererbasic/MainActivity.java @@ -24,13 +24,16 @@ import android.view.MenuItem; public class MainActivity extends Activity { + public static final String FRAGMENT_PDF_RENDERER_BASIC = "pdf_renderer_basic"; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_real); if (savedInstanceState == null) { getFragmentManager().beginTransaction() - .add(R.id.container, new PdfRendererBasicFragment()) + .add(R.id.container, new PdfRendererBasicFragment(), + FRAGMENT_PDF_RENDERER_BASIC) .commit(); } } diff --git a/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/src/main/java/com/example/android/pdfrendererbasic/PdfRendererBasicFragment.java b/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/src/main/java/com/example/android/pdfrendererbasic/PdfRendererBasicFragment.java index 2d8cf609..e413c659 100644 --- a/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/src/main/java/com/example/android/pdfrendererbasic/PdfRendererBasicFragment.java +++ b/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/src/main/java/com/example/android/pdfrendererbasic/PdfRendererBasicFragment.java @@ -193,6 +193,15 @@ public class PdfRendererBasicFragment extends Fragment implements View.OnClickLi getActivity().setTitle(getString(R.string.app_name_with_index, index + 1, pageCount)); } + /** + * Gets the number of pages in the PDF. This method is marked as public for testing. + * + * @return The number of pages. + */ + public int getPageCount() { + return mPdfRenderer.getPageCount(); + } + @Override public void onClick(View view) { switch (view.getId()) { diff --git a/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/tests/AndroidManifest.xml b/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/tests/AndroidManifest.xml new file mode 100644 index 00000000..35ff2a6b --- /dev/null +++ b/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/tests/AndroidManifest.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + 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 + + http://www.apache.org/licenses/LICENSE-2.0 + + 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 name must be unique so suffix with "tests" so package loader doesn't ignore us --> +<manifest + package="com.example.android.pdfrendererbasic.tests" + xmlns:android="http://schemas.android.com/apk/res/android" + android:versionCode="1" + android:versionName="1.0"> + + <uses-sdk + android:minSdkVersion="L" + android:targetSdkVersion="L"/> + + <!-- We add an application tag here just so that we can indicate that + this package needs to link against the android.test library, + which is needed when building test cases. --> + <application> + <uses-library android:name="android.test.runner"/> + </application> + + <!-- + Specifies the instrumentation test runner used to run the tests. + --> + <instrumentation + android:name="android.test.InstrumentationTestRunner" + android:label="Tests for com.example.android.pdfrendererbasic" + android:targetPackage="com.example.android.pdfrendererbasic"/> + +</manifest> diff --git a/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/tests/src/com/example/android/pdfrendererbasic/tests/PdfRendererBasicFragmentTests.java b/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/tests/src/com/example/android/pdfrendererbasic/tests/PdfRendererBasicFragmentTests.java new file mode 100644 index 00000000..0f94cbf8 --- /dev/null +++ b/ui/graphics/PdfRendererBasic/PdfRendererBasicSample/tests/src/com/example/android/pdfrendererbasic/tests/PdfRendererBasicFragmentTests.java @@ -0,0 +1,132 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * 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 + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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.example.android.pdfrendererbasic.tests; + +import android.content.pm.ActivityInfo; +import android.test.ActivityInstrumentationTestCase2; +import android.test.TouchUtils; +import android.test.suitebuilder.annotation.LargeTest; +import android.view.View; +import android.widget.Button; + +import com.example.android.pdfrendererbasic.MainActivity; +import com.example.android.pdfrendererbasic.PdfRendererBasicFragment; +import com.example.android.pdfrendererbasic.R; + +/** + * Tests for PdfRendererBasic sample. + */ +public class PdfRendererBasicFragmentTests extends ActivityInstrumentationTestCase2<MainActivity> { + + private MainActivity mActivity; + private PdfRendererBasicFragment mFragment; + + private Button mButtonPrevious; + private Button mButtonNext; + + public PdfRendererBasicFragmentTests() { + super(MainActivity.class); + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + mActivity = getActivity(); + mFragment = (PdfRendererBasicFragment) mActivity.getFragmentManager() + .findFragmentByTag(MainActivity.FRAGMENT_PDF_RENDERER_BASIC); + } + + @LargeTest + public void testActivityTitle() { + // The title of the activity should be "PdfRendererBasic (1/10)" at first + String expectedActivityTitle = mActivity.getString(R.string.app_name_with_index, 1, + mFragment.getPageCount()); + assertEquals(expectedActivityTitle, mActivity.getTitle()); + } + + @LargeTest + public void testButtons_previousDisabledAtFirst() { + setUpButtons(); + // Check that the previous button is disabled at first + assertFalse(mButtonPrevious.isEnabled()); + // The next button should be enabled + assertTrue(mButtonNext.isEnabled()); + } + + @LargeTest + public void testButtons_bothEnabledInMiddle() { + setUpButtons(); + turnPages(1); + // Two buttons should be both enabled + assertTrue(mButtonPrevious.isEnabled()); + assertTrue(mButtonNext.isEnabled()); + } + + @LargeTest + public void testButtons_nextDisabledLastPage() { + setUpButtons(); + int pageCount = mFragment.getPageCount(); + // Click till it reaches the last page + turnPages(pageCount - 1); + // Check the page count + String expectedActivityTitle = mActivity.getString(R.string.app_name_with_index, + pageCount, pageCount); + assertEquals(expectedActivityTitle, mActivity.getTitle()); + // The previous button should be enabled + assertTrue(mButtonPrevious.isEnabled()); + // Check that the next button is disabled + assertFalse(mButtonNext.isEnabled()); + } + + @LargeTest + public void testOrientationChangePreserveState() { + mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + setUpButtons(); + turnPages(1); + int pageCount = mFragment.getPageCount(); + String expectedActivityTitle = mActivity.getString(R.string.app_name_with_index, + 2, pageCount); + assertEquals(expectedActivityTitle, mActivity.getTitle()); + mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + // Check that the title is the same after orientation change + assertEquals(expectedActivityTitle, mActivity.getTitle()); + } + + /** + * Prepares references to the buttons "Previous" and "Next". + */ + private void setUpButtons() { + View view = mFragment.getView(); + assertNotNull(view); + mButtonPrevious = (Button) view.findViewById(R.id.previous); + assertNotNull(mButtonPrevious); + mButtonNext = (Button) view.findViewById(R.id.next); + assertNotNull(mButtonNext); + } + + /** + * Click the "Next" button to turn the pages. + * + * @param count The number of times to turn pages. + */ + private void turnPages(int count) { + for (int i = 0; i < count; ++i) { + TouchUtils.clickView(this, mButtonNext); + } + } + +} |