Improved tests.

This commit is contained in:
Erik C. Thauvin 2020-09-09 00:34:41 -07:00
parent 12855c5b3e
commit c993bd1ee6

View file

@ -32,8 +32,6 @@
package net.thauvin.erik.readingtime 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 java.io.File
import kotlin.test.Test import kotlin.test.Test
import kotlin.test.assertEquals import kotlin.test.assertEquals
@ -43,43 +41,62 @@ class ReadingTimeTest {
private val blogPost = File("src/test/resources/post.html").readText() private val blogPost = File("src/test/resources/post.html").readText()
private val mediumPost = File("src/test/resources/medium.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 @Test
fun testWordCount() { fun testWordCount() {
assertEquals(0, wordCount(" ")) assertEquals(0, ReadingTime.wordCount(" "))
assertEquals(3, wordCount("one two three")) assertEquals(3, ReadingTime.wordCount("one two three"))
assertEquals(2, wordCount(" one two ")) assertEquals(2, ReadingTime.wordCount(" one two "))
assertEquals(7, wordCount(rt.text)) assertEquals(7, ReadingTime.wordCount(rt.text))
assertEquals(505, wordCount(blogPost)) assertEquals(505, ReadingTime.wordCount(blogPost))
assertEquals(391, wordCount(mediumPost)) assertEquals(391, ReadingTime.wordCount(mediumPost))
} }
@Test @Test
fun testImgCount() { fun testImgCount() {
assertEquals(1, imgCount(rt.text)) assertEquals(1, ReadingTime.imgCount(rt.text))
assertEquals(11, imgCount(blogPost)) assertEquals(11, ReadingTime.imgCount(blogPost))
assertEquals(3, imgCount(mediumPost)) assertEquals(3, ReadingTime.imgCount(mediumPost))
} }
@Test @Test
fun testReadingTimeInSec() { 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 = "<img src=\"#\"> <IMG src=\"#\">" rt.text = "<img src=\"#\"> <IMG src=\"#\">"
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 rt.text = blogPost
assertEquals( 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, calcReadingTime(rt.text, rt.wpm) + calcImgTime(11), rt.calcReadingTimeInSec()
rt.calcReadingTimeInSec()
) )
rt.excludeImages = true 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.excludeImages = false
rt.text = mediumPost rt.text = mediumPost
rt.wpm = 300 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 rt.wpm = 275
} }
@ -101,6 +118,6 @@ class ReadingTimeTest {
rt.text = "" rt.text = ""
assertEquals("0", rt.calcReadingTime()) assertEquals("0", rt.calcReadingTime())
assertEquals( 0.0, rt.calcReadingTimeInSec()) assertEquals(0.0, rt.calcReadingTimeInSec())
} }
} }