tcollections_to_string.nim 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. discard """
  2. exitcode: 0
  3. output: ""
  4. """
  5. import sets
  6. import tables
  7. import deques
  8. import lists
  9. import critbits
  10. # Tests for tuples
  11. doAssert $(1, 2, 3) == "(1, 2, 3)"
  12. doAssert $("1", "2", "3") == """("1", "2", "3")"""
  13. doAssert $('1', '2', '3') == """('1', '2', '3')"""
  14. # Tests for seqs
  15. doAssert $(@[1, 2, 3]) == "@[1, 2, 3]"
  16. doAssert $(@["1", "2", "3"]) == """@["1", "2", "3"]"""
  17. doAssert $(@['1', '2', '3']) == """@['1', '2', '3']"""
  18. # Tests for sets
  19. doAssert $(toSet([1])) == "{1}"
  20. doAssert $(toSet(["1"])) == """{"1"}"""
  21. doAssert $(toSet(['1'])) == """{'1'}"""
  22. doAssert $(toOrderedSet([1, 2, 3])) == "{1, 2, 3}"
  23. doAssert $(toOrderedSet(["1", "2", "3"])) == """{"1", "2", "3"}"""
  24. doAssert $(toOrderedSet(['1', '2', '3'])) == """{'1', '2', '3'}"""
  25. # Tests for tables
  26. doAssert $({1: "1", 2: "2"}.toTable) == """{1: "1", 2: "2"}"""
  27. doAssert $({"1": 1, "2": 2}.toTable) == """{"1": 1, "2": 2}"""
  28. # Tests for deques
  29. block:
  30. var d = initDeque[int]()
  31. d.addLast(1)
  32. doAssert $d == "[1]"
  33. block:
  34. var d = initDeque[string]()
  35. d.addLast("1")
  36. doAssert $d == """["1"]"""
  37. block:
  38. var d = initDeque[char]()
  39. d.addLast('1')
  40. doAssert $d == "['1']"
  41. # Tests for lists
  42. block:
  43. var l = initDoublyLinkedList[int]()
  44. l.append(1)
  45. l.append(2)
  46. l.append(3)
  47. doAssert $l == "[1, 2, 3]"
  48. block:
  49. var l = initDoublyLinkedList[string]()
  50. l.append("1")
  51. l.append("2")
  52. l.append("3")
  53. doAssert $l == """["1", "2", "3"]"""
  54. block:
  55. var l = initDoublyLinkedList[char]()
  56. l.append('1')
  57. l.append('2')
  58. l.append('3')
  59. doAssert $l == """['1', '2', '3']"""
  60. # Tests for critbits
  61. block:
  62. var t: CritBitTree[int]
  63. t["a"] = 1
  64. doAssert $t == """{"a": 1}"""
  65. block:
  66. var t: CritBitTree[string]
  67. t["a"] = "1"
  68. doAssert $t == """{"a": "1"}"""
  69. block:
  70. var t: CritBitTree[char]
  71. t["a"] = '1'
  72. doAssert $t == """{"a": '1'}"""
  73. # Test escaping behavior
  74. block:
  75. var s = ""
  76. s.addQuoted('\0')
  77. s.addQuoted('\31')
  78. s.addQuoted('\127')
  79. doAssert s == "'\\x00''\\x1F''\\x7F'"
  80. block:
  81. var s = ""
  82. s.addQuoted('\\')
  83. s.addQuoted('\'')
  84. s.addQuoted('\"')
  85. doAssert s == """'\\''\'''\"'"""
  86. block:
  87. var s = ""
  88. s.addQuoted("å")
  89. s.addQuoted("ä")
  90. s.addQuoted("ö")
  91. s.addEscapedChar('\xFF')
  92. doAssert s == """"å""ä""ö"\xFF"""
  93. # Test customized element representation
  94. type CustomString = object
  95. proc addQuoted(s: var string, x: CustomString) =
  96. s.add("<CustomString>")
  97. block:
  98. let s = @[CustomString()]
  99. doAssert $s == "@[<CustomString>]"