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