2018-01-11 10:31:25 +01:00
|
|
|
package jp.juggler.subwaytooter.api.entity
|
|
|
|
|
2019-02-15 02:51:22 +01:00
|
|
|
import androidx.test.runner.AndroidJUnit4
|
2018-01-11 10:31:25 +01:00
|
|
|
import android.test.mock.MockContext
|
|
|
|
import jp.juggler.subwaytooter.api.TootParser
|
|
|
|
import jp.juggler.subwaytooter.table.SavedAccount
|
2020-01-07 09:03:32 +01:00
|
|
|
import jp.juggler.util.JsonArray
|
|
|
|
import jp.juggler.util.JsonObject
|
2018-12-01 00:02:18 +01:00
|
|
|
import jp.juggler.util.notEmptyOrThrow
|
2020-01-08 03:57:10 +01:00
|
|
|
import jp.juggler.util.decodeJsonObject
|
2018-01-11 10:31:25 +01:00
|
|
|
import org.junit.Assert.*
|
|
|
|
import org.junit.runner.RunWith
|
|
|
|
|
|
|
|
import org.junit.Test
|
|
|
|
|
|
|
|
@RunWith(AndroidJUnit4::class)
|
|
|
|
class TestEntityUtils {
|
|
|
|
|
|
|
|
class TestEntity(val s : String, val l : Long) : Mappable<String> {
|
2020-01-07 09:03:32 +01:00
|
|
|
constructor(src : JsonObject) : this(
|
2020-09-19 00:23:01 +02:00
|
|
|
s = src.stringOrThrow("s"),
|
2020-01-08 04:23:45 +01:00
|
|
|
l = src.long("l") ?: 0L
|
2018-01-11 10:31:25 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
@Suppress("UNUSED_PARAMETER")
|
2020-01-07 09:03:32 +01:00
|
|
|
constructor(parser : TootParser, src : JsonObject) : this(
|
2020-09-19 00:23:01 +02:00
|
|
|
s = src.stringOrThrow("s"),
|
2020-01-08 04:23:45 +01:00
|
|
|
l = src.long("l") ?: 0L
|
2018-01-11 10:31:25 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
override val mapKey : String
|
|
|
|
get() = s
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testParseItem() {
|
|
|
|
assertEquals(null, parseItem(::TestEntity, null))
|
|
|
|
|
|
|
|
run {
|
2020-01-08 03:57:10 +01:00
|
|
|
val src = """{"s":null,"l":"100"}""".decodeJsonObject()
|
2018-01-11 10:31:25 +01:00
|
|
|
val item = parseItem(::TestEntity, src)
|
|
|
|
assertNull(item)
|
|
|
|
}
|
|
|
|
run {
|
2020-01-08 03:57:10 +01:00
|
|
|
val src = """{"s":"","l":"100"}""".decodeJsonObject()
|
2018-01-11 10:31:25 +01:00
|
|
|
val item = parseItem(::TestEntity, src)
|
|
|
|
assertNull(item)
|
|
|
|
}
|
|
|
|
run {
|
2020-01-08 03:57:10 +01:00
|
|
|
val src = """{"s":"A","l":null}""".decodeJsonObject()
|
2018-01-11 10:31:25 +01:00
|
|
|
val item = parseItem(::TestEntity, src)
|
|
|
|
assertNotNull(item)
|
|
|
|
assertEquals(src.optString("s"), item?.s)
|
|
|
|
assertEquals(src.optLong("l"), item?.l)
|
|
|
|
}
|
|
|
|
run {
|
2020-01-08 03:57:10 +01:00
|
|
|
val src = """{"s":"A","l":""}""".decodeJsonObject()
|
2018-01-11 10:31:25 +01:00
|
|
|
val item = parseItem(::TestEntity, src)
|
|
|
|
assertNotNull(item)
|
|
|
|
assertEquals(src.optString("s"), item?.s)
|
|
|
|
assertEquals(src.optLong("l"), item?.l)
|
|
|
|
}
|
|
|
|
run {
|
2020-01-08 03:57:10 +01:00
|
|
|
val src = """{"s":"A","l":100}""".decodeJsonObject()
|
2018-01-11 10:31:25 +01:00
|
|
|
val item = parseItem(::TestEntity, src)
|
|
|
|
assertNotNull(item)
|
|
|
|
assertEquals(src.optString("s"), item?.s)
|
|
|
|
assertEquals(src.optLong("l"), item?.l)
|
|
|
|
}
|
|
|
|
run {
|
2020-01-08 03:57:10 +01:00
|
|
|
val src ="""{"s":"A","l":"100"}""".decodeJsonObject()
|
2018-01-11 10:31:25 +01:00
|
|
|
val item = parseItem(::TestEntity, src)
|
|
|
|
assertNotNull(item)
|
|
|
|
assertEquals(src.optString("s"), item?.s)
|
|
|
|
assertEquals(src.optLong("l"), item?.l)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2018-01-21 13:46:36 +01:00
|
|
|
fun testParseList() {
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(0, parseList(::TestEntity, null).size)
|
|
|
|
|
2020-01-07 09:03:32 +01:00
|
|
|
val src = JsonArray()
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(0, parseList(::TestEntity, src).size)
|
|
|
|
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"A","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(1, parseList(::TestEntity, src).size)
|
|
|
|
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"A","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(2, parseList(::TestEntity, src).size)
|
|
|
|
|
|
|
|
// error
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(2, parseList(::TestEntity, src).size)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2018-01-21 13:46:36 +01:00
|
|
|
fun testParseListOrNull() {
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(null, parseListOrNull(::TestEntity, null))
|
|
|
|
|
2020-01-07 09:03:32 +01:00
|
|
|
val src = JsonArray()
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(null, parseListOrNull(::TestEntity, src))
|
|
|
|
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"A","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(1, parseListOrNull(::TestEntity, src)?.size)
|
|
|
|
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"A","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(2, parseListOrNull(::TestEntity, src)?.size)
|
|
|
|
|
|
|
|
// error
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(2, parseListOrNull(::TestEntity, src)?.size)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2018-01-21 13:46:36 +01:00
|
|
|
fun testParseMap() {
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(0, parseMap(::TestEntity, null).size)
|
|
|
|
|
2020-01-07 09:03:32 +01:00
|
|
|
val src = JsonArray()
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(0, parseMap(::TestEntity, src).size)
|
|
|
|
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"A","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(1, parseMap(::TestEntity, src).size)
|
|
|
|
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"B","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(2, parseMap(::TestEntity, src).size)
|
|
|
|
|
|
|
|
// error
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(2, parseMap(::TestEntity, src).size)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2018-01-21 13:46:36 +01:00
|
|
|
fun testParseMapOrNull() {
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(null, parseMapOrNull(::TestEntity, null))
|
|
|
|
|
2020-01-07 09:03:32 +01:00
|
|
|
val src = JsonArray()
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(null, parseMapOrNull(::TestEntity, src))
|
|
|
|
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"A","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(1, parseMapOrNull(::TestEntity, src)?.size)
|
|
|
|
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"B","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(2, parseMapOrNull(::TestEntity, src)?.size)
|
|
|
|
|
|
|
|
// error
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(2, parseMapOrNull(::TestEntity, src)?.size)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private val parser = TootParser(MockContext(), SavedAccount.na)
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testParseItemWithParser() {
|
|
|
|
|
|
|
|
assertEquals(null, parseItem(::TestEntity, parser, null))
|
|
|
|
|
|
|
|
run {
|
2020-01-08 03:57:10 +01:00
|
|
|
val src ="""{"s":null,"l":"100"}""".decodeJsonObject()
|
2018-01-11 10:31:25 +01:00
|
|
|
val item = parseItem(::TestEntity, parser, src)
|
|
|
|
assertNull(item)
|
|
|
|
}
|
|
|
|
run {
|
2020-01-08 03:57:10 +01:00
|
|
|
val src = """{"s":"","l":"100"}""".decodeJsonObject()
|
2018-01-11 10:31:25 +01:00
|
|
|
val item = parseItem(::TestEntity, parser, src)
|
|
|
|
assertNull(item)
|
|
|
|
}
|
|
|
|
run {
|
2020-01-08 03:57:10 +01:00
|
|
|
val src = """{"s":"A","l":null}""".decodeJsonObject()
|
2018-01-11 10:31:25 +01:00
|
|
|
val item = parseItem(::TestEntity, parser, src)
|
|
|
|
assertNotNull(item)
|
|
|
|
assertEquals(src.optString("s"), item?.s)
|
|
|
|
assertEquals(src.optLong("l"), item?.l)
|
|
|
|
}
|
|
|
|
run {
|
2020-01-08 03:57:10 +01:00
|
|
|
val src = """{"s":"A","l":""}""".decodeJsonObject()
|
2018-01-11 10:31:25 +01:00
|
|
|
val item = parseItem(::TestEntity, parser, src)
|
|
|
|
assertNotNull(item)
|
|
|
|
assertEquals(src.optString("s"), item?.s)
|
|
|
|
assertEquals(src.optLong("l"), item?.l)
|
|
|
|
}
|
|
|
|
run {
|
2020-01-08 03:57:10 +01:00
|
|
|
val src = """{"s":"A","l":100}""".decodeJsonObject()
|
2018-01-11 10:31:25 +01:00
|
|
|
val item = parseItem(::TestEntity, parser, src)
|
|
|
|
assertNotNull(item)
|
|
|
|
assertEquals(src.optString("s"), item?.s)
|
|
|
|
assertEquals(src.optLong("l"), item?.l)
|
|
|
|
}
|
|
|
|
run {
|
2020-01-08 03:57:10 +01:00
|
|
|
val src = """{"s":"A","l":"100"}""".decodeJsonObject()
|
2018-01-11 10:31:25 +01:00
|
|
|
val item = parseItem(::TestEntity, parser, src)
|
|
|
|
assertNotNull(item)
|
|
|
|
assertEquals(src.optString("s"), item?.s)
|
|
|
|
assertEquals(src.optLong("l"), item?.l)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2018-01-21 13:46:36 +01:00
|
|
|
fun testParseListWithParser() {
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(0, parseList(::TestEntity, parser, null).size)
|
|
|
|
|
2020-01-07 09:03:32 +01:00
|
|
|
val src = JsonArray()
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(0, parseList(::TestEntity, parser, src).size)
|
|
|
|
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"A","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(1, parseList(::TestEntity, parser, src).size)
|
|
|
|
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"A","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(2, parseList(::TestEntity, parser, src).size)
|
|
|
|
|
|
|
|
// error
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(2, parseList(::TestEntity, parser, src).size)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2018-01-21 13:46:36 +01:00
|
|
|
fun testParseListOrNullWithParser() {
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(null, parseListOrNull(::TestEntity, parser, null))
|
|
|
|
|
2020-01-07 09:03:32 +01:00
|
|
|
val src = JsonArray()
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(null, parseListOrNull(::TestEntity, parser, src))
|
|
|
|
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"A","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(1, parseListOrNull(::TestEntity, parser, src)?.size)
|
|
|
|
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"A","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(2, parseListOrNull(::TestEntity, parser, src)?.size)
|
|
|
|
|
|
|
|
// error
|
2020-01-08 03:57:10 +01:00
|
|
|
src.add("""{"s":"","l":"100"}""".decodeJsonObject())
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals(2, parseListOrNull(::TestEntity, parser, src)?.size)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test(expected = RuntimeException::class)
|
2018-01-21 13:46:36 +01:00
|
|
|
fun testNotEmptyOrThrow1() {
|
2018-01-11 10:31:25 +01:00
|
|
|
println(notEmptyOrThrow("param1", null))
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test(expected = RuntimeException::class)
|
2018-01-21 13:46:36 +01:00
|
|
|
fun testNotEmptyOrThrow2() {
|
2018-01-11 10:31:25 +01:00
|
|
|
println(notEmptyOrThrow("param1", ""))
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2018-01-21 13:46:36 +01:00
|
|
|
fun testNotEmptyOrThrow3() {
|
2018-01-11 10:31:25 +01:00
|
|
|
assertEquals("A", notEmptyOrThrow("param1", "A"))
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test(expected = RuntimeException::class)
|
2018-01-21 13:46:36 +01:00
|
|
|
fun testNotEmptyOrThrow4() {
|
2020-09-19 00:23:01 +02:00
|
|
|
println("""{"param1":null}""".decodeJsonObject().stringOrThrow("param1"))
|
2018-01-11 10:31:25 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test(expected = RuntimeException::class)
|
2018-01-21 13:46:36 +01:00
|
|
|
fun testNotEmptyOrThrow5() {
|
2020-09-19 00:23:01 +02:00
|
|
|
println("""{"param1":""}""".decodeJsonObject().stringOrThrow("param1"))
|
2018-01-11 10:31:25 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2018-01-21 13:46:36 +01:00
|
|
|
fun testNotEmptyOrThrow6() {
|
2020-09-19 00:23:01 +02:00
|
|
|
assertEquals("A", """{"param1":"A"}""".decodeJsonObject().stringOrThrow("param1"))
|
2018-01-11 10:31:25 +01:00
|
|
|
}
|
|
|
|
}
|