Skip to content

Commit c8c6506

Browse files
Claudeclaude
andcommitted
fix: resolve all compiler warnings in CI build
- Replace deprecated compose.foundation/material3/materialIconsExtended with version catalog entries (libs.compose.*) - Add @OptIn for ExperimentalWasmDsl in app/web and ExperimentalKotlinGradlePluginApi in tools/mdst - Remove unnecessary elvis operators on non-null UnauthorizedException.message - Remove unnecessary !! on non-null exception messages in DesfireProtocolTest - Remove redundant type checks (assertTrue(x is T)) where compiler already knows the type from generic return types - Remove unnecessary casts after smart casts from assertTrue contracts - Remove unnecessary safe calls on non-null receivers - Clean up unused imports via ktlintFormat Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent ef85696 commit c8c6506

File tree

15 files changed

+18
-67
lines changed

15 files changed

+18
-67
lines changed

app/src/commonTest/kotlin/com/codebutler/farebot/test/ClipperTransitTest.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import com.codebutler.farebot.test.CardTestHelper.standardFile
3333
import com.codebutler.farebot.transit.TransitCurrency
3434
import com.codebutler.farebot.transit.Trip
3535
import com.codebutler.farebot.transit.clipper.ClipperTransitFactory
36-
import com.codebutler.farebot.transit.clipper.ClipperTransitInfo
3736
import com.codebutler.farebot.transit.clipper.ClipperTrip
3837
import kotlinx.coroutines.test.runTest
3938
import kotlin.math.abs
@@ -204,7 +203,7 @@ class ClipperTransitTest {
204203
.agency(0x04)
205204
.fare(350)
206205
.build()
207-
val fareStr = trip.fare?.formatCurrencyString() ?: ""
206+
val fareStr = trip.fare.formatCurrencyString()
208207
// Should format as USD
209208
assertTrue(
210209
fareStr.contains("3.50") || fareStr.contains("3,50"),
@@ -239,7 +238,6 @@ class ClipperTransitTest {
239238
assertEquals("572691763", identity.serialNumber)
240239

241240
val info = factory.parseInfo(card)
242-
assertTrue(info is ClipperTransitInfo, "TransitData must be instance of ClipperTransitInfo")
243241

244242
assertEquals("572691763", info.serialNumber)
245243
assertEquals("Clipper", info.cardName.resolveAsync())

app/src/commonTest/kotlin/com/codebutler/farebot/test/CompassTransitTest.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,6 @@ class CompassTransitTest {
8383

8484
// Test transit info parsing
8585
val info = factory.parseInfo(card)
86-
assertNotNull(info, "Transit info should not be null")
87-
assertTrue(info is CompassUltralightTransitInfo, "Info should be CompassUltralightTransitInfo")
8886
assertEquals(cardData[0], info.serialNumber, "Serial number should match")
8987

9088
// Test identity parsing

app/src/commonTest/kotlin/com/codebutler/farebot/test/FlipperIntegrationTest.kt

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,8 @@ import com.codebutler.farebot.shared.serialize.FlipperNfcParser
2828
import com.codebutler.farebot.transit.TransitCurrency
2929
import com.codebutler.farebot.transit.Trip
3030
import com.codebutler.farebot.transit.clipper.ClipperTransitFactory
31-
import com.codebutler.farebot.transit.clipper.ClipperTransitInfo
3231
import com.codebutler.farebot.transit.orca.OrcaTransitFactory
33-
import com.codebutler.farebot.transit.orca.OrcaTransitInfo
3432
import com.codebutler.farebot.transit.suica.SuicaTransitFactory
35-
import com.codebutler.farebot.transit.suica.SuicaTransitInfo
3633
import kotlinx.coroutines.test.runTest
3734
import kotlin.test.Test
3835
import kotlin.test.assertEquals
@@ -74,8 +71,6 @@ class FlipperIntegrationTest {
7471
assertEquals("10043012", identity.serialNumber)
7572

7673
val info = factory.parseInfo(card)
77-
assertNotNull(info, "Failed to parse ORCA transit info")
78-
assertTrue(info is OrcaTransitInfo)
7974

8075
// Balance: $26.25 USD
8176
val balances = info.balances
@@ -111,8 +106,6 @@ class FlipperIntegrationTest {
111106
assertEquals("1205019883", identity.serialNumber)
112107

113108
val info = factory.parseInfo(card)
114-
assertNotNull(info, "Failed to parse Clipper transit info")
115-
assertTrue(info is ClipperTransitInfo)
116109

117110
// Balance: $2.25 USD
118111
val balances = info.balances
@@ -288,8 +281,6 @@ class FlipperIntegrationTest {
288281
assertNull(identity.serialNumber)
289282

290283
val info = factory.parseInfo(card)
291-
assertNotNull(info, "Failed to parse Suica transit info")
292-
assertTrue(info is SuicaTransitInfo)
293284

294285
// Balance: 870 JPY
295286
val balances = info.balances
@@ -527,9 +518,6 @@ class FlipperIntegrationTest {
527518
assertNull(identity.serialNumber)
528519

529520
val info = factory.parseInfo(card)
530-
assertNotNull(info, "Failed to parse PASMO transit info")
531-
assertTrue(info is SuicaTransitInfo)
532-
533521
// Balance: 500 JPY
534522
val balances = info.balances
535523
assertNotNull(balances)
@@ -674,8 +662,6 @@ class FlipperIntegrationTest {
674662
assertNull(identity.serialNumber)
675663

676664
val info = factory.parseInfo(card)
677-
assertNotNull(info, "Failed to parse ICOCA transit info")
678-
assertTrue(info is SuicaTransitInfo)
679665

680666
// Balance: 827 JPY
681667
val balances = info.balances

app/src/commonTest/kotlin/com/codebutler/farebot/test/MetrodroidDumpIntegrationTest.kt

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,10 @@ import com.codebutler.farebot.card.classic.ClassicCard
2626
import com.codebutler.farebot.card.classic.raw.RawClassicBlock
2727
import com.codebutler.farebot.card.classic.raw.RawClassicCard
2828
import com.codebutler.farebot.card.classic.raw.RawClassicSector
29-
import com.codebutler.farebot.card.ultralight.UltralightCard
3029
import com.codebutler.farebot.card.ultralight.UltralightPage
3130
import com.codebutler.farebot.card.ultralight.raw.RawUltralightCard
3231
import com.codebutler.farebot.transit.TransitCurrency
3332
import com.codebutler.farebot.transit.troika.TroikaTransitFactory
34-
import com.codebutler.farebot.transit.troika.TroikaTransitInfo
3533
import com.codebutler.farebot.transit.ventra.VentraUltralightTransitInfo
3634
import kotlinx.coroutines.test.runTest
3735
import kotlin.test.Test
@@ -93,7 +91,6 @@ class MetrodroidDumpIntegrationTest {
9391
)
9492

9593
val card = rawCard.parse()
96-
assertTrue(card is UltralightCard, "Expected UltralightCard")
9794

9895
val factory = VentraUltralightTransitInfo.FACTORY
9996
assertTrue(factory.check(card), "Ventra factory should recognize this card")
@@ -103,8 +100,6 @@ class MetrodroidDumpIntegrationTest {
103100
assertNotNull(identity.serialNumber, "Should have a serial number")
104101

105102
val info = factory.parseInfo(card)
106-
assertNotNull(info, "Failed to parse Ventra transit info")
107-
assertTrue(info is VentraUltralightTransitInfo)
108103

109104
// Balance: $8.44 USD (844 cents)
110105
val balances = info.balances
@@ -141,8 +136,6 @@ class MetrodroidDumpIntegrationTest {
141136
assertNotNull(identity.serialNumber, "Should have serial number")
142137

143138
val info = factory.parseInfo(card)
144-
assertNotNull(info, "Failed to parse Troika transit info")
145-
assertTrue(info is TroikaTransitInfo)
146139

147140
// Balance: 0.00 RUB (0 kopeks)
148141
val balances = info.balances
@@ -174,8 +167,6 @@ class MetrodroidDumpIntegrationTest {
174167
assertNotNull(identity.serialNumber, "Should have serial number")
175168

176169
val info = factory.parseInfo(card)
177-
assertNotNull(info, "Failed to parse Troika transit info")
178-
assertTrue(info is TroikaTransitInfo)
179170

180171
// Balance: 50.00 RUB (5000 kopeks)
181172
val balances = info.balances

app/src/commonTest/kotlin/com/codebutler/farebot/test/MykiTransitTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ class MykiTransitTest {
7373

7474
// Test TransitData
7575
val info = factory.parseInfo(card)
76-
assertTrue(info is MykiTransitInfo, "TransitData must be instance of MykiTransitInfo")
7776
assertEquals("308425123456780", info.serialNumber)
7877
}
7978
}

app/src/commonTest/kotlin/com/codebutler/farebot/test/NextfareTransitTest.kt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,9 @@ import com.codebutler.farebot.card.classic.ClassicCard
2626
import com.codebutler.farebot.card.classic.DataClassicSector
2727
import com.codebutler.farebot.test.CardTestHelper.hexToBytes
2828
import com.codebutler.farebot.transit.laxtap.LaxTapTransitFactory
29-
import com.codebutler.farebot.transit.laxtap.LaxTapTransitInfo
3029
import com.codebutler.farebot.transit.mspgoto.MspGotoTransitFactory
31-
import com.codebutler.farebot.transit.mspgoto.MspGotoTransitInfo
3230
import com.codebutler.farebot.transit.nextfare.NextfareTransitInfo
3331
import com.codebutler.farebot.transit.seqgo.SeqGoTransitFactory
34-
import com.codebutler.farebot.transit.seqgo.SeqGoTransitInfo
3532
import kotlinx.datetime.TimeZone
3633
import kotlin.test.Test
3734
import kotlin.test.assertEquals
@@ -175,7 +172,6 @@ class NextfareTransitTest {
175172
val seqGoFactory = SeqGoTransitFactory()
176173
assertTrue(seqGoFactory.check(c1), "Card is seqgo")
177174
val d1 = seqGoFactory.parseInfo(c1)
178-
assertTrue(d1 is SeqGoTransitInfo, "Card is SeqGoTransitInfo")
179175
assertEquals("0160 0012 3456 7893", d1.serialNumber)
180176
val balances1 = d1.balances
181177
assertNotNull(balances1)
@@ -190,7 +186,6 @@ class NextfareTransitTest {
190186
)
191187
assertTrue(seqGoFactory.check(c2), "Card is seqgo")
192188
val d2 = seqGoFactory.parseInfo(c2)
193-
assertTrue(d2 is SeqGoTransitInfo, "Card is SeqGoTransitInfo")
194189
assertEquals("0160 0098 7654 3213", d2.serialNumber)
195190
val balances2 = d2.balances
196191
assertNotNull(balances2)
@@ -211,7 +206,6 @@ class NextfareTransitTest {
211206
val laxTapFactory = LaxTapTransitFactory()
212207
assertTrue(laxTapFactory.check(c), "Card is laxtap")
213208
val d = laxTapFactory.parseInfo(c)
214-
assertTrue(d is LaxTapTransitInfo, "Card is LaxTapTransitInfo")
215209
assertEquals("0160 0323 4663 8769", d.serialNumber)
216210
val balances = d.balances
217211
assertNotNull(balances)
@@ -231,7 +225,6 @@ class NextfareTransitTest {
231225
val mspGotoFactory = MspGotoTransitFactory()
232226
assertTrue(mspGotoFactory.check(c), "Card is mspgoto")
233227
val d = mspGotoFactory.parseInfo(c)
234-
assertTrue(d is MspGotoTransitInfo, "Card is MspGotoTransitInfo")
235228
assertEquals("0160 0112 3581 3212", d.serialNumber)
236229
val balances = d.balances
237230
assertNotNull(balances)

app/src/commonTest/kotlin/com/codebutler/farebot/test/OctopusTransitTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ class OctopusTransitTest {
9191

9292
// Test TransitData
9393
val info = factory.parseInfo(card)
94-
assertTrue(info is OctopusTransitInfo, "TransitData must be instance of OctopusTransitInfo")
9594

9695
assertNotNull(info.balances)
9796
assertTrue(info.balances!!.isNotEmpty())

app/src/commonTest/kotlin/com/codebutler/farebot/test/OpalTransitTest.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,6 @@ class OpalTransitTest {
151151

152152
// Test TransitInfo
153153
val info = factory.parseInfo(card)
154-
assertTrue(info is OpalTransitInfo, "TransitData must be instance of OpalTransitInfo")
155154

156155
assertEquals("3085 2200 1234 5670", info.serialNumber)
157156
assertEquals(TransitCurrency.AUD(336), info.balances?.first()?.balance)
@@ -191,7 +190,7 @@ class OpalTransitTest {
191190
// 2018-03-31 09:00 AEDT (UTC+11)
192191
// = 2018-03-30 22:00 UTC
193192
var card = createOpalCard(hexToBytes("85D25E07230520A70044DA380419FFFF"))
194-
var info = factory.parseInfo(card) as OpalTransitInfo
193+
var info = factory.parseInfo(card)
195194
var expectedTime = Instant.parse("2018-03-30T22:00:00Z")
196195
assertEquals(
197196
expectedTime,
@@ -204,7 +203,7 @@ class OpalTransitTest {
204203
// 2018-04-01 09:00 AEST (UTC+10)
205204
// = 2018-03-31 23:00 UTC
206205
card = createOpalCard(hexToBytes("85D25E07430520A70048DA380419FFFF"))
207-
info = factory.parseInfo(card) as OpalTransitInfo
206+
info = factory.parseInfo(card)
208207
expectedTime = Instant.parse("2018-03-31T23:00:00Z")
209208
assertEquals(
210209
expectedTime,

app/src/commonTest/kotlin/com/codebutler/farebot/test/OrcaTransitTest.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import com.codebutler.farebot.test.CardTestHelper.standardFile
2929
import com.codebutler.farebot.transit.TransitCurrency
3030
import com.codebutler.farebot.transit.Trip
3131
import com.codebutler.farebot.transit.orca.OrcaTransitFactory
32-
import com.codebutler.farebot.transit.orca.OrcaTransitInfo
3332
import kotlinx.coroutines.test.runTest
3433
import kotlin.math.abs
3534
import kotlin.test.Test
@@ -94,7 +93,6 @@ class OrcaTransitTest {
9493

9594
// Test TransitInfo
9695
val info = factory.parseInfo(card)
97-
assertTrue(info is OrcaTransitInfo, "TransitData must be instance of OrcaTransitInfo")
9896
assertEquals("12030625", info.serialNumber)
9997
assertEquals("ORCA", info.cardName.resolveAsync())
10098
assertEquals(TransitCurrency.USD(23432), info.balances?.firstOrNull()?.balance)

app/src/commonTest/kotlin/com/codebutler/farebot/test/SampleDumpIntegrationTest.kt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ import com.codebutler.farebot.transit.bilheteunico.BilheteUnicoSPTransitFactory
3737
import com.codebutler.farebot.transit.bilheteunico.BilheteUnicoSPTransitInfo
3838
import com.codebutler.farebot.transit.calypso.mobib.MobibTransitInfo
3939
import com.codebutler.farebot.transit.easycard.EasyCardTransitFactory
40-
import com.codebutler.farebot.transit.easycard.EasyCardTransitInfo
4140
import com.codebutler.farebot.transit.ezlink.EZLinkTransitFactory
4241
import com.codebutler.farebot.transit.ezlink.EZLinkTransitInfo
4342
import com.codebutler.farebot.transit.hsl.HSLTransitFactory
@@ -58,7 +57,6 @@ import com.codebutler.farebot.transit.seqgo.SeqGoTransitFactory
5857
import com.codebutler.farebot.transit.seqgo.SeqGoTransitInfo
5958
import com.codebutler.farebot.transit.serialonly.HoloTransitFactory
6059
import com.codebutler.farebot.transit.serialonly.HoloTransitInfo
61-
import com.codebutler.farebot.transit.serialonly.SerialOnlyTransitInfo
6260
import com.codebutler.farebot.transit.serialonly.TrimetHopTransitFactory
6361
import com.codebutler.farebot.transit.serialonly.TrimetHopTransitInfo
6462
import com.codebutler.farebot.transit.tmoney.TMoneyTransitFactory
@@ -320,7 +318,6 @@ class SampleDumpIntegrationTest : CardDumpTest() {
320318
assertNotNull(identity.serialNumber)
321319

322320
// Serial-only card: no balance, no trips, but has emptyStateMessage
323-
assertTrue(info is SerialOnlyTransitInfo)
324321
assertNotNull(info.emptyStateMessage, "Serial-only card should have an emptyStateMessage")
325322
assertNull(info.trips, "Serial-only card should have null trips")
326323
assertTrue(info.balances.isNullOrEmpty(), "Serial-only card should have no balances")
@@ -377,7 +374,7 @@ class SampleDumpIntegrationTest : CardDumpTest() {
377374
val result = importer.importMfcDump(bytes)
378375
assertTrue(result is ImportResult.Success, "Failed to import MFC dump: $result")
379376

380-
val rawCard = (result as ImportResult.Success).cards.first()
377+
val rawCard = result.cards.first()
381378
val card = rawCard.parse() as ClassicCard
382379

383380
val factory = EasyCardTransitFactory()
@@ -387,8 +384,6 @@ class SampleDumpIntegrationTest : CardDumpTest() {
387384
assertNotNull(identity.name)
388385

389386
val info = factory.parseInfo(card)
390-
assertNotNull(info, "Failed to parse EasyCard transit info")
391-
assertTrue(info is EasyCardTransitInfo)
392387

393388
// Balance: 245 TWD
394389
val balances = info.balances
@@ -518,7 +513,6 @@ class SampleDumpIntegrationTest : CardDumpTest() {
518513
assertEquals("308425123456780", identity.serialNumber)
519514

520515
// Serial-only card: has emptyStateMessage, no trips
521-
assertTrue(info is SerialOnlyTransitInfo)
522516
assertNotNull(info.emptyStateMessage, "Serial-only card should have an emptyStateMessage")
523517
assertNull(info.trips, "Serial-only card should have null trips")
524518
}
@@ -567,11 +561,9 @@ class SampleDumpIntegrationTest : CardDumpTest() {
567561
assertEquals("Hop Fastpass", identity.name.resolveAsync())
568562
assertEquals("01-001-12345678-RA", identity.serialNumber)
569563

570-
assertTrue(info is TrimetHopTransitInfo)
571564
assertEquals("01-001-12345678-RA", info.serialNumber)
572565

573566
// Serial-only card: has emptyStateMessage, no trips
574-
assertTrue(info is SerialOnlyTransitInfo)
575567
assertNotNull(info.emptyStateMessage, "Serial-only card should have an emptyStateMessage")
576568
assertNull(info.trips, "Serial-only card should have null trips")
577569
}

0 commit comments

Comments
 (0)