kotovalexarian
/
android
Archived
1
0
Fork 0

Use signed integers instead of unsigned

This commit is contained in:
Alex Kotov 2021-08-17 06:15:11 +05:00
parent 2a40bb7d97
commit de6cced59e
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
3 changed files with 17 additions and 16 deletions

View File

@ -11,7 +11,7 @@ class ArticleCardsListRecyclerAdapter(private val onItemClick: () -> Unit) :
{
private val articleCardsList = listOf(
ArticleCard(
ArticleId(2021u, 8u, 6u, "writing-about-it"),
ArticleId(2021, 8, 6, "writing-about-it"),
"Почему сложно писать о передовых информационных технологиях?",
"""
Однажды мы выпустили статью Децентрализованные сервисы против распределённых, где
@ -20,7 +20,7 @@ class ArticleCardsListRecyclerAdapter(private val onItemClick: () -> Unit) :
""".replace("\\s+".toRegex(), " "),
),
ArticleCard(
ArticleId(2020u, 6u, 4u, "decentralized-vs-distributed"),
ArticleId(2020, 6, 4, "decentralized-vs-distributed"),
"Децентрализованные сервисы против распределённых",
"""
Более правильная, но менее известная схема, показывающая разницу между
@ -29,7 +29,7 @@ class ArticleCardsListRecyclerAdapter(private val onItemClick: () -> Unit) :
""".replace("\\s+".toRegex(), " "),
),
ArticleCard(
ArticleId(2021u, 7u, 28u, "yggdrasil"),
ArticleId(2021, 7, 28, "yggdrasil"),
"Заметки об Yggdrasil: качество кода, безопасность, DNS",
"""
Сейчас сложно продвигать сеть Yggdrasil для массового использования. Она сложна для

View File

@ -2,11 +2,11 @@ package com.causa_arcana
import java.lang.RuntimeException
class ArticleId(val year: UInt, val month: UInt, val day: UInt, val slug: String) {
class ArticleId(val year: Int, val month: Int, val day: Int, val slug: String) {
init {
if (year !in 2000u..3000u) throw RuntimeException("Invalid article year")
if (month !in 1u..12u) throw RuntimeException("Invalid article month")
if (day !in 1u..31u) throw RuntimeException("Invalid article day")
if (year !in 2000..3000) throw RuntimeException("Invalid article year")
if (month !in 1..12) throw RuntimeException("Invalid article month")
if (day !in 1..31) throw RuntimeException("Invalid article day")
if (!SLUG_RE.matches(slug)) throw RuntimeException("Invalid article slug")
}
@ -31,9 +31,9 @@ class ArticleId(val year: UInt, val month: UInt, val day: UInt, val slug: String
fun fromString(id: String): ArticleId {
(ID_RE.matchEntire(id) ?: throw RuntimeException("Invalid article ID")).destructured
.let { (year, month, day, slugHead, slugTail) -> return ArticleId(
year.toUInt(),
month.toUInt(),
day.toUInt(),
year.toInt(),
month.toInt(),
day.toInt(),
slugHead + slugTail,
)
}

View File

@ -5,16 +5,17 @@ import org.junit.Test
import org.junit.Assert.*
class ExampleUnitTest {
private val articleId1 = ArticleId(2021u, 1u, 1u, "hello-world")
private val articleId2 = ArticleId(2000u, 6u, 24u, "123")
private val articleId3 = ArticleId(3000u, 12u, 6u, "0foo-1-2")
private val articleId1 = ArticleId(2021, 1, 1, "hello-world")
private val articleId2 = ArticleId(2000, 6, 24, "123")
private val articleId3 = ArticleId(3000, 12, 6, "0foo-1-2")
@Test
fun articleIdFromString() {
val articleId = ArticleId.fromString("2021-01-01-hello-world")
assertEquals(2021u, articleId.year)
assertEquals(1u, articleId.month)
assertEquals(1u, articleId.day)
assertEquals(2021, articleId.year)
assertEquals(1, articleId.month)
assertEquals(1, articleId.day)
assertEquals("hello-world", articleId.slug)
}