@@ -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\n World\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