diff --git a/framework/test/sorting_test.py b/framework/test/sorting_test.py
index 4251308..44aa6f7 100644
--- a/framework/test/sorting_test.py
+++ b/framework/test/sorting_test.py
@@ -1,7 +1,6 @@
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
+# Copyright 2016 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
 
 """Unit tests for sorting.py functions."""
 from __future__ import print_function
@@ -19,7 +18,7 @@
 
 from framework import sorting
 from framework import framework_views
-from proto import tracker_pb2
+from mrproto import tracker_pb2
 from testing import fake
 from testing import testing_helpers
 from tracker import tracker_bizobj
@@ -45,18 +44,18 @@
     """The point of DescendingValue is to reverse the sort order."""
     anti_a = sorting.DescendingValue.MakeDescendingValue('a')
     anti_b = sorting.DescendingValue.MakeDescendingValue('b')
-    self.assertTrue(anti_a > anti_b)
+    self.assertGreater(anti_a, anti_b)
 
   def testMaybeMakeDescending(self):
     """It returns an accessor that makes DescendingValue iff arg is True."""
     asc_accessor = sorting._MaybeMakeDescending(lambda issue: 'a', False)
     asc_value = asc_accessor('fake issue')
-    self.assertTrue(asc_value is 'a')
+    self.assertEqual(asc_value, 'a')
 
     desc_accessor = sorting._MaybeMakeDescending(lambda issue: 'a', True)
     print(desc_accessor)
     desc_value = desc_accessor('fake issue')
-    self.assertTrue(isinstance(desc_value, sorting.DescendingValue))
+    self.assertIsInstance(desc_value, sorting.DescendingValue)
 
 
 class SortingTest(unittest.TestCase):
@@ -161,9 +160,9 @@
     accessor = sorting._IndexListAccessor(well_known_values, base_accessor)
 
     # Case 1: accessor generates no values.
-    self.assertEqual(sorting.MAX_STRING, accessor(art))
+    self.assertEqual([sorting.MAX_STRING], accessor(art))
     neg_accessor = MakeDescending(accessor)
-    self.assertEqual(sorting.MAX_STRING, neg_accessor(art))
+    self.assertEqual([sorting.MAX_STRING], neg_accessor(art))
 
     # Case 2: A single well-known value
     art.component_ids = [33]
@@ -186,9 +185,9 @@
     accessor = sorting._IndexListAccessor(well_known_values, base_accessor)
 
     # Case 1: accessor generates no values.
-    self.assertEqual(sorting.MAX_STRING, accessor(art))
+    self.assertEqual([sorting.MAX_STRING], accessor(art))
     neg_accessor = MakeDescending(accessor)
-    self.assertEqual(sorting.MAX_STRING, neg_accessor(art))
+    self.assertEqual([sorting.MAX_STRING], neg_accessor(art))
 
     # Case 2: A single oddball value
     art.component_ids = [33]
@@ -212,9 +211,9 @@
 
     # Case 1: accessor generates no values.
     accessor = sorting._IndexOrLexicalList(well_known_values, [], 'pri', {})
-    self.assertEqual(sorting.MAX_STRING, accessor(art))
+    self.assertEqual([sorting.MAX_STRING], accessor(art))
     neg_accessor = MakeDescending(accessor)
-    self.assertEqual(sorting.MAX_STRING, neg_accessor(art))
+    self.assertEqual([sorting.MAX_STRING], neg_accessor(art))
 
     # Case 2: A single well-known value
     art.labels = ['Pri-Med']
