Пример #1
0
    def test_list(self):
        lists = [("()", ()),
                 ("(1)", (1,)),
                 ("(\"foo\" 1 foo :bar)", ("foo", 1, Symbol("foo"), Keyword("bar"))),
                 ("(((foo) bar)\n\t baz)",
                  (((Symbol("foo"),), Symbol("bar")), Symbol("baz")))]

        for edn_str, expected in lists:
            self.assertEqual(edn(edn_str).list(), expected)
Пример #2
0
    def test_vector(self):
        vectors = [("[]", Vector()),
                   ("[1]", Vector((1,))),
                   ("[foo]", Vector((Symbol("foo"),))),
                   ("[[foo] [bar]]", Vector((Vector((Symbol("foo"),)),
                                             Vector((Symbol("bar"),)))))]

        for edn_str, expected in vectors:
            self.assertEqual(edn(edn_str).vector(), expected)
Пример #3
0
 def test_tagged_value(self):
     self.assertEqual(
         '#foo bar',
         dumps(TaggedValue(Symbol('foo'), Symbol('bar'))))
Пример #4
0
 def test_symbol(self):
     self.assertEqual(edn("foo").symbol(), Symbol("foo"))
     self.assertEqual(edn(".foo").symbol(), Symbol(".foo"))
     self.assertEqual(edn("/").symbol(), Symbol("/"))
     self.assertEqual(edn("foo/bar").symbol(), Symbol("bar", "foo"))
Пример #5
0
 def test_tuple(self):
     self.assertEqual("()", dumps(()))
     self.assertEqual("(() ())", dumps(((), ())))
     self.assertEqual("(a)", dumps((Symbol('a'),)))
Пример #6
0
 def test_list(self):
     self.assertEqual("()", dumps([]))
     self.assertEqual("(() ())", dumps([[], []]))
     self.assertEqual("(a)", dumps([Symbol('a')]))
Пример #7
0
 def test_custom_tag_doesnt_mutate(self):
     foo = Symbol('foo')
     text = '#foo [1 2]'
     loads(text, {foo: lambda x: list(reversed(x))})
     parsed = loads(text)
     self.assertEqual(TaggedValue(foo, Vector([1, 2])), parsed)
Пример #8
0
 def test_symbol(self):
     self.assertEqual("foo", dumps(Symbol("foo")))
     self.assertEqual(".foo", dumps(Symbol(".foo")))
     self.assertEqual("/", dumps(Symbol("/")))
     self.assertEqual("foo/bar", dumps(Symbol("bar", "foo")))
Пример #9
0
 def test_custom_tag(self):
     text = '#foo [1 2]'
     parsed = loads(text, {Symbol('foo'): lambda x: list(reversed(x))})
     self.assertEqual([2, 1], parsed)
Пример #10
0
 def test_custom(self):
     result = make_tagged_value(
         {Symbol('foo'): lambda x: list(reversed(x))},
         Symbol('foo'), 'bar')
     self.assertEqual(['r', 'a', 'b'], result)
Пример #11
0
 def test_default(self):
     result = make_tagged_value({}, Symbol('foo'), 'bar')
     self.assertEqual(TaggedValue(Symbol('foo'), 'bar'), result)
Пример #12
0
 def test_comment(self):
     self.assertEqual(edn('; foo bar baz bax\nbar ; this is bar\n').edn(), Symbol('bar'))
Пример #13
0
 def test_tag(self):
     self.assertEqual(edn('#foo/bar baz').tag(),
                      TaggedValue(Symbol('bar', 'foo'), Symbol('baz')))