diff --git a/src/test/kotlin/net/thauvin/erik/readingtime/ReadingTimeTest.kt b/src/test/kotlin/net/thauvin/erik/readingtime/ReadingTimeTest.kt
index 640d1d5..1a7eed9 100644
--- a/src/test/kotlin/net/thauvin/erik/readingtime/ReadingTimeTest.kt
+++ b/src/test/kotlin/net/thauvin/erik/readingtime/ReadingTimeTest.kt
@@ -32,8 +32,6 @@
package net.thauvin.erik.readingtime
-import net.thauvin.erik.readingtime.ReadingTime.Companion.imgCount
-import net.thauvin.erik.readingtime.ReadingTime.Companion.wordCount
import java.io.File
import kotlin.test.Test
import kotlin.test.assertEquals
@@ -43,43 +41,62 @@ class ReadingTimeTest {
private val blogPost = File("src/test/resources/post.html").readText()
private val mediumPost = File("src/test/resources/medium.html").readText()
+ private fun calcImgTime(imgCount: Int): Double {
+ var time = 0.0
+ var offset = 12
+
+ for (i in 1..imgCount) {
+ time += offset
+ if (offset != 3) {
+ offset--
+ }
+ }
+ return time
+ }
+
+ private fun calcReadingTime(text: String, wpm: Int): Double {
+ return ReadingTime.wordCount(text) / (wpm / 60.0)
+ }
+
@Test
fun testWordCount() {
- assertEquals(0, wordCount(" "))
- assertEquals(3, wordCount("one two three"))
- assertEquals(2, wordCount(" one two "))
- assertEquals(7, wordCount(rt.text))
- assertEquals(505, wordCount(blogPost))
- assertEquals(391, wordCount(mediumPost))
+ assertEquals(0, ReadingTime.wordCount(" "))
+ assertEquals(3, ReadingTime.wordCount("one two three"))
+ assertEquals(2, ReadingTime.wordCount(" one two "))
+ assertEquals(7, ReadingTime.wordCount(rt.text))
+ assertEquals(505, ReadingTime.wordCount(blogPost))
+ assertEquals(391, ReadingTime.wordCount(mediumPost))
}
@Test
fun testImgCount() {
- assertEquals(1, imgCount(rt.text))
- assertEquals(11, imgCount(blogPost))
- assertEquals(3, imgCount(mediumPost))
+ assertEquals(1, ReadingTime.imgCount(rt.text))
+ assertEquals(11, ReadingTime.imgCount(blogPost))
+ assertEquals(3, ReadingTime.imgCount(mediumPost))
}
@Test
fun testReadingTimeInSec() {
- assertEquals((wordCount(rt.text) / (rt.wpm / 60.0)) + 12.0, rt.calcReadingTimeInSec())
+ assertEquals(calcReadingTime(rt.text, rt.wpm) + calcImgTime(1), rt.calcReadingTimeInSec())
rt.text = "
"
- assertEquals(12.0 + 11.0, rt.calcReadingTimeInSec())
+ assertEquals(calcImgTime(2), rt.calcReadingTimeInSec())
+ rt.excludeImages = true
+ assertEquals(0.0, rt.calcReadingTimeInSec())
+ rt.excludeImages = false
rt.text = blogPost
assertEquals(
- (wordCount(rt.text) / (rt.wpm / 60.0)) + 12.0 + 11.0 + 10.0 + 9.0 + 8.0 + 7.0 + 6.0 + 5.0 + 4.0 + 3.0 + 3.0,
- rt.calcReadingTimeInSec()
+ calcReadingTime(rt.text, rt.wpm) + calcImgTime(11), rt.calcReadingTimeInSec()
)
rt.excludeImages = true
- assertEquals((wordCount(rt.text) / (rt.wpm / 60.0)), rt.calcReadingTimeInSec())
+ assertEquals(calcReadingTime(rt.text, rt.wpm), rt.calcReadingTimeInSec())
rt.excludeImages = false
rt.text = mediumPost
rt.wpm = 300
- assertEquals(wordCount(rt.text) / (300.0 / 60.0) + 12.0 + 11.0 + 10.0, rt.calcReadingTimeInSec())
+ assertEquals(calcReadingTime(rt.text, 300) + calcImgTime(3), rt.calcReadingTimeInSec())
rt.wpm = 275
}
@@ -101,6 +118,6 @@ class ReadingTimeTest {
rt.text = ""
assertEquals("0", rt.calcReadingTime())
- assertEquals( 0.0, rt.calcReadingTimeInSec())
+ assertEquals(0.0, rt.calcReadingTimeInSec())
}
}