old_contents: #!/usr/bin/env python
  
  from tornado.httputil import url_concat
  import unittest
  
  
  class TestUrlConcat(unittest.TestCase):
  
      def test_url_concat_no_query_params(self):
          url = url_concat(
                  "https://localhost/path",
                  {'y':'y', 'z':'z'},
                  )
          self.assertEqual(url, "https://localhost/path?y=y&z=z")
  
      def test_url_concat_encode_args(self):
          url = url_concat(
                  "https://localhost/path",
                  {'y':'/y', 'z':'z'},
                  )
          self.assertEqual(url, "https://localhost/path?y=%2Fy&z=z")
  
      def test_url_concat_trailing_q(self):
          url = url_concat(
                  "https://localhost/path?",
                  {'y':'y', 'z':'z'},
                  )
          self.assertEqual(url, "https://localhost/path?y=y&z=z")
  
      def test_url_concat_q_with_no_trailing_amp(self):
          url = url_concat(
                  "https://localhost/path?x",
                  {'y':'y', 'z':'z'},
                  )
          self.assertEqual(url, "https://localhost/path?x&y=y&z=z")
  
      def test_url_concat_trailing_amp(self):
          url = url_concat(
                  "https://localhost/path?x&",
                  {'y':'y', 'z':'z'},
                  )
          self.assertEqual(url, "https://localhost/path?x&y=y&z=z")
  
      def test_url_concat_mult_params(self):
          url = url_concat(
                  "https://localhost/path?a=1&b=2",
                  {'y':'y', 'z':'z'},
                  )
          self.assertEqual(url, "https://localhost/path?a=1&b=2&y=y&z=z")
  
      def test_url_concat_no_params(self):
          url = url_concat(
              "https://localhost/path?r=1&t=2",
              {},
              )
          self.assertEqual(url, "https://localhost/path?r=1&t=2")
  
new_contents: #!/usr/bin/env python
  
  from tornado.httputil import url_concat
  import unittest
  
  
  class TestUrlConcat(unittest.TestCase):
  
      def test_url_concat_no_query_params(self):
          url = url_concat(
                  "https://localhost/path",
                  [('y','y'), ('z','z')],
                  )
          self.assertEqual(url, "https://localhost/path?y=y&z=z")
  
      def test_url_concat_encode_args(self):
          url = url_concat(
                  "https://localhost/path",
                  [('y','/y'), ('z','z')],
                  )
          self.assertEqual(url, "https://localhost/path?y=%2Fy&z=z")
  
      def test_url_concat_trailing_q(self):
          url = url_concat(
                  "https://localhost/path?",
                  [('y','y'), ('z','z')],
                  )
          self.assertEqual(url, "https://localhost/path?y=y&z=z")
  
      def test_url_concat_q_with_no_trailing_amp(self):
          url = url_concat(
                  "https://localhost/path?x",
                  [('y','y'), ('z','z')],
                  )
          self.assertEqual(url, "https://localhost/path?x&y=y&z=z")
  
      def test_url_concat_trailing_amp(self):
          url = url_concat(
                  "https://localhost/path?x&",
                  [('y','y'), ('z','z')],
                  )
          self.assertEqual(url, "https://localhost/path?x&y=y&z=z")
  
      def test_url_concat_mult_params(self):
          url = url_concat(
                  "https://localhost/path?a=1&b=2",
                  [('y','y'), ('z','z')],
                  )
          self.assertEqual(url, "https://localhost/path?a=1&b=2&y=y&z=z")
  
      def test_url_concat_no_params(self):
          url = url_concat(
              "https://localhost/path?r=1&t=2",
              [],
              )
          self.assertEqual(url, "https://localhost/path?r=1&t=2")
  
subject: Use lists of tuples instead of dicts since this test cares about order