Skip to content

Commit 91cf049

Browse files
authored
Merge pull request #75 from AppDevNext/SmokeTestAnyExample
Smoke test any example
2 parents 0800727 + e653fc6 commit 91cf049

File tree

10 files changed

+312
-417
lines changed

10 files changed

+312
-417
lines changed

MPChartExample/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,6 @@ dependencies {
3232
androidTestImplementation "androidx.test.ext:junit-ktx:1.1.4"
3333
androidTestUtil "androidx.test.services:test-services:1.4.2"
3434
androidTestImplementation "androidx.test.espresso:espresso-core:3.5.0"
35+
androidTestImplementation 'androidx.test.espresso:espresso-intents:3.5.0'
3536
}
3637

MPChartExample/src/androidTest/java/com/xxmassdeveloper/mpchartexample/StartTest.kt

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,25 @@ package com.xxmassdeveloper.mpchartexample
22

33
import androidx.test.core.graphics.writeToTestStorage
44
import androidx.test.espresso.Espresso
5+
import androidx.test.espresso.Espresso.onData
6+
import androidx.test.espresso.action.ViewActions.click
57
import androidx.test.espresso.matcher.ViewMatchers
8+
import androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed
9+
import androidx.test.espresso.matcher.ViewMatchers.withId
610
import androidx.test.espresso.screenshot.captureToBitmap
711
import androidx.test.ext.junit.rules.activityScenarioRule
812
import androidx.test.ext.junit.runners.AndroidJUnit4
913
import com.xxmassdeveloper.mpchartexample.notimportant.MainActivity
14+
import org.hamcrest.CoreMatchers.allOf
15+
import org.hamcrest.CoreMatchers.anything
16+
import org.junit.After
17+
import org.junit.Before
1018
import org.junit.Rule
1119
import org.junit.Test
1220
import org.junit.rules.TestName
1321
import org.junit.runner.RunWith
22+
import androidx.test.espresso.intent.Intents
23+
import androidx.test.espresso.intent.matcher.IntentMatchers.hasComponent
1424

1525
@RunWith(AndroidJUnit4::class)
1626
class StartTest {
@@ -21,10 +31,36 @@ class StartTest {
2131
@get:Rule
2232
var nameRule = TestName()
2333

34+
@Before
35+
fun setUp() {
36+
Intents.init()
37+
}
38+
39+
@After
40+
fun cleanUp() {
41+
Intents.release()
42+
}
43+
2444
@Test
2545
fun smokeTestSimplyStart() {
2646
Espresso.onView(ViewMatchers.isRoot())
2747
.captureToBitmap()
2848
.writeToTestStorage("${javaClass.simpleName}_${nameRule.methodName}")
49+
50+
MainActivity.menuItems.forEachIndexed { index, contentItem ->
51+
contentItem.clazz?.let {
52+
println("Intended ${index}-${it.simpleName}")
53+
54+
onData(anything())
55+
.inAdapterView(allOf(withId(R.id.listView1), isCompletelyDisplayed()))
56+
.atPosition(index).perform(click())
57+
58+
Espresso.onView(ViewMatchers.isRoot())
59+
.captureToBitmap()
60+
.writeToTestStorage("${javaClass.simpleName}_${nameRule.methodName}-${index}-${it.simpleName}")
61+
Intents.intended(hasComponent(it.name))
62+
Espresso.pressBack()
63+
}
64+
}
2965
}
3066
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.xxmassdeveloper.mpchartexample
2+
3+
import androidx.test.core.graphics.writeToTestStorage
4+
import androidx.test.espresso.Espresso.onView
5+
import androidx.test.espresso.action.ViewActions.swipeLeft
6+
import androidx.test.espresso.matcher.ViewMatchers
7+
import androidx.test.espresso.matcher.ViewMatchers.withId
8+
import androidx.test.espresso.screenshot.captureToBitmap
9+
import androidx.test.ext.junit.rules.activityScenarioRule
10+
import androidx.test.ext.junit.runners.AndroidJUnit4
11+
import com.xxmassdeveloper.mpchartexample.fragments.SimpleChartDemo
12+
import org.junit.Rule
13+
import org.junit.Test
14+
import org.junit.rules.TestName
15+
import org.junit.runner.RunWith
16+
17+
@RunWith(AndroidJUnit4::class)
18+
class ViewPagerTest {
19+
20+
@get:Rule
21+
val activityScenarioRule = activityScenarioRule<SimpleChartDemo>()
22+
23+
@get:Rule
24+
var nameRule = TestName()
25+
26+
@Test
27+
fun smokeTestSimplyStart() {
28+
onView(ViewMatchers.isRoot())
29+
.captureToBitmap()
30+
.writeToTestStorage("${javaClass.simpleName}_${nameRule.methodName}")
31+
32+
repeat(4) {
33+
onView(withId(R.id.pager)).perform(swipeLeft());
34+
onView(ViewMatchers.isRoot())
35+
.captureToBitmap()
36+
.writeToTestStorage("${javaClass.simpleName}_${nameRule.methodName}-${it}")
37+
}
38+
}
39+
}

MPChartExample/src/main/java/com/xxmassdeveloper/mpchartexample/fragments/SimpleChartDemo.java

Lines changed: 0 additions & 117 deletions
This file was deleted.
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package com.xxmassdeveloper.mpchartexample.fragments
2+
3+
import android.content.Intent
4+
import android.net.Uri
5+
import android.os.Bundle
6+
import android.view.*
7+
import android.widget.FrameLayout
8+
import android.widget.Toast
9+
import androidx.coordinatorlayout.widget.CoordinatorLayout
10+
import androidx.fragment.app.Fragment
11+
import androidx.fragment.app.FragmentManager
12+
import androidx.fragment.app.FragmentPagerAdapter
13+
import androidx.viewpager.widget.ViewPager
14+
import com.google.android.material.snackbar.Snackbar
15+
import com.xxmassdeveloper.mpchartexample.R
16+
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase
17+
18+
/**
19+
* Demonstrates how to keep your charts straight forward, simple and beautiful with the MPAndroidChart library.
20+
*/
21+
class SimpleChartDemo : DemoBase() {
22+
override fun onCreate(savedInstanceState: Bundle?) {
23+
super.onCreate(savedInstanceState)
24+
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
25+
setContentView(R.layout.activity_awesomedesign)
26+
val pager = findViewById<ViewPager>(R.id.pager)
27+
pager.offscreenPageLimit = 3
28+
pager.adapter = PageAdapter(supportFragmentManager)
29+
30+
showSnackbar("Swipe left and right for more awesome design examples!")
31+
}
32+
33+
private inner class PageAdapter(fm: FragmentManager?) : FragmentPagerAdapter(fm!!) {
34+
override fun getItem(pos: Int): Fragment {
35+
var f: Fragment? = null
36+
when (pos) {
37+
0 -> f = SineCosineFragment.newInstance()
38+
1 -> f = ComplexityFragment.newInstance()
39+
2 -> f = BarChartFrag.newInstance()
40+
3 -> f = ScatterChartFrag.newInstance()
41+
4 -> f = PieChartFrag.newInstance()
42+
}
43+
return f!!
44+
}
45+
46+
override fun getCount(): Int {
47+
return 5
48+
}
49+
}
50+
51+
override fun onCreateOptionsMenu(menu: Menu): Boolean {
52+
menuInflater.inflate(R.menu.only_github, menu)
53+
return true
54+
}
55+
56+
override fun onOptionsItemSelected(item: MenuItem): Boolean {
57+
when (item.itemId) {
58+
R.id.viewGithub -> {
59+
val i = Intent(Intent.ACTION_VIEW)
60+
i.data = Uri.parse("https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartExample/src/com/xxmassdeveloper/mpchartexample/fragments/SimpleChartDemo.java")
61+
startActivity(i)
62+
}
63+
}
64+
return true
65+
}
66+
67+
/* Intentionally left empty */
68+
public override fun saveToGallery() = Unit
69+
70+
private fun showSnackbar(text: String) {
71+
val viewPos : View = findViewById(android.R.id.content)
72+
val snackbar = Snackbar.make(viewPos, text, Snackbar.LENGTH_LONG)
73+
val view = snackbar.view
74+
when (val params = view.layoutParams) {
75+
is CoordinatorLayout.LayoutParams -> {
76+
val paramsC = view.layoutParams as CoordinatorLayout.LayoutParams
77+
paramsC.gravity = Gravity.CENTER_VERTICAL
78+
view.layoutParams = paramsC
79+
snackbar.show()
80+
}
81+
is FrameLayout.LayoutParams -> {
82+
val paramsC = view.layoutParams as FrameLayout.LayoutParams
83+
paramsC.gravity = Gravity.BOTTOM
84+
view.layoutParams = paramsC
85+
snackbar.show()
86+
}
87+
else -> {
88+
Toast.makeText(this, text + " " + params.javaClass.simpleName, Toast.LENGTH_SHORT).show()
89+
}
90+
}
91+
}
92+
}

MPChartExample/src/main/java/com/xxmassdeveloper/mpchartexample/notimportant/ContentItem.java

Lines changed: 0 additions & 22 deletions
This file was deleted.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.xxmassdeveloper.mpchartexample.notimportant
2+
3+
class ContentItem<T : DemoBase> {
4+
@JvmField
5+
val name: String
6+
@JvmField
7+
val desc: String
8+
@JvmField
9+
var isSection = false
10+
@JvmField
11+
var clazz: Class<T>? = null
12+
13+
constructor(n: String) {
14+
name = n
15+
desc = ""
16+
isSection = true
17+
}
18+
19+
constructor(n: String, d: String, clazzName: Class<T>) {
20+
name = n
21+
desc = d
22+
clazz = clazzName
23+
}
24+
}

0 commit comments

Comments
 (0)