Added tests for deprecation warnings and fixed the argument order for the warnings.

This commit is contained in:
Alex Gaynor 2012-07-24 07:01:57 -07:00
parent ae4125ffce
commit 38ce709fe4
2 changed files with 24 additions and 4 deletions

View File

@ -196,14 +196,18 @@ class SortedDict(dict):
# This, and insert() are deprecated because they cannot be implemented # This, and insert() are deprecated because they cannot be implemented
# using collections.OrderedDict (Python 2.7 and up), which we'll # using collections.OrderedDict (Python 2.7 and up), which we'll
# eventually switch to # eventually switch to
warnings.warn(PendingDeprecationWarning, warnings.warn(
"SortedDict.value_for_index is deprecated", stacklevel=2) "SortedDict.value_for_index is deprecated", PendingDeprecationWarning,
stacklevel=2
)
return self[self.keyOrder[index]] return self[self.keyOrder[index]]
def insert(self, index, key, value): def insert(self, index, key, value):
"""Inserts the key, value pair before the item with the given index.""" """Inserts the key, value pair before the item with the given index."""
warnings.warn(PendingDeprecationWarning, warnings.warn(
"SortedDict.insert is deprecated", stacklevel=2) "SortedDict.insert is deprecated", PendingDeprecationWarning,
stacklevel=2
)
if key in self.keyOrder: if key in self.keyOrder:
n = self.keyOrder.index(key) n = self.keyOrder.index(key)
del self.keyOrder[n] del self.keyOrder[n]

View File

@ -4,6 +4,7 @@ Tests for stuff in django.utils.datastructures.
import copy import copy
import pickle import pickle
import warnings
from django.test import SimpleTestCase from django.test import SimpleTestCase
from django.utils.datastructures import (DictWrapper, ImmutableList, from django.utils.datastructures import (DictWrapper, ImmutableList,
@ -122,6 +123,21 @@ class SortedDictTests(SimpleTestCase):
self.assertEqual(self.d1, {}) self.assertEqual(self.d1, {})
self.assertEqual(self.d1.keyOrder, []) self.assertEqual(self.d1.keyOrder, [])
def test_insert(self):
d = SortedDict()
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always")
d.insert(0, "hello", "world")
assert w[0].category is PendingDeprecationWarning
def test_value_for_index(self):
d = SortedDict({"a": 3})
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always")
self.assertEqual(d.value_for_index(0), 3)
assert w[0].category is PendingDeprecationWarning
class MergeDictTests(SimpleTestCase): class MergeDictTests(SimpleTestCase):
def test_simple_mergedict(self): def test_simple_mergedict(self):