Skip to content

Commit cf7976d

Browse files
dstibbedevcrocod
authored andcommitted
Added tests (#158)
1 parent f6c8843 commit cf7976d

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/TypesTest.kt

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,52 @@ class TypesTest {
158158
assertEquals("audio/wav", decoded.mimeType)
159159
}
160160

161+
@Test
162+
fun `should validate resource link content`() {
163+
val resourceLink = ResourceLink(
164+
mimeType = "application/pdf",
165+
description = "This pdf is meant to be a resource link test",
166+
name = "file01",
167+
size = 76859L,
168+
title = "This is a pdf",
169+
uri = "file:///path/to/my_file.pdf",
170+
)
171+
172+
with(resourceLink) {
173+
assertEquals("application/pdf", mimeType)
174+
assertEquals("This pdf is meant to be a resource link test", description)
175+
assertEquals("file01", name)
176+
assertEquals(76859L, size)
177+
assertEquals("This is a pdf", title)
178+
assertEquals("file:///path/to/my_file.pdf", uri)
179+
}
180+
}
181+
182+
@Test
183+
fun `should serialize and deserialize resource link correctly`() {
184+
val resourceLink = ResourceLink(
185+
mimeType = "application/pdf",
186+
description = "This pdf is meant to be a resource link test",
187+
name = "file01",
188+
size = 76859L,
189+
title = "This is a pdf",
190+
uri = "file:///path/to/my_file.pdf",
191+
)
192+
193+
val json = McpJson.encodeToString<ContentBlock>(resourceLink)
194+
val decoded = McpJson.decodeFromString<ContentBlock>(json)
195+
196+
assertIs<ResourceLink>(decoded)
197+
with(resourceLink) {
198+
assertEquals("application/pdf", mimeType)
199+
assertEquals("This pdf is meant to be a resource link test", description)
200+
assertEquals("file01", name)
201+
assertEquals(76859L, size)
202+
assertEquals("This is a pdf", title)
203+
assertEquals("file:///path/to/my_file.pdf", uri)
204+
}
205+
}
206+
161207
@Test
162208
fun `should validate embedded resource content`() {
163209
val resource = TextResourceContents(

kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/TypesUtilTest.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,28 @@ class TypesUtilTest {
147147
assertEquals("audio/mp3", decoded.mimeType)
148148
}
149149

150+
@Test
151+
fun `should deserialize ResourceLink polymorphically`() {
152+
val json = """
153+
{
154+
"type": "resource_link",
155+
"uri": "file:///project/src/main.rs",
156+
"name": "main.rs",
157+
"description": "Primary application entry point",
158+
"mimeType": "text/x-rust"
159+
}
160+
""".trimIndent()
161+
162+
val decoded = McpJson.decodeFromString<ContentBlock>(json)
163+
164+
assertIs<ResourceLink>(decoded)
165+
assertEquals("resource_link", decoded.type)
166+
assertEquals("file:///project/src/main.rs", decoded.uri)
167+
assertEquals("main.rs", decoded.name)
168+
assertEquals("Primary application entry point", decoded.description)
169+
assertEquals("text/x-rust", decoded.mimeType)
170+
}
171+
150172
@Test
151173
fun `should deserialize EmbeddedResource polymorphically`() {
152174
val json =

0 commit comments

Comments
 (0)