79 lines
5.0 KiB
Kotlin
79 lines
5.0 KiB
Kotlin
package be.kuleuven.howlongtobeat.hltb
|
|
|
|
import org.junit.Assert.assertEquals
|
|
import org.junit.Test
|
|
|
|
|
|
class HowLongToBeatResultParserTest {
|
|
@Test
|
|
fun parseWithEmptyStringReturnsEmptyList() {
|
|
val result = HowLongToBeatResultParser.parse("")
|
|
assertEquals(0, result.size)
|
|
}
|
|
|
|
@Test
|
|
fun parseWithRealResponseGrabsTitlesOfGamesAndConvertsToTodoItems() {
|
|
val html = """
|
|
<div class="global_padding shadow_box back_blue center">
|
|
<h3> We Found 10 Games for "super mario land" </h3> </div>
|
|
|
|
<ul>
|
|
<div class="clear"></div>
|
|
<li class="back_darkish" style="background-image:linear-gradient(rgb(31, 31, 31), rgba(31, 31, 31, 0.9)), url('/games/250px-Supermariolandboxart.jpg')"> <div class="search_list_image">
|
|
I/System.out: <a aria-label="Super Mario Land" title="Super Mario Land" href="game?id=9380">
|
|
<img alt="Box Art" src="/games/250px-Supermariolandboxart.jpg" />
|
|
</a>
|
|
</div> <div class="search_list_details"> <h3 class="shadow_text">
|
|
<a class="text_green" title="Super Mario Land" href="game?id=9380">Super Mario Land</a>
|
|
</h3> <div class="search_list_details_block"> <div>
|
|
<div class="search_list_tidbit text_white shadow_text">Main Story</div>
|
|
<div class="search_list_tidbit center time_100">1 Hours </div>
|
|
<div class="search_list_tidbit text_white shadow_text">Main + Extra</div>
|
|
<div class="search_list_tidbit center time_100">1½ Hours </div>
|
|
<div class="search_list_tidbit text_white shadow_text">Completionist</div>
|
|
<div class="search_list_tidbit center time_100">1½ Hours </div>
|
|
I/System.out: </div> </div> </div> </li>
|
|
<li class="back_darkish" style="background-image:linear-gradient(rgb(31, 31, 31), rgba(31, 31, 31, 0.9)), url('/games/250px-Super-Mario-3D-Land-Logo.jpg')"> <div class="search_list_image">
|
|
<a aria-label="Super Mario 3D Land" title="Super Mario 3D Land" href="game?id=9361">
|
|
<img alt="Box Art" src="/games/250px-Super-Mario-3D-Land-Logo.jpg" />
|
|
</a>
|
|
</div> <div class="search_list_details"> <h3 class="shadow_text">
|
|
<a class="text_white" title="Super Mario 3D Land" href="game?id=9361">Super Mario 3D Land</a>
|
|
</h3> <div class="search_list_details_block"> <div>
|
|
<div class="search_list_tidbit text_white shadow_text">Main Story</div>
|
|
<div class="search_list_tidbit center time_100">6½ Hours </div>
|
|
I/System.out: <div class="search_list_tidbit text_white shadow_text">Main + Extra</div>
|
|
<div class="search_list_tidbit center time_100">12½ Hours </div>
|
|
<div class="search_list_tidbit text_white shadow_text">Completionist</div>
|
|
<div class="search_list_tidbit center time_100">22½ Hours </div>
|
|
</div> </div> </div> </li> <div class="clear"></div>
|
|
<li class="back_darkish" style="background-image:linear-gradient(rgb(31, 31, 31), rgba(31, 31, 31, 0.9)), url('/games/Yisland_box.jpg')"> <div class="search_list_image">
|
|
<a aria-label="Super Mario World 2 Yoshis Island" title="Super Mario World 2 Yoshis Island" href="game?id=9388">
|
|
<img alt="Box Art" src="/games/Yisland_box.jpg" />
|
|
</a>
|
|
</div> <div class="search_list_details"> <h3 class="shadow_text">
|
|
<a class="text_white" title="Super Mario World 2 Yoshis Island" href="game?id=9388">Super Mario World 2: Yoshi's Island</a>
|
|
</h3> <div class="search_list_details_block"> <div>
|
|
<div class="search_list_tidbit text_white shadow_text">Main Story</div>
|
|
<div class="search_list_tidbit center time_100">8 Hours </div>
|
|
<div class="search_list_tidbit text_white shadow_text">Main + Extra</div>
|
|
<div class="search_list_tidbit center time_100">11 Hours </div>
|
|
<div class="search_list_tidbit text_white shadow_text">Completionist</div>
|
|
<div class="search_list_tidbit center time_90">16½ Hours </div>
|
|
</div> </div> </div> </li>
|
|
<li class="back_darkish" style="background-image:linear-gradient(rgb(31, 31, 31), rgba(31, 31, 31, 0.9)), url('/games/250px-Super_Mario_Land_2_box_art.jpg')"> <div class="search_list_image">
|
|
<a aria-label="Super Mario Land 2 6 Golden Coins" title="Super Mario Land 2 6 Golden Coins" href="game?id=9381">
|
|
<img alt="Box Art" src="/games/250px-Super_Mario_Land_2_box_art.jpg" />
|
|
</a>
|
|
""".trimIndent()
|
|
val result = HowLongToBeatResultParser.parse(html)
|
|
val smland = result[0]
|
|
val sm3dland = result[1]
|
|
|
|
assertEquals(3, result.size)
|
|
assertEquals("Super Mario Land", smland.title)
|
|
assertEquals("Super Mario 3D Land", sm3dland.title)
|
|
assertEquals(1.0, smland.howlong, 0.0)
|
|
assertEquals(6.5, sm3dland.howlong, 0.0)
|
|
}
|
|
} |