Skip to content

Commit f3655cb

Browse files
committed
Add tests for literal types
1 parent 56c4d85 commit f3655cb

1 file changed

Lines changed: 120 additions & 0 deletions

File tree

jacodb-ets/src/test/kotlin/org/jacodb/ets/test/EtsFromJsonTest.kt

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,126 @@ class EtsFromJsonTest {
428428
assertEquals(PrimitiveLiteralDto.StringLiteral("hello"), typeDto.literal)
429429
}
430430

431+
@Test
432+
fun testLoadNumberLiteralTypeFromJson() {
433+
// TS: `let x: 42 = 42;`
434+
val jsonString = """
435+
{
436+
"_": "LiteralType",
437+
"literal": 42
438+
}
439+
""".trimIndent()
440+
val typeDto = Json.decodeFromString<TypeDto>(jsonString)
441+
logger.info { "typeDto = $typeDto" }
442+
assertIs<LiteralTypeDto>(typeDto)
443+
assertEquals(PrimitiveLiteralDto.NumberLiteral(42.0), typeDto.literal)
444+
}
445+
446+
@Test
447+
fun testLoadFloatLiteralTypeFromJson() {
448+
// TS: `let x: 3.14 = 3.14;`
449+
val jsonString = """
450+
{
451+
"_": "LiteralType",
452+
"literal": 3.14
453+
}
454+
""".trimIndent()
455+
val typeDto = Json.decodeFromString<TypeDto>(jsonString)
456+
logger.info { "typeDto = $typeDto" }
457+
assertIs<LiteralTypeDto>(typeDto)
458+
assertEquals(PrimitiveLiteralDto.NumberLiteral(3.14), typeDto.literal)
459+
}
460+
461+
@Test
462+
fun testLoadNegativeNumberLiteralTypeFromJson() {
463+
// TS: `let x: -5 = -5;`
464+
val jsonString = """
465+
{
466+
"_": "LiteralType",
467+
"literal": -5
468+
}
469+
""".trimIndent()
470+
val typeDto = Json.decodeFromString<TypeDto>(jsonString)
471+
logger.info { "typeDto = $typeDto" }
472+
assertIs<LiteralTypeDto>(typeDto)
473+
assertEquals(PrimitiveLiteralDto.NumberLiteral(-5.0), typeDto.literal)
474+
}
475+
476+
@Test
477+
fun testLoadBooleanTrueLiteralTypeFromJson() {
478+
// TS: `let x: true = true;`
479+
val jsonString = """
480+
{
481+
"_": "LiteralType",
482+
"literal": true
483+
}
484+
""".trimIndent()
485+
val typeDto = Json.decodeFromString<TypeDto>(jsonString)
486+
logger.info { "typeDto = $typeDto" }
487+
assertIs<LiteralTypeDto>(typeDto)
488+
assertEquals(PrimitiveLiteralDto.BooleanLiteral(true), typeDto.literal)
489+
}
490+
491+
@Test
492+
fun testLoadBooleanFalseLiteralTypeFromJson() {
493+
// TS: `let x: false = false;`
494+
val jsonString = """
495+
{
496+
"_": "LiteralType",
497+
"literal": false
498+
}
499+
""".trimIndent()
500+
val typeDto = Json.decodeFromString<TypeDto>(jsonString)
501+
logger.info { "typeDto = $typeDto" }
502+
assertIs<LiteralTypeDto>(typeDto)
503+
assertEquals(PrimitiveLiteralDto.BooleanLiteral(false), typeDto.literal)
504+
}
505+
506+
@Test
507+
fun testLoadEmptyStringLiteralTypeFromJson() {
508+
// TS: `let x: "" = "";`
509+
val jsonString = """
510+
{
511+
"_": "LiteralType",
512+
"literal": ""
513+
}
514+
""".trimIndent()
515+
val typeDto = Json.decodeFromString<TypeDto>(jsonString)
516+
logger.info { "typeDto = $typeDto" }
517+
assertIs<LiteralTypeDto>(typeDto)
518+
assertEquals(PrimitiveLiteralDto.StringLiteral(""), typeDto.literal)
519+
}
520+
521+
@Test
522+
fun testLoadStringLiteralWithSpecialCharactersFromJson() {
523+
// TS: `let x: "Hello\nWorld\t!" = "Hello\nWorld\t!";`
524+
val jsonString = """
525+
{
526+
"_": "LiteralType",
527+
"literal": "Hello\nWorld\t!"
528+
}
529+
""".trimIndent()
530+
val typeDto = Json.decodeFromString<TypeDto>(jsonString)
531+
logger.info { "typeDto = $typeDto" }
532+
assertIs<LiteralTypeDto>(typeDto)
533+
assertEquals(PrimitiveLiteralDto.StringLiteral("Hello\nWorld\t!"), typeDto.literal)
534+
}
535+
536+
@Test
537+
fun testLoadZeroLiteralTypeFromJson() {
538+
// TS: `let x: 0 = 0;`
539+
val jsonString = """
540+
{
541+
"_": "LiteralType",
542+
"literal": 0
543+
}
544+
""".trimIndent()
545+
val typeDto = Json.decodeFromString<TypeDto>(jsonString)
546+
logger.info { "typeDto = $typeDto" }
547+
assertIs<LiteralTypeDto>(typeDto)
548+
assertEquals(PrimitiveLiteralDto.NumberLiteral(0.0), typeDto.literal)
549+
}
550+
431551
@Test
432552
fun testLoadRawTypeFromJson() {
433553
val jsonString = """

0 commit comments

Comments
 (0)